OS2013. 1. 16. 15:33

프로세스의 연산

 

대부분의 프로세스들은 동시에 수행(병행 수행)될 수 있다. 프로세스들은 동적으로 생성(fork연산)되고 제거(exec연산)되어야 한다. 그러므로 운영체제는 프로세스 생성 및 종료를 위한 기법을 제공해야 한다. 여기서는 프로세스 생성기법인 forkexec연산에 대해서 이야기하고자 한다.

 

프로세스 생성

 

실행 중인 프로세스는 프로세스 생성 시스템 호출(fork)을 통해서 다수의 새로운 프로세스를 생성할 수 있다. 이때  새로운 프로세스를 생성하는 프로세스를 부모 프로세스 라고 부르고, 새로 생성된 프로세스는 자식 프로세스라고 한다. 새로 만들어진 프로세스는 다시 자식 프로세스를 생성할 수 있으며, 결과적으로 트리 구조를 만들게 된다.

 

부모 프로세스 : 새로운 프로세스를 생성하는 프로세스

자식 프로세스 : 부모 프로세스로부터 생성된 프로세스

 

대부분의 운영체제들은 여러 개의 프로세스를 식별하기 위해서 각각의 프로세스마다 프로세스 식별자(pid)를 부여한다. PID는 전형적으로 정수이다. 아래 그림처럼 각각의 프로세스는 자신만의 pid를 갖는 것을 볼 수 있다

 


 

< 전형적인 Solaris 시스템의 프로세스 트리 >

 

 

프로세스 생성 시 부모-자식 사이의  몇 가지 관계

 

1. 자원을 공유하는 세 가지 가능성

- 부모와 자식은 모든 자원을 공유한다.

- 자식은 부모 자원의 일부분을 공유한다.

- 자식은 운영체제로부터 직접 자원을 할당 받는다. (부모-자식 사이엔 어떤 자원도 공유하지 않는다)

 

프로세스가 어떤 작업을 하기 위해서는 자원(메모리, CPU, 파일, /출력 장치...)이 필요하다. 어떤 프로세스가 하위 프로세스를 생성할 때, 서브프로세스는 운영체제로부터 직접 자원을 얻거나, 부모 프로세스 자원의 일부를 사용할 수 있다.자식 프로세스가 부모 자원의 일부분만을 사용하도록 제한하면, 어떤 프로세스가 너무 많은 서브프로세스를 만들어 시스템이 과부하 되는 것을 방지할 수 있다.

 

2. 실행과 관련하여 두 가지 가능성

- 부모가 계속해서 자식과 병렬로 실행된다.

- 부모가 모든 자식 또는 일부 자식이 끝날 때까지 기다린다.

 

3. 주소 공간 측면에서 두 가지 가능성

- 자식 프로세스는 부모 프로세스의 복사본이다. (자식 프로세스는 부모와 똑같은 프로그램과 데이터를 가진다)

- 자식 프로세스가 자신에게 적재될 새로운 프로그램을 갖고 있다.

 

 

3번의 이해를 돕기 위해서 UNIX 시스템을 예로 설명을 해보자

UNIX에서 새로운 프로세스는 fork() 시스템 호출로 생성된다. 또한 기본적으로 프로세스가 새로 생성되면 그 프로세스는 부모 프로세스 주소 공간의 복사본으로 구성된다.(이 메커니즘은 부모 프로세스가 자식 프로세스와 쉽게 통신할 수 있게 한다.) 프로세스가 생성되고 나면, 부모 자식 두 개의 프로세스들은 fork() 연산 다음 명령어부터 실행을 계속하며, 부모의 fork()함수는 자식 프로세스의 pid를 리턴하고, 새로 생성된 자식 프로세스안의 fork()함수는 '0'이 리턴 된다. fork()명령어 후에 exec()시스템 호출로 다른 프로그램의 실행파일인 이진 파일을 메모리에 적재하고, 그 프로그램의 실행을 시작한다. 이때, exec() 시스템 호출을 포함하는 원래 프로그램의 메모리 이미지는 파괴된다. 이런 식으로 새 프로세스가 생성되면 그 프로세스의 주소공간을 부모의 복사본으로 넣을 수도, 새로운 프로그램으로 대체할 수도 있다.


 

