운영체제 - Process(3)
2020-09-17
OS를 공부하면서 정리를 한 내용들 입니다.
이번 챕터는 Process에 관련해 정리한 챕터입니다.
프로세스의 생성
-
부모 프로세스가 자식 프로세스를 생성.
-
프로세스의 트리(계층 구조) 형성
-
프로세스는 자원을 필요로 한다.
이때의 자원은 운영체제로 부터 받거나 부모와 공유하게 된다.
부모 프로세스
프로세스를 생성한 프로세스
자식 프로세스
새롭게 생성된 프로세스
생성된 프로세스가 자원을 획득하는 방법
- 운영 체제로부터 직접 자원을 할당받는다
- 부모 프로세스와 자원을 공유해서 사용한다
자원의 공유는 크게 3가지로 구분이 된다.
- 부모와 자식이 모든 자원을 공유하는 모델
- 일부를 공유하는 모델
- 전혀 공유하지 않는 모델
프로세스 수행 모델
부모와 자식이 공존하며 수행하는 모델
- 서로 CPU를 차지하기 위해 경쟁
자식이 종료될 때까지 부모가 기다리는 모델
- 자식이 종료되고 나서 부모 프로세스가 준비 상태가 된다
주소 공간
-
자식은 프로세스의 주소 공간을 생성할 때는 부모 프로세스의 주소 공간 내용을 그대로 복사해서 생성합니다.(binary and OS data)
-
자식 프로세스는 그렇게 생성된 주소 공간 위에 새로운 프로그램의 주소공간을 덮어 씌워 실행하게 된다.
UNIX의 예
fork() 시스템 콜 : 새로운 프로세스를 생성
- 자식 프로세스를 생성할 떄 부모 프로세스의 내용을 그대로 복제 생성
- 프로세스 id는 제외
- 주소 공간은 따로 갖는다. 주소 공간 내의 내용은 동일하다
exec() 시스템 콜 : fork 다음에 이어지는 콜
- 새로운 프로그램으로 주소 공간의 내용을 덮어씌운다.
프로세스 종료
exit() 시스템 콜 : 프로세스가 마지막 명령을 수행한 후 운영체제에게 이를 알려줌.
-
자식이 부모에게 output data를 보냄(via wait)
-
프로세스의 각종 자원들이 운영체제에게 반납이 됨.
abort() : 부모 프로세스가 자식 프로세스의 수행을 강제로 종료
- 자식 프로세스가 할당 자원의 한계치를 넘어서는 자원을 요구할 때
- 자식 프로세스에게 할당된 작업이 더이상 필요 없을 때
- 부모 프로세스가 종료(exit)되는 경우