프로세스의 생성과 종료, Start and End of Process
프로세스의 생성
부모 프로세스가 자식 프로세스를
복제
생성한다.프로세스의 트리(계층구조)를 형성한다.
자원을 필요로 한다.
이 자원은 운영체제로부터 받는다.
부모와 공유하는 경우도 있고, 아닌 경우도 있다.
자원의 공유
부모와 자식이 모든 자원을 공유하는 모델
일부를 공유하는 모델
전혀 공유하지 않는 모델 : 이것이 일반적임. 일단 부모로부터 복제 생성된 자식은 하나의 별도 프로세스가 되기 때문에 그때부터는 자원을 얻기 위해서 부모와 자식도 경쟁을 한다.
수행
부모와 자식은 공존하며 수행되거나
자식이 종료(terminated)될때까지 부모가 기다리는(wait) 모델
주소공산
자식은 부모의 공간을 복사한다. - binary and OS data
그 공간에 새로운 프로그램을 올린다.
유닉스의 예
fork()
시스템 콜이 새로운 프로세스를 생성한다.부모를 그래도 복사(os data except PID + binary)
주소 공간을 할당
fork 다음에 이어지는
exec()
시스템콜을 통해서 새로운 프로그램을 메모리에 올린다.
프로세스의 종료
자발적 종료 : 프로세스가 마지막 명령을 수행한 후, 운영체제에게 이를 알려준다. →
exit
자식이 부모에게 output data 를 보낸다. - via
wait
프로세스의 각종 자원들이 운영체제에게 반납됨
비자발적 종료 : 부모 프로세스가 자식의 수행을 종료시킴 →
abort
자식이 할당 자원의 한계치를 넘어섬
자식이 할당된 태스크가 더 이상 필요하지 않음
부모가 종료exit되는 경우
운영체제는 부모 프로세스가 종료하는 경우, 자식이 더 이상 수행되지 않도록 두지 않는다.
단계적인 종료 : 자식의 자식 → 자식 → 부모 순서대로 종료
Last updated