프로세스 종료


프로세스 종료는 exit()시스템 호출로 요청된다. 이 시점에서, 프로세스는 자신의 부모 프로세스에게(wait()를 통해) 상태 값을 반환할 수 있다. 프로세스가 종료되면 해당 프로세스의 모든 자원이 운영체제로 반환된다. 프로세스는 다양한 이유로 인해 종료될 수 있지만 부모프로세스의 관점에서 종료를 시킨다고 했을 때, 자식이 할당된 자원을 초과사용하거나 더 이상 작업을 하지 않을 때 부모는 자식을 종료시킬 수 있다. 프로세스 종료 시스템 호출에 대해서 자세하게 알고 싶다면 http://twinjh.tistory.com/8 여기서 보세요.

 

 

 

 

Posted by twinjh
OS2013. 1. 9. 16:09

프로세스 개념

초기의 컴퓨터 시스템은 한 번에 하나의 프로그램만을 수행하도록 허용하였다. 반면에 오늘날 우리가 사용하는 컴퓨터 시스템은 메모리에 다수의 프로그램들이 적재되어 병행 수행되는 것을 허용한다. 이런 발전으로인해 프로세스의 개념이 생기게 되었다. 이쯤에서 프로세스의 정의를 짚고 넘어가자.


프로세스 : 수행중인 프로그램


프로세스는 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램이다. 프로세스는 현대의 시분할 시스템에서 작업의 단위이므로, 작업(task, job)이라는 용어와 거의 같은 의미로 쓰인다.


메모리 내의 프로세스

프로세스는 다음을 포함한다(즉, 메모리에 로드 될 수 있는 프로세스는 다음과 같은 구조를 가질 수 있다.)

- 프로그램 카운터 : 다음에 실행될 명령어의 주소를 가지고 있다.

- 현재 활동 : 프로세스 레지스터의 내용

- 스택 : 일반적으로 함수의 매개변수, 복귀 주소, 지역 변수와 같은 임시적인 자료

- 데이터 섹션 : 전역 변수들을 포함

- 힙 : 프로세스 실행중에 동적으로 할당되는 메모리




< 메모리 상의 프로세스 : 프로세스가 포함하는것 >

프로세스 상태

프로세스는 또한 실행되면서 그 상태가 변하기도 한다. 다음은 프로세스가 가질수 있는 상태의 목록이다.

- 신설(new) : 프로세스 생성

- 수행(running) : 명령어가 실행 중 이다.

- 대기(waiting) :  프로세스가 이벤트 발생을 기다리고 있다.

- 준비(ready) : 프로세스가 자신에게 프로세서(CPU)가 할당되기를 기다리고 있다.

- 종료(terminated) : 프로세스가 실행을 완료했다.



< 프로세스 상태도 >


PCB(프로세스 제어 블록)

각 프로세스는 운영체제 내에서 프로세스 제어 블록에 의해서 표현된다.



< 프로세스 제어 블록(PCB) >


- 프로세스 상태

- 프로그램 카운터


- CPU 레지스터들 : CPU 레지스터는 컴퓨터의구조에 따라 다양한 개수와 유형을 가진다. 레지스터에는 누산기, 색인 레지스터, 스택 레지스터, 범용 레지스터, 상태 코드 정보가 포함된다. 프로그램 카운터와 함께 이 상태 정보는 나중에 프로세스가 계속 올바르게 수행되도록 하기 위해서, 인터럽트 발생 시 저장되어야 한다.


- CPU 스케줄링 정보

- 메모리 관리 정보

