작성
·
202
·
수정됨
0
안녕하세요 강사님
다른분들의 글을 보다 궁금한점이 있어 여쭤봅니다
고아프로세스는 부모 프로세스가 죽은것이고, 좀비 프로세스는 부모프로세스가 죽은것은 아니고
자식프로세스를 호출을 못하는것을 좀비 프로세스라고 하는것인가요?
그리고 호출을 못한다는 것은 자원회수도 안되고 아무것도 안된다로 이해하였는데 맞을까요?
추가로 SWAP IN이 되어도 SWAP 영역에서 지워지진 않는다 라고 말씀을 주셨고
해당 영역을 swap cached라고 하셨는데요, 가끔 보면 top을 보면 메모리 가용영역을 보면
swap부분이 안지워진걸 보고 아 이게 그거구나라고 이해를 하였습니다 그런데 그럼 swap cached는 언제 없어지는 건가요?? 리부팅 시 없어지는 건가요?
혹시 고아프로세는 어떠한 방식으로 현업에서 확인을 하셨는지 궁금합니다
답변 1
0
네 안녕하세요.
고아 프로세스는 부모 프로세스가 죽은 것이 맞고, 좀비 프로세스는 자식이 부모에게 자신의 종료를 제대로 전달하지 못해서, 부모가 자식 프로세스의 정보를 정리하지 못하는 경우를 의미 합니다. kill
명령 등으로 강제로 죽일 수 있지만, 그런 외부의 방법이 아니고서는 프로세스가 정리되지 않습니다. 자식프로세스를 호출하지 못한다는 의미가 좀 애매한데, 좀비가 된 자식 프로세스는 이제 자신이 해야 할 모든 일을 마쳤기 때문에 스케쥴링 되지 않고 따라서 CPU 와 메모리 같은 리소스를 사용하지 않습니다. 따라서 자원회수가 안된다기 보다는 PID 회수가 안된다고 보는 게 더 정확 합니다.
swap cached 는 강제로 스왑을 다시 생성할 경우 정리가 되지만 그 외의 경우는 특별히 없어지진 않습니다. 메모리가 부족해서 메모리 영역의 재할당이 필요할 경우에는 정리가 될거구요. 스왑 영역을 재할당 하는 방법은 (https://brunch.co.kr/@alden/22) 를 참고 하시면 됩니다. 하지만 운영 환경의 서버에서는 특별한 경우가 아니면 하지 않기를 권고 합니다. 어떤 부작용이 일어날지 알 수 없기 때문 입니다. I/O가 갑자기 증가하거나, CPU 사용량이 증가할 수 있습니다.
현업에서는 특별히 고아 프로세스가 문제를 일으킨 적은 없기 때문에 따로 확인하진 않았습니다. 실제로 좀비 프로세스의 경우도 문제가 되는 경우는 극히 드물었습니다.