[Computer Science]/[운영체제(OS)]

[운영체제(OS)] 3-4) 프로세스 연산(생성, 종료)

극꼼 2023. 1. 12. 20:19
반응형


<프로세스 생성>

: 프로세스는 실행되는 동안 여러 프로세스들을 생성합니다. 이를 각각 부모, 자식 프로세스라 부릅니다.

- 부모 프로세스가 자식 프로세스를 생성할 때, 자식 프로세스는 부모가 가진 자원의 부분 집합만을 사용하도록 제한하거나, 운영체제에서 자원을 직접 얻습니다.

- 부모 프로세스는 자식 프로세스와 동시에 구동되며, 자식 프로세스의 전부 또는 일부가 종료될 때까지 wait 상태값을 유지합니다.

 

: 트리 구조를 가짐. pid(프로세스의 고유 값)는 랜덤으로 할당되는데, 시스템 부팅 시 실행되는 프로세스는 1로 고정. 


: 프로세스의 생성 흐름. 자식 프로세스를 만드는 것과 관련된 Linux의 시스템 콜 함수로는 fork, exec, wait, exit 등이 있습니다.

1) fork : 부모 프로세스와 동일한 내용을 가진 자식 프로세스의 메모리 공간이 생깁니다. 부모 프로세스의 fork() 함수 리턴값은 자식 프로세스의 pid 값(0이상)이고, 자식 프로세스의 fork() 함수 리턴값은 0입니다.

2) exec : 자식 프로세스가 새로운 프로그램을 실행합니다.

3) wait : 부모 프로세스는 wait() 함수를 이용해 자식 프로세스가 종료할 때까지 기다릴 수 있습니다.

 


<프로세스 종료>

: 프로세스가 전부 실행된 후 exit() 함수를 통해 운영체제에 삭제를 요청(자원 할당을 해제)합니다. 대기중인 부모 프로세스에게 상태값을 알립니다.

 

- abort : 부모 프로세스가 자식 프로세스를 강제 종료. 자식이 할당된 자원의 사용량을 초과하거나, 자식 task가 더 이상 필요하지 않은 경우, 부모가 종료되었는데 자식이 종료되지 않았을 경우에 실행됩니다. 

 

- 좀비 프로세스(zombie process) : 종료되었는데 부모 프로세스가 아직 wait() 콜을 하지 않은 프로세스(아주 짧은 시간동안). 부모가 wait() 콜을 하면 좀비 프로세스의 pid와 프로세스 테이블 항목이 운영체제에게 반환됩니다.

- 고아 프로세스(orphan process) : 부모 프로세스가 wait()을 콜하는 대신 종료하게 되면 자식은 고아 프로세스가 됩니다. Linux, UNIX 계열은 새로운 부모 프로세스로 init 프로세스를 지정하여 문제를 해결합니다.  

 

 

 

반응형