- 회계 정보 : 이 정보는 CPU가 사용된 양과 사용된 실시간, 시간 제한, 계정 번호, 프로세스 번호 등을 포함한다.

- 입/출력 상태 정보 : 이 프로세스에 할당된 입/출력 장치들과 열린 파일의 리스트 등을 포함한다.


자 그럼 PCB가 왜 나왔는지, 왜 필요한지 생각해보자. 우리는 시분할 기법을 사용함으로서 멀티 태스킹을 할 수 있다. 즉, 우리가 음악을 들으면서 문서작업을 동시에 할 수 있는 것이 바로 멀티 태스킹이라고 생각하면 된다. 하지만 사용자가 보기에는 모든 작업이 동시에 이루어지는 것 같지만 실제로는 CPU가 밀리세컨드 단위로 작업을 돌아가면서 수행하기 때문에 우리가 그렇게 느끼는 것이다. 이처럼 CPU가 작업을 돌아가면서 할 때 음악 프로세스에서 문서 프로세스로의 내용 전환(context switch)이 일어난다. 내용 전환 시에 필요한 것이 바로 프로세스의 상태들이다. 즉 위에서 언급했던 음악 프로세스의 내용들을 문서 프로세스의 내용으로 바꿔야 CPU가 문서 작업을 할 수 있는 것이다. 만약 이런 상태들이 저장되지 않는다면 음악을 어디까지 들었는지 문서를 얼마나 작성했는지와 같은 정보들을 전혀 모르게 되는 것과 비슷하다고 생각하면 이해가 쉬울지도 모르겠다.




< CPU의 내용 전환(context switch) >


요약하자면 프로세스 제어 블록은 단순히 프로세스마다 변하는 모든 정보에 대한 저장소의 역할을 한다.


프로세스 스케줄링


다중 프로그래밍의 목적은 CPU의 사용률을 최대화 하는 것이다. 여러 개의 프로그램(프로세스)을 메모리에 올려 하나의 프로그램이 입출력 작업을 수행 중인 경우(CPU의 연산이 필요하지 않는경우를 뜻한다) CPU가 다른 프로세스를 수행함으로써 CPU가 항상 어떤 프로세스든지 실행중이게 한다는 방법이다. 이것이 가능하기 위해선 앞에서 말했던 시분할이 이루어져야 한다. 시분할은 내용 전환을 하면서 현재 수행할 프로세스를 바꾸는 것이라고 했는데, 내용 전환을 하기 위해 다음에 어떤 프로세스를 수행할 것인지를 설정하고 관리하는 것이 바로 프로세스 스케줄링(CPU 스케줄링)이라고 할 수 있을 것이다.


프로세스 스케줄링 : 다중 프로그래밍을 가능하게 하는 운영체제의 동작 기법. 운영체제는 프로세스들에게 CPU등의 자원 배정을 적절히 함으로써 시스템의 성능(사용률 등)을 개선할 수 있다.


스케줄링 큐

프로세스들은 여러 큐들을 이동하며 스케줄링 된다.


- 작업 큐 : 시스템 내에 있는 모든 프로세스 집합

- 준비 큐 : 주 메모리에 상주하면서 실행될 준비를 하고 있는 프로세스 집합

- 장치 큐 : 입출력 장치를 기다리고 있는 프로세스 집합



< 프로세스 스케줄링을 표현하는 큐잉 도표 >


위 그림처럼 프로세스들은 여러 큐들 이동하면서 스케줄러가 정한 순서에 맞춰서 작업을 수행한다. 그럼 이제 프로세스 스케줄링을 하는 스케줄러의 종류에 대해서 이야기 해보자.


스케줄러

- 장기 스케줄러 ( Long-term scheduler) : 디스크로부터 주 메모리 상의 준비 큐로 옮겨질 프로세스들을 선택한다.

- 단기 스케줄러 (Short-term scheduler) : 준비 큐에 있는 어떤 프로세스가 다음 차례에 수행될지 선택하여 CPU를 할당한다.


