<프로세스 생성>
: 프로세스는 실행되는 동안 여러 프로세스들을 생성합니다. 이를 각각 부모, 자식 프로세스라 부릅니다.
- 부모 프로세스가 자식 프로세스를 생성할 때, 자식 프로세스는 부모가 가진 자원의 부분 집합만을 사용하도록 제한하거나, 운영체제에서 자원을 직접 얻습니다.
- 부모 프로세스는 자식 프로세스와 동시에 구동되며, 자식 프로세스의 전부 또는 일부가 종료될 때까지 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 프로세스를 지정하여 문제를 해결합니다.
'[Computer Science] > [운영체제(OS)]' 카테고리의 다른 글
[운영체제(OS)] 3-6) 클라이언트-서버 통신 (0) | 2023.01.14 |
---|---|
[운영체제(OS)] 3-5) 프로세스 간 통신 (0) | 2023.01.13 |
[운영체제(OS)] 3-3) 컨텍스트 스위치 (0) | 2023.01.11 |
[운영체제(OS)] 3-2) 프로세스 스케쥴링 (0) | 2023.01.11 |
[운영체제(OS)] 3-1) 프로세스의 개념과 PCB(Process Control Block) (0) | 2023.01.09 |