운영체제 - Process(3)

2020-09-17

OS를 공부하면서 정리를 한 내용들 입니다.

이번 챕터는 Process에 관련해 정리한 챕터입니다.


프로세스의 생성

  • 부모 프로세스가 자식 프로세스를 생성.

  • 프로세스의 트리(계층 구조) 형성

  • 프로세스는 자원을 필요로 한다.

이때의 자원은 운영체제로 부터 받거나 부모와 공유하게 된다.

부모 프로세스

프로세스를 생성한 프로세스

자식 프로세스

새롭게 생성된 프로세스

생성된 프로세스가 자원을 획득하는 방법

  • 운영 체제로부터 직접 자원을 할당받는다
  • 부모 프로세스와 자원을 공유해서 사용한다

자원의 공유는 크게 3가지로 구분이 된다.

  1. 부모와 자식이 모든 자원을 공유하는 모델
  2. 일부를 공유하는 모델
  3. 전혀 공유하지 않는 모델

프로세스 수행 모델

부모와 자식이 공존하며 수행하는 모델

  • 서로 CPU를 차지하기 위해 경쟁

자식이 종료될 때까지 부모가 기다리는 모델

  • 자식이 종료되고 나서 부모 프로세스가 준비 상태가 된다

주소 공간

  • 자식은 프로세스의 주소 공간을 생성할 때는 부모 프로세스의 주소 공간 내용을 그대로 복사해서 생성합니다.(binary and OS data)

  • 자식 프로세스는 그렇게 생성된 주소 공간 위에 새로운 프로그램의 주소공간을 덮어 씌워 실행하게 된다.

UNIX의 예

fork() 시스템 콜 : 새로운 프로세스를 생성

  • 자식 프로세스를 생성할 떄 부모 프로세스의 내용을 그대로 복제 생성
  • 프로세스 id는 제외
  • 주소 공간은 따로 갖는다. 주소 공간 내의 내용은 동일하다

exec() 시스템 콜 : fork 다음에 이어지는 콜

  • 새로운 프로그램으로 주소 공간의 내용을 덮어씌운다.

프로세스 종료

exit() 시스템 콜 : 프로세스가 마지막 명령을 수행한 후 운영체제에게 이를 알려줌.

  • 자식이 부모에게 output data를 보냄(via wait)

  • 프로세스의 각종 자원들이 운영체제에게 반납이 됨.

abort() : 부모 프로세스가 자식 프로세스의 수행을 강제로 종료

  • 자식 프로세스가 할당 자원의 한계치를 넘어서는 자원을 요구할 때
  • 자식 프로세스에게 할당된 작업이 더이상 필요 없을 때
  • 부모 프로세스가 종료(exit)되는 경우