CS 공부/OS 운영체제

(OS) 프로세스 (2)

그린티_ 2025. 5. 1. 22:36
반응형

좀비 프로세스 (Zombie Process)

좀비 프로세스실제로 종료된 프로세스지만, 프로세스 테이블에서 완전히 사라지지 않은 상태인 프로세스를 의미

- 프로세스가 종료되었지만 그 종료 상태가 부모 프로세스에 의해 수거되지 않아 프로세스 테이블에 남아 있는 프로세스

왜 좀비 프로세스가 발생할까?

  1. 자식 프로세스가 종료됨
  2. 자식 프로세스가 종료되면 종료 상태(exit code)를 부모 프로세스에게 전달해야 함!
  3. 그런데 부모가 자식의 종료 상태를 수거하지 않으면, 자식 프로세스는 프로세스 테이블에 계속 남아 있음
  4. 이 상태의 자식 프로세스가 바로 좀비 프로세스! ㅠㅜ

 

좀비 프로세스의 특징

  • 완전히 종료된 상태이지만, 프로세스 테이블에 여전히 존재
  • 자원을 소모하지 않지만, 테이블에서 메모리 공간을 차지하므로 계속 존재함
  • 부모 프로세스가 자식 프로세스의 종료 상태를 확인하고 wait() 시스템 콜을 호출하지 않으면 계속 존재

좀비 프로세스를 해결하는 방법

  1. 부모 프로세스가 자식 프로세스의 종료 상태를 수거하면 좀비 프로세스는 사라짐
    • wait() 시스템 콜을 호출하면 부모가 종료된 자식 프로세스의 종료 상태를 받게 되고,
      프로세스 테이블에서 해당 자식 프로세스 제거 됨
  2. 부모가 자식의 종료 상태를 수거하지 않으면, 이 자식은 고아 프로세스로 변할 수 있으며, 이때 init 프로세스(PID 1)가 이를 관리함
    • 부모가 자식의 종료 상태를 수거하지 않으면 init 프로세스가 이 종료 상태를 받아서 좀비 프로세스를 정리

좀비 프로세스 예시

  1. 부모 프로세스 A가 있고 자식 프로세스 B가 있다고 할 때:
    • B가 종료되고, B는 종료 상태를 A에게 전달해야 함
    • 그런데 Await() 시스템 콜을 호출하지 않으면 B는 종료되었음에도 프로세스 테이블에 남아 좀비 상태가 됨
반응형

'CS 공부 > OS 운영체제' 카테고리의 다른 글

(OS) 스레드  (0) 2025.05.01
(OS) 프로세스 (3)  (0) 2025.05.01
(OS) 프로세스 (1)  (0) 2025.05.01
(OS) 커널과 쉘  (0) 2025.05.01
(OS) 운영체제  (0) 2025.05.01