반응형
좀비 프로세스 (Zombie Process)
좀비 프로세스는 실제로 종료된 프로세스지만, 프로세스 테이블에서 완전히 사라지지 않은 상태인 프로세스를 의미
- 프로세스가 종료되었지만 그 종료 상태가 부모 프로세스에 의해 수거되지 않아 프로세스 테이블에 남아 있는 프로세스
왜 좀비 프로세스가 발생할까?
- 자식 프로세스가 종료됨
- 자식 프로세스가 종료되면 종료 상태(exit code)를 부모 프로세스에게 전달해야 함!
- 그런데 부모가 자식의 종료 상태를 수거하지 않으면, 자식 프로세스는 프로세스 테이블에 계속 남아 있음
- ➡ 이 상태의 자식 프로세스가 바로 좀비 프로세스! ㅠㅜ
좀비 프로세스의 특징
- 완전히 종료된 상태이지만, 프로세스 테이블에 여전히 존재
- 자원을 소모하지 않지만, 테이블에서 메모리 공간을 차지하므로 계속 존재함
- 부모 프로세스가 자식 프로세스의 종료 상태를 확인하고 wait() 시스템 콜을 호출하지 않으면 계속 존재
좀비 프로세스를 해결하는 방법
- 부모 프로세스가 자식 프로세스의 종료 상태를 수거하면 좀비 프로세스는 사라짐
- wait() 시스템 콜을 호출하면 부모가 종료된 자식 프로세스의 종료 상태를 받게 되고,
프로세스 테이블에서 해당 자식 프로세스 제거 됨
- wait() 시스템 콜을 호출하면 부모가 종료된 자식 프로세스의 종료 상태를 받게 되고,
- 부모가 자식의 종료 상태를 수거하지 않으면, 이 자식은 고아 프로세스로 변할 수 있으며, 이때 init 프로세스(PID 1)가 이를 관리함
- 부모가 자식의 종료 상태를 수거하지 않으면 init 프로세스가 이 종료 상태를 받아서 좀비 프로세스를 정리
좀비 프로세스 예시
- 부모 프로세스 A가 있고 자식 프로세스 B가 있다고 할 때:
- B가 종료되고, B는 종료 상태를 A에게 전달해야 함
- 그런데 A가 wait() 시스템 콜을 호출하지 않으면 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 |