본문 바로가기

C.E/OS

Process - Operation on Process

O.S는 Process의 생성 및 종료에 필요한 메커니즘을 제공한다.

 

Process가 Parent Process가 생성하는 경우가 있는데 이때 생성된 Process를 Child Process라고 한다.

 

이때 생성된 Child Process는 O.S나 Parent Process로 부터 자원을 할당 받아야 한다. 이때 Parent Process로 부터

 

자원을 할당받을때는 Parent의 자원 한도내에서 새로운 Proess가 생성가능하기 때문에 무분별한 Process의 생성을

 

방지하여 OverHead를 방지한다. UNIX의 경우를 살펴보자.

 

UNIX의 경우에 Process생성에 관한 System Call을 제공하고 있다.

 

fork() : Parent Process가 fork()를 사용하게 되면 새로운 Process가 생성되며 해당 Process는 고유의 ID를 가지게 된다.

 

또한 생성된 Child Process는 Parent Process와 똑같은 Process이다. Parent와 Child의 수행의 차이는 없다.

 

execve() : Parent나 Child가 execve()를 사용하게 되면 해당 Process의 자리에 새로운 Process가 생성, 실행 된다.

 

wait() : Parent Process가 수행 종료 대기 상태이거나 Child의 특정 Event를 기다린다면 Parent Process는

 

Readt Queue에서 제외되고 대기하게 된다.

 

 

 

 

또한 UNIX의 경우에 Process종료에 관한 System Call을 제공하고 있다.

 

exit() : Process가 마지막 명령어를 수행하거 exit() System Call을 통해서 O.S에게 Process의 종료를 요청한다.

 

만일 해당 프로세스가 Child Process이고 Parent Process가 wait()상태라면 출력값을 전달한다.

 

또한 Process가 종료되면서 O.S는 해당 Process에게 할당되었던 모든 자원을 해제한다.

 

abort() : abort()의 경우 보통 임의로 다른 프로세스를 종료시키거나 Parent가 Child를 종료 시킬경우, 또

 

사용자가 임의의 Process를 종료시킬때 사용된다. 이때 두번째 경우는 몇가지 지유가 있다.

 

Child가 자원을 잘못 사용하고 있거나, Child에 배정된 작업이 필요없을 경우, Parent가 종료된 경우이다.

 

다만 마지막 이유같은 경우 그 하위에 있는 모든 Process가 종료되는 Cascading Termination이 일어날 위험이 있다.

 

때문에 UNIX의 경우에는 Parent가 죽을경우 Child의 Parent를 Init으로 변경시킨다.

 

 

'C.E > OS' 카테고리의 다른 글

Process - InterProcess Communication(IPC)_2  (0) 2013.12.09
Process - InterProcess Communication(IPC)_1  (0) 2013.12.09
Process - Schedulers  (0) 2013.12.09
Process - Process Scheduling  (0) 2013.12.09
Process - Process Control Block(PCB)  (0) 2013.12.09