풀어서 말하면, 장기 스케줄러는 하드 -> 주 메모리 

단기 스케줄러는 주 메모리 -> CPU 이렇게 프로세스를 이동시킨다는 것이다.


우리가 말하는 다중 프로그래밍의 정도(몇 개의 혹은 어떤 프로세스가 주 메모리에 상주할 것인가)를 제어하는 것이라고 보면 된다. 하드에서 메인 메모리로 로드하는 것은 꽤 느린 편이다. 때문에 장기 스케줄러는 신중히 프로세스를 메인 메모리로 로드해야 한다. 그래서 장기 스케줄러는 입/출력을 많이하는 프로세스(입출력 결속 프로세스)와 CPU연산을 많이 필요로하는 프로세스(CPU결속 프로세스) 두 가지를 적절히 선택하여 메인 메모리로 로드하는 것이 중요하다.


- 중기 스케줄러 (medium-term scheduler) : 스와핑을 한다. ( 사용하지 않는 프로세스들을 제거하여 다중 프로그래밍 정도를 줄이고, 이 프로세스는 후에 다시 메모리로 올라와 수행을 계속할 수 있다. )


중기 스케줄러는 유닉스와 윈도우XP와 같은 시분할 시스템에서 주로 사용되며, 이 시스템에서 장기 스케줄러는 사용되지 않는다. 이 외에도 중기 스케줄러에 대한 많은 설명이 있지만 이 정도로 설명을 마친다.



< 큐잉 도표에 중기 스케줄링을 추가 >





'OS' 카테고리의 다른 글

3-1. 프로세스 : 프로세스의 연산  (1) 2013.01.16
2-3. 운영체제 구조  (0) 2013.01.03
2-1. 운영 체제 구조 : 운영체제 서비스, UI  (0) 2012.12.30
1. Introduction  (0) 2012.12.30
Posted by twinjh
OS2013. 1. 3. 23:59

운영체제 설계 및 구현


이번에는 운영체제를 설계하고 구현할 때 우리가 당면하는 문제점을 논의한다. 물론 이런 설계 시 문제점에 대한 완전한 해결책은 없지만 성공적인 접근 방법들이 있다. 시스템을 설계하는데 있어 가장 크다고 할 수 있는 문제점은 시스템의 목표와 명세를 정의하는 일이다. 이런 목표와 명세는  하드웨어와 시스템 유형으로 어떤 것을 선택하는지에 영향을 받는다. 일괄처리, 시분할, 단일 사용자, 다중 사용자, 분산, 실시간 등 여러 유형의 시스템이 있기 때문에 목표와 요구명세를 정의하는 것이 어렵다고 하는 것이다. 


한줄 요약=> 운영체제에 대한 요구 정의 문제를 해결하는 유일한 해법은 없다.


원래 이런 분야는 소프트웨어 공학에서 다루는 것이므로 지금은 이정도만 하고 넘어가도록 한다.

하지만 운영체제 설계 시에 한 가지 중요한 원칙이 있는데 바로 메커니즘으로부터 정책을 분리하는 것이다. 


메커니즘 : 어떤 일을 어떻게 할 것인가를 결정하는 것

정책 : 무엇을 알 것인가를 결정하는 것


메커니즘으로부터 정책을 분리하는 것이 왜 중요하냐면, 정책을 변경해야하는 경우에 정책 밑에 깔린 모든 메커니즘의 변경이 요구되기 때문이다. 예를 들어 타이머 구조는 CPU 보호를 보장하기 위한 메커니즘이지만, 특정 사용자를 위해 타이머를 얼마나 오랫동안 설정할지를 결정하는 것은 정책적 결정이다. 타이머를 설정한다고 CPU보호가 불가능하면 안 된다는 것이다.


운영체제 구조


