Linux

자식 프로세스 / 부모 프로세스

Superkill 2017. 1. 4. 14:56
반응형


리눅스 커널에서는 task list라는 process의 리스트를 doubly linked list로  저장한다.

리스트의 각 element는 struct task_struct 타입의 process descriptor이며 특정 process에 대한 정보를 포함하고 있다.


리눅스에서 프로세스의 종료는 exit() 시스템 콜을 통해 프로세스가 사용하던 시스템 자원을 반납 한 후 Process Descriptor가 task list에서 제거함으로써 이루어진다. 자식프로세스의 경우 exit() 시스템 콜을 호출하면서 종료되며 자신의 모든 자원을 해제 시킨다. 그리고 자식 프로세스의 Process Descriptor에는 exit status 상태

 부모 프로세스가 자식프로세스의 종료 상태와 기타 정보를 읽기위해 wait() 시스템 콜을 실행할 때 Process Descriptor에서 제거될 수 있다.

부모프로세스는 자식프로세스에 대한 종료상태 등을 가져와서 어떤 상태로 작업을 마쳤는지에 대해 정보를 확인할 수 있다. 하지만 

어떤 프로세스가 죽었을 때 그것의 부모 프로세스는 다른작업을 하느라 바빠서 자식프로세스가 종료될 때 나오는 exit status를 수집할 수 없다



'Linux' 카테고리의 다른 글

CMake 시작하기  (0) 2019.06.16
명령어 옵션 - 더블대쉬(--)  (0) 2018.07.04
Alpine Linux 설치  (0) 2018.04.15
package 'openjdk-7-jdk' has no installation candidate  (0) 2017.08.19
init system (systemd)  (0) 2016.12.27