좀비 프로세스 또는 스레드 란 무엇입니까?


11

좀비 프로세스 또는 스레드 란 무엇이며이를 만드는 요소는 무엇입니까? 방금 그들을 죽입니까, 아니면 그들이 어떻게 죽었는지 진단을 받기 위해 무언가를 할 수 있습니까?


13
당신은 그들의 머리를 잘라. 아니면 당신은 그들을 태워. 그게 유일한 방법입니다.
Simon Bergot

"비트나 타거나, 아주 쉽게 올라간다"...
TMN

답변:


17

좀비 프로세스 또는 스레드 란 무엇이며이를 만드는 요소는 무엇입니까?

좀비 프로세스는 죽은 프로세스입니다.
OS는 단지 정보를 유지하기 때문에 부모는 나중에 프로세스의 종료 코드를 확인할 수 있으므로 OS는 프로세스에 대한 정보를 유지하므로 프로세스를 볼 때 나타납니다.

난 그냥 그들을 죽일까

아닙니다. 그들은 이미 죽었습니다.
부모가 사망하거나 OS에서 상태 코드를 가져 오면 OS가 정리됩니다.

아니면 어떻게 죽었는지 진단을받을 수 있습니까?

아니요. 부모는 껍질 만 할 수는 없습니다.


4

좀비 스레드는 실행을 종료했지만 완전히 종료되지 않은 스레드입니다. 스레드가 사용하는 자원을 할당 해제하지만 스레드 / 프로세스 테이블에 항목을 유지합니다.

이론적으로 좀비 스레드는 _join (POSIX)을 실행하여이 상태를 종료합니다. 그것은 당신의 메인이 완료되면 좀비 프로세스가 프로그램으로 죽임을 의미합니다.


2

좀비 프로세스는 실행이 종료되고 예약 된 프로세스 목록에서 제거 되었지만 아직 삭제되지 않은 프로세스입니다. OS에 따라 tt는 아직 다양한 리소스가 할당되어 있거나 쿼리되지 않았지만 쿼리 될 수 있지만 실행되지는 않습니다.

일부 OS (설계 상)는 특정 이벤트 지점 (예 : VxWorks Cert) 이외의 리소스를 동적으로 생성하거나 삭제할 수 없습니다. 이러한 시스템은 종종 항목을 검색, 반환 및 재사용하는 미리 할당 된 리소스 풀을 사용하여 이러한 제한을 해결합니다. 그러나 이러한 시스템 종료에 과정은, 그것은 삭제할 수 없습니다 대신 될 때 좀비가 (종료 및 스케줄링 목록에서 제거).

도움이 되었기를 바랍니다.


0

스레드 / 프로세스가 종료되었지만 해당 테이블에 여전히 레코드가 있으면 좀비가됩니다.

예를 들어 상위 프로세스가 하위 프로세스를 작성하지만 하위 프로세스보다 먼저 종료되는 경우에 발생할 수 있습니다. 자식 프로세스가 종료되면 부모에게 종료에 대해 알려줍니다. 그런 다음 하위 프로세스의 레코드가 해당 테이블에서 제거됩니다. 그러나 부모는 이미 종료되었으므로 레코드는 여전히 테이블에 남아 있습니다.

좀비를 제거 할 수는 없지만 재부팅 할 수있는 방법은 없습니다.


1
재부팅이 필요하지 않습니다. 간단히 부모 프로세스를 종료하면 시스템이 좀비를 자동으로 정리합니다.
케빈 판코
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.