현대의 운영체제와 같이 크고 복잡한 시스템은 변경을 쉽게 하도록 신중히 제작되어야 한다. 때문에 운영체제의 구조가 잘 설계 되어있어야 변경이 쉽고, 적절하게 동작한다. 이 절에서는, 운영체제의 구조 4가지를 살펴 볼 것이다.


1. 간단한 구조


잘 정의된 구조를 갖지 못한 상용 시스템이 많이 있다. 종종 그러한 운영체제는 처음에는 소형이면서 간단하고 제한된 시스템으로 시작되어서 그런 구조여도 문제가 없었지만, 점점 시스템이 커지면서 문제가 된 것이다. 그러한 예로 MS-DOS가 있다.



< MS-DOS 계층 구조 : 인터페이스와 기능 계층이 잘 분리되어 있지 않다.>


MS-DOS는 인터페이스와 기능 계층이 잘 분리되어 있지 않는데, 최소의 공간에 최대의 기능들을 제공하도록 작성되어 있어서, 모듈로 분할되지 않았다. 변경을 하고자 하는 경우 모듈이 아니기 때문에 전체적인 수정이 필요할 수도 있다. 때문에 변경이 용이하지가 않은 것이다.

ex) MS-DOS의 응용 프로그램은 디스플레이와 디스크에 직접 쓰기가 가능하다. 이런 자유는 바이러스와 같은 악의적인 프로그램으로부터 취약하게 만들었다. 따라서 사용자 프로그램이 문제가 생기면 시스템 전체가 고장 나게 된다.


MS-DOS와 같이 제한적인 구조의 또 다른 예는 UNIX 운영체제이다. 초기의 유닉스는 다음 그림과 같이 계층들로 이루어졌다고 볼 수 있다.(현재는 발전하면서 추가/확장된 것이다.)



< UNIX 시스템 구조 >


아래서 두 번째 층이 커널인데 층이라고 하기에는 너무 많은 기능이 들어있다. 계층들로 이루어져 있지만 간단하기 때문에 간단한 구조로 간주하는 듯하다.


2. 계층적 접근


운영체제 시스템은 여러 계층((layer, level)으로 구분된다.

- 최하위 계층(layer 0) : 하드웨어

- 최상위 계층(layer N) : 사용자 인터페이스

모듈화를 통해, 각 계층은 바로 아래 계층에서 제공하는 기능과 서비스만을 사용한다.

- 계층은 하위 계층에 대한 연산을 호출할 수 있다.



< 계층 구조의 운영체제 >

장점

- 구축과 디버깅의 단순함

- 설계와 구현이 단순하다

- 각 계층은 하위 계층에서 제공하는 연산만을 통해 구현된다

- 각 계층은 이 연산들이 어떻게 구현되는지 알 필요가 없다


단점

- 다양한 계층들이 대략적으로 정의된다

- 각 계층은 오직 하위 계층들에서 제공하는 기능만을 사용하기 때문에, 주의 깊은 계획이 요구된다 => 예로 예비 저장 장소를 위한 장치 드라이버는, 메모리 관리가 예비 저장 장소를 사용할 수 있는 능력을 필요로 하기 때문에 메모리 관리 루틴들보다 저수준에 있어야 한다.


3. 마이크로커널


커널을 가능한 한 경량화한다. 

- 많은 기능을 커널로부터 user space로 이동한다

- 커널과의 통신은 사용자 모듈 사이에서 메세지 전달을 통해 이루어진다


장점

- 마이크로 커널을 확장하기 쉽다

- 운영체제를 새로운 구조로 이식하기 쉽다

- 커널에서 수행되는 코드가 더 적으므로 더 안정적이고 더 안전하다

단점

- 커널 공간과 통신하기 위한 사용자 공간의 성능 오버헤드 발생


4. 모듈


대부분의 현대 운영체제는 커널 모듈을 구현한다

- 커널은 핵심 컴포넌트들로 이루어지며 부팅 시나 실행 시에 부가적인 서비스들을 동적으로 연결한다

- 객체 지향 접근을 샤용한다

- 각 핵심 컴포넌트는 나뉘어져 있다

- 각 컴포넌트는 정해진 인터페이스를 통해 다른 컴포넌트와 대화한다

- 각 컴포넌트는 커널내에서 필요에 따라 적재 가능하다

=>결론적으로, 계층 구조와 유사하나 더 유연하다.



< 솔라리스 모듈화 접근법 >


모듈화 커널 접근법은 계층구조 접근법과 유사하다

- 모듈화 커널 접근법은 서브시스템들이 서로 정해진 인터페이스를 통해 상호작용하도록 요구한다


하지만 계층적 커널은 하위 계층에 있는 서브시스템들이 상위 계층 연산의 호출을 허용하지 않는 엄격한 서브시스템의 순서를 가지고 있다. 반면 모듈화 커널 접근법에서는 이런 제약이 없어서 모듈들이 서로 자유롭게 호출할 수 있다.








Posted by twinjh
OS2012. 12. 30. 05:46

이 장에서는 운영체제가 사용자와 프로세스, 사용자와 다른 시스템에게 제공하는 서비스를 설명한다. 즉, 운영체제를 구조화하는 다양한 방법에 대해 알아본다.


운영체제 서비스

운영체제는 사용자에게 편리성효율성을 제공한다. 먼저 편리성에 관한 것을 살펴보자.


편리성 : 운영체제 서비스는 사용자에게 도움이 되는 기능들을 제공한다.


1. 사용자 인터페이스(User Interface)

대부분의 모든 운영체제는 사용자 인터페이스(UI)를 가진다. CLI(Command Line Interface), GUI(Graphical User Interface), 일괄처리 인터페이스 등 다양한 사용자 인터페이스를 가진다.


2. 프로그램 실행

시스템은 프로그램을 메모리에 적재하고, 적재한 프로그램을 실행하고, 정상적이든 비정상적이든 종료할 수 있어야 한다.


3. 입출력 연산

프로그램은 파일이나 입출력 장치를 포함하는 입출력을 요구할 수 있다.


4. 파일 시스템 조작

프로세스는 파일과 디렉터리를 읽고 쓰는 기능, 생성하고 삭제하는 기능, 검색하는 기능, 리스트 하는 기능을 필요로 한다.


5. 통신

프로세스는 같은 컴퓨터 내에서 정보를 교환하거나, 네트워크를 통해서 다른 컴퓨터 사이에 정보를 교환한다.


6. 오류 검출

운영체제는 끊임없이 CPU와 메모리, 입출력 장치, 프로그램 내에서 발생하는 오류에 대해서 인식한다.


효율성 : 운영체제 기능 중 다른 것은 사용자를 위한 것이 아니라, 시스템 자체의 효율적인 동작을 보장하기 위한 기능들이다. 멀티유저 시스템(OS)에서는 사용자들 간에 자원을 공유하게 함으로써 효율성을 얻게 한다.


7. 자원 할당

여러 사용자가 있고, 여러 작업이 동시에 수행될 때, 각 작업에 자원이 할당되어야 한다.


8. 회계

어떤 사용자가 어떤 종류의 자원을 얼마나 사용했는지 기록하는 것이다.


9. 보호와 보안


보호 운영체제는 기본적으로 시스템에 대한 모든 접근 권한이 통제되는 것을 보장한다. 이것을 보호라고 한다.

보안 또한 운영체제는 외부 사용자로부터 시스템에 대한 사용자 인증을 요구한다. 이것을 보안이라고 한다.



(왼쪽)운영체제는 기본적으로 방화벽을 가지고 있다.

때문에 사실상 외부에서 시스템에 대한 모든 접근을 통제한다.

(오른쪽)이때 방화벽의 일부를 열어서 운영체제로 접근할 수 있게 하는 것이 보안이다.

운영체제와 사용자가 미리 약속해 놓은 아이디 와 패스워드를 가지고 운영체제 에 접근한다고 보면 됨.




사용자 인터페이스(UI)


CLI(Command Line Interface)

직접적인 명령을 내린다. 취향에 따라서 여러 형태로 구현된다.(bash, sch, cmd...)

기본적으로 사용자로부터 명령어를 받아들여 그것을 수행한다.


GUI(Graphical User Interface)

보통 마우스, 키보드, 모니터 등을 이용하여 아이콘을 클릭하거나 하는 직관적인 입력이 가능한 인터페이스이다.


많은 시스템들이 현재 CLI와 GUI 두 가지를 모두 제공하고 있다. 예로 윈도우는 CMD에서 CLI환경을 제공하고, 그 외에는 GUI를 제공하는 식이다.










'OS' 카테고리의 다른 글

3-1. 프로세스 : 프로세스의 연산  (1) 2013.01.16
3-1. 프로세스 : 프로세스 개념, 프로세스 스케줄링  (1) 2013.01.09
2-3. 운영체제 구조  (0) 2013.01.03
1. Introduction  (0) 2012.12.30
Posted by twinjh
OS2012. 12. 30. 04:52


여기서는 운영체제(Operating System)가 무엇인지 정의와 역할에 대해서 알아보고, 앞으로 이야기해 나갈 내용들을 간략하게 소개하고자 한다.

내가 배웠던 운영체제 수업 내용을 정리한 것인 만큼 이곳에서 말하는 내용은 수업 자료와 Operating System책에 있는 내용을 기준으로 하도록 하겠다.




OS란 무엇인가?


먼저 우리가 이야기하고자하는 이 OS라는 놈은 무엇인지 왜 배워야 하는가를 이야기해보자.

흔히 운영체제를 검색하면 다음과 같은 정의를 볼 수 있을 것이다.


- 운영체제 또는 오페레이팅 시스템(OS, Operating System)은 시스템 하드웨어를 관리할 뿐만 아니라 응용 소프트웨어를 실행하기 위한 시스템 소프트웨어이다.


쉽게 말하면 os는 컴퓨터 하드웨어(하드디스크, RAM 등...)를 관리하는 프로그램인 것이다. 때문에 운영체제는 사용자와 하드웨어 사이의 중재자 역할을 한다고 말할 수 있는 것이다.


OS의 목적?


- 환경관리 : 사용자가 컴퓨터 시스템을 편리하게 사용할 수 있는 환경을 제공한다.

- 프로세스관리 : 사용자 프로그램을 실행할 수 있다. 이것은 사용자가 하고자 하는 일을 좀 더 쉽게 해결 할 수 있도록 해준다.

- 자원관리 : 컴퓨터 하드웨어를 효율적인 방법으로 사용하게 하기 위함.


운영체제의 구조를 알고 싶으신 분은 다음 링크로 가면 간략히 소개되어 있다.

>>  http://twinjh.tistory.com/12


링크에 있는 큰 그림중 커널 부분이 대략 운영체제라고 보면 이해가 빠를 것이다.


컴퓨터 시스템의 네 가지 컴포넌트

하드웨어, 운영체제, 프로그램, 사용자(위 링크의 그림과 유사함)


지금까지는 운영체제가 무엇이고, 어떻게 구성되었는가를 알아보았다. 앞으로는 앞서 말한 운영체제의 목적을 이루기 위해서 어떤 작업들이 이루어지는지를 이야기하게 될 것이다. 즉 운영체제가 내부적으로 어떻게 작동하는지 어떤 작업이 이루어지는지, 어떤 패러다임을 사용하여 목적을 달성하는지를 자세하게 알아볼 것이다.

- 운영체제의 구조

- 프로세스

- 쓰레드

- CPU 스케줄링

- 프로세스 동기화

- 데드락

- 메모리

이 순서로 운영체제의 내부 동작에 대해서 공부하도록 할 것이다.


1장 정리.hwp



Posted by twinjh