티스토리 뷰

좀비 프로세스(Zombie Process)
      : 부모가 자식 프로세스의 종료 상태를 접수하지 않아 할당된 메모리가 없는 상태로 유지되는 자식 프로세스
 
좀비 상태의 프로세스는 시스템 자원의 낭비를 초래
( 해당 프로세스를 위한 제어 정보(프로세스 ID, CPU와 메모리 등의 자원 사용율 등)



부모 프로세스는 wait()와 waitpid()함수를 사용하여 자식 프로세스의 종료 상태를 접수
 * wait()와 waitpid() 함수 형식
 #include<sys/wait.h>

pid_t wait(int *statloc);

pid_t waitpid(pid_t pid, int *statloc, int options);
// 반환 : 성공시 프로세스 ID, 실패시 -1
// pid : 종료 확인을 원하는 자식 프로세스의 ID
// statloc : 리턴된 값을 비롯해서 좀비의 여러가지 정보 저장
// options : WNOHANG를 인자로 전달하게 되면 이미 종료된 자식프로세스가 없어도 대기 상태로 들어가지 않고 바로 리턴

* wait() 함수와 waitpid() 함수를 사용하여 좀비 프로세스를 처리할 때 발생하는 문제점
     : 자식 프로세스의 종료 시점을 정확히 알 수 없기 때문에 어느 시점부터 계속 대기하거나(wait() 함수) 반복적으로 종료를 확인해야 한다는 것이다.(waitpid())

부모 프로세스가 자식 프로세스가 종료될 때까지 계속 대기하거나 반복적으로 종료를 확인할 수 없는 경우에는 문제가 될 수 있음
이 문제는 프로세스가 종료할 때 발생시키는 비동기적인 시그널(SIGCHLD)을 처리하는 signal()함수를 사용함으로써 처리할 수 있음


댓글