Zombie Process

유닉스/리눅스에서

1) 모든 프로세스는 부모/자식의 관계를 갖는다.

* 일반적으로 특정 프로세스를 생성한(fork) 프로세스가 부모 프로세스이며, 부모의 유고시에도 1) 조건은 유지되어야 하며, 단, 부모를 1(init)로 한다.

2) 모든 프로세스는 첨부된 그림에 나타난 모든 스테이트를 가질 수 있다.

* 참고: 좀비스테이트도 프로세스가 가질 수 있는 한 state이며, 필연적으로 모든 프로세스가 거치는 상태임(종료될 수 있다면)

* 절차

  • 1) A 라는 프로세스가 죽으면 자원을 반납하고 일단 좀비스테이트로 세팅됨(A→죽으면 좀비, zombie, defunct가 됨)
  • 2) A 프로세스는 자신의 부모프로세스에게 자신의 exit 코드를 리턴함
  • 3) 커널은 A 프로세스가 죽으면, 부모 프로세스에게 시그널(Sig child)을 발생시켜 통보하고, 그에 대해 처리(wait, signal 핸들러로 처리)를 대기함
  • 4) 시그널을 받은 부모는 SIGCHLD에 대해 wait, signal handler로 처리
  • 5) 커널은 좀비를 해제하고 완전하게 프로세스 관리 리스트에서 A 프로세스에 대한 엔트리를 제거
누구나 수정하실 수 있습니다. 위키 사용법 참고하세요.