• 좀비프로세스란
○ 프로세스가 종료되었음에도 메모리상에서 프로세스에 대한 정보가 사라지지 않은 상태를 말한다.
• 좀비프로세스는 왜 생기는 걸까?
○ 좀비프로세스가 만들어지는 상황을 보기위해 우선 호출된 자식프로세스가 종료되는 상황은 다음과 같다
§ 인자를 전달하며 exit를 호출하는 경우
§ main 함수에서 return문을 실행하여 값을 반환하는 경우
○ exit함수와 return 반환값은 모두 운영체제로 전달되고, 이 값이 자식프로세스를 호출한 부모프로세스에게 전달 될 때 까지 자식프로세스를 소멸시키지 않는다.
>> 요약하면 다음과 같다.
자식프로세스는 일을 끝마쳐 종료하였지만, 값을 부모프로세스에게 전달하지 못하여 아직 메모리상에 살아있는 것
○ 그렇다면 왜 운영체제는 부모프로세스에게 값을 전달하지 않는가?
§ 정확히 말하면 부모프로세스가 운영체제에게 값을 요청해야 비로소 값이 전달되기 때문이다.
§ 즉, 부모프로세스가 값을 요청하지 못하는 상황이라면 좀비프로세스가 만들어질 수 밖에 없다.
□ sleep 함수를 이용하여 테스트예제를 만들수 있다.
• 좀비프로세스인지 어떻게 확인하는가?
○ ps -au 명령어를 치면 (u:지정하는 사용자 번호(UID)를 가진 프로세스 정보를 출력, a: 빈번히 사용되는 프로세스 정보 출력) STAT 항목이 나오는데 (정확히 옵션 -u 에서 나온다) 이 항목에서 Z가 바로 좀비프로세스이다.
• 좀비프로세스의 소멸에 관해
○ 위에 기술한 내용을 토대로 보면, exit함수 또는 return 반환 값이 부모 프로세스에게까지 전달되면 종료된다는 것을
알 수 있다.
○ 그렇다면 부모프로세스가 운영체제에 전달값을 요청하는 방법은 무엇인가?
§ wait 함수를 사용하면, ( pid_t wait(int *statloc); )
§ 이 함수를 호출했을 때, 이미 종료된 자식프로세스가 있다면 자식프로세스가 종료되면서 전달한 값이 매개변수로 저장된다.
§ 그런데 이 매개변수에 저장되는 값은 전달값 이외에도 다른 정보가 포함되어있으니 구분이 필요하다.
§ WIFEXITED, WEXITSTATUS 함수를 통해 분리가 가능하다.
'IT 공부 > OS' 카테고리의 다른 글
[Linux] ssh 로그인 시 화면 설정 (공지/배너 등) (1) | 2024.04.26 |
---|---|
배치 시스템의 특징 (0) | 2024.03.16 |
[Linux] 특수권한 비트, CHMOD 에 대해 (0) | 2024.03.11 |
OSI 7계층 (L4, L7 스위치) (0) | 2024.02.24 |
[ShellScript] getopts 를 이용하여 옵션 받기 (0) | 2022.12.21 |