11_프로세스에 대한 연산
대부분 시스템 내의 프로세스들은 병행 수행 될 수 있으며 반드시 동적으로 생성되고 제거되어야 한다.
프로세스는 실행 도중에 프로세스 생성 시스템 호출을 통해서 여러 개의 새로운 프로세스들을 생성 할 수 있다. 생성하는 프로세스를 부모 프로세스라 하며 생성된 새로운 프로세스들은 자식 프로세스라 부른다. 새로운 프로세스들은 다시 새로운 프로세스들을 생성할 수 있으며 그 결과 트리 구조의 프로세스가 형성 된다.
대부분의 운영체제들은 프로세스 식별자(PID)에 의해 프로세스를 구분하며 식별자는 정수 이다.
프로세스가 새로운 프로세스를 생성할 때 실행과 관련하여 두 가지 가능성이 있다.
- 부모가 계속해서 자식과 병렬로 실행 된다.
- 부모가 모든 자식 또는 일부 자식이 끝날 때까지 기다린다.
새로운 프로세스들의 주소 공간 측면에서 볼 때 다음과 같은 두 가지 가능성이 있다.
- 자식 프로세스는 부모 프로세스의 복사본이다. (자식 프로세스는 부모와 똑 같은 프로그램과 자료를 가진다.)
- 자식 프로세스가 자신에게 적재될 새로운 프로그램을 갖고 있다.
프로세스 종료는 프로세스가 마지막 문장의 실행을 끝내고 exit() 시스템 호출을 사용하여 운영체제에게 자신의 삭제를 요청 한다. 이 시점에서 프로세스는 부모 프로세스에게 wait() 시스템 호출을 통해 상태 값을 반환할 수 있다. 이때 물리 메모리와 가상 메모리, 열린 파일, 입/츨력 버퍼를 포함한 모든 자원이 운영체제로 반납된다.
프로세스가 종료되는 다른 경우를 살펴 보자.
- 자식이 자신에게 할당된 자원을 초과하여 사용 할 때
- 자식에게 할당된 태스크가 더 이상 필요 없을 때
- 부조가 종료하는데 운영체제는 부모가 종료한 후에 자식이 수행되는 것을 허용하지 않는 경우
VMS를 비롯한 일부 시스템에서는 부모 프로세스가 종료된 이후 자식 프로세스가 존재할 수 없다. 그러한 시스템에서 프로세스가 종료되면 부모로부터 비롯된 모든 자식 프로세스들도 종료되어야 한다. 이것을 연속적 종료(Cascading Termination)이라 하며 운영체제가 직접 수행 한다.
'SW Engineering > OS Concept' 카테고리의 다른 글
13_클라이언트 서버 환경에서 통신 (0) | 2015.07.16 |
---|---|
12_프로세스간 통신 (0) | 2015.07.16 |
10_프로세스 스케줄링 (0) | 2015.07.16 |
09_프로세스 개념 (0) | 2015.07.16 |
08_시스템 부트 (0) | 2015.07.16 |