좀비 프로세스는 고아

프로세스가 작업을 완료 종료되면, 부모는 자식 프로세스의 종료 상태를 얻기 위해 대기 () 또는 waitpid를 ()를 호출합니다. 프로세스가 / waitpid를 기다려 호출하지 않는 경우, 프로세스 정보 시스템 보유의 조각 프로세스 ID가 점령되었을 것입니다 해제되지 않지만 사용할 수있는 프로세스 ID 시스템은 제한된 경우에 좀비의 큰 숫자, 시스템을 주도 프로세스가 새로운 프로세스를 생성 할 수 없기 때문에 수는 사용할 수 없습니다.

고아 프로세스 : 부모 프로세스가 종료하지만, 아이가 고아가 될 수 있도록 그것은, 하나 이상의 자식 프로세스가 계속 실행되고 있습니다. 고아 공정은 공정 (공정 1)에 그 컬렉션의 초기화 처리 완료 상태로 초기화하기 채택한다.

고아 프로세스가 부모 프로세스 init 프로세스가 몸에 떨어질 고아 과정입니다, 자식 프로세스를 철회했다 () 기다리는 고아 초기화하기 위해서 부모 커널 프로세스가 설정되어 놓고, init 프로세스주기. 비참한 고아 프로세스 수명주기를 종료 할 때 따라서, 때문에 고아가 어떤 해가 없습니다.

리눅스 커널은 프로세스가 부모 PID, 또는 자식 프로세스의 쿼리 실행 상태를 얻을 수 있습니다. 종료) () / waitpid를 예를 들어, 프로세스는, 특정 작업을 수행하기위한 하위 프로세스를 생성 할 수 이러한 자식 프로세스가 너무 (기다려 여부 확인으로 라이브러리 함수를 호출한다. 자식 프로세스가 종료 된 경우, 부모 프로세스 종료 코드는이 작업이 성공적으로 완료되었는지 여부를 알려줍니다.

이러한 설계 원리에 준하여, 리눅스 커널은 설명 된 프로세스에서 종료 처리를 포함하는 데이터 심볼 필드 후 폐기시켰다. 수업 후에 만 ​​프로세스와 관련된 부모 프로세스 문제가 종료 대기 () 시스템 호출은 이렇게 허용됩니다. 이런 이유로 좀비 상태의 소개 : 기술적으로 프로세스가 죽은이지만, 부모 알림을 호출 할 때까지, 기술자를 유지해야하지만.

프로세스가 종료 된 경우,하지만 정상적인 상황, 좀비에서 죽은 좀비 프로세스라고 부모 프로세스 대기 () 또는 waitpid를 (), 프로세스 상태가 죽은 상태라고, 그것을 처리 프로세스의 상태에서하는 전화 아니에요 프로세스는 즉시 부모 프로세스를 정리됩니다.

좀비 프로세스가 생성되는 방법

UNIX 시스템에서, (waitpid를 / 대기) 호출을 프로세스가 이상하지만, 부모가 기다리지 않고, 그것은 좀비 프로세스로 바뀝니다. ps 명령에 의해 소멸과 그 흔적을 볼 수 있습니다. 좀비 프로세스의 처리의 긴 끝에, 여전히 프로세스 테이블 (프로세스 테이블)의 위치 (슬롯)이다.

부모 프로세스가 이미 프로세스를 시작한 경우, 프로세스가 좀비 프로세스가되지 않습니다, 끝났습니다. 각 프로세스의 종료 이후, 시스템은 바로이 과정을 체결 공정 자식 프로세스가 있는지 확인하기 위해 현재 시스템에서 실행중인 모든 프로세스를 스캔, 그렇다면 그것을 인수하는 init 프로세스를 가지고, 그것은이라고 각 공정을 보장하기 위해 부모 프로세스는 부모 프로세스가됩니다. 모든 프로세스가 초기화에 의해 점령되어 좀비 프로세스가되지 않도록 init 프로세스는 자동으로 자신의 자식 프로세스를 기다립니다.

이러한 죽은 고아 프로세스가 완전히 해제 될 수 있도록 만, 그들은 자원과 프로세스의 수에서 차지하는 하위 공정 및 최종 전달 시스템 프로세스 테이블을 기다립니다.

좀비 과정 : 자식 프로세스가 종료하고, 부모가 대기를 호출하지 않거나 자식 프로세스의 상태 정보를 얻을 waitpid를하는 경우, 자식 프로세스를 만들 포크를 사용하는 과정은 다음 자식 프로세스 기술자 (PCB)은 여전히 ​​시스템에 저장됩니다. 이 과정은 좀비 프로세스라고합니다.

모든 자식 프로세스는 종료 후 (초기화 제외) 즉시 사라지지하지만, 데이터 구조가 좀비 프로세스 (좀비), 치료를 위해 대기하는 부모 프로세스라고 둡니다. 이 단계의 끝에서 프로세스를 수행하는 모든 어린이입니다. 출구 () 후에 자식 프로세스는 부모 프로세스가 처리하는 시간이하지 않으면, 자식 프로세스의 상태가 "Z"입니다 볼 수 있습니다 ps 명령을 사용합니다. 부모 프로세스는 PS가 좀비 자식 프로세스를보고 너무 늦을 수로, 적시에 치료 될 수 있지만, 경우에이 아이가 좀비 상태를 통과하지 않는 것을 의미하지 않는다. 부모 프로세스가 자식이 끝나기 전에 종료되면 자식 init 프로세스를 통해 이동합니다. 부모로서 INIT 자식 좀비 상태에서 처리한다.

고아 프로세스가 부모 프로세스 init 프로세스가 몸에 떨어질 고아 과정입니다, 자식 프로세스를 철회했다 () 기다리는 고아 초기화하기 위해서 부모 커널 프로세스가 설정되어 놓고, init 프로세스주기. 비참한 고아 프로세스 수명주기를 종료 할 때 따라서, 때문에 고아가 어떤 해가 없습니다.

추천

출처www.cnblogs.com/caohongchang/p/11618826.html