모든 신호가 무시되면 어떻게 되나요?

모든 신호가 무시되면 어떻게 되나요?

내가 아는 한 일부 신호는 프로세스를 중지/계속하고 종료/종료하는 데 사용됩니다. 모든 신호를 무시하도록 프로세스에 지시하면 어떻게 되나요? 좀비일까요, 아니면 죽일 수 없는 존재일까요?

답변1

일부 신호는 무시할 수 없습니다. SIGKILL은 항상 반응할 기회를 주지 않고 프로세스를 종료합니다. SIGSTOP은 항상 반응할 기회를 주지 않고 프로세스를 일시 중지합니다. 일부 Unix 변형은 무시하거나 처리할 수 없는 다른 신호를 제공할 수 있습니다. Linux에는 표준 KILL 및 STOP만 있습니다.

프로세스가 SIGKILL에서 살아남을 수 있는 유일한 방법은 현재 중단할 수 없는 시스템 호출 상태에 있는 경우입니다. 프로세스는 더 이상 코드를 실행할 수 없지만 시스템 호출이 완료되거나 중단 가능한 지점에 도달할 때까지 유지됩니다. 이는 일반적으로 관찰하기에는 너무 짧지 D만 드라이버 결함, 하드웨어 결함 또는 때로는 네트워크 파일 시스템을 사용하는 경우(상태의 느린 프로세스)를 볼 수 있습니다 ."kill -9"가 작동하지 않으면 어떻게 되나요?

죽일 수 없는 프로세스는 "좀비"가 아닙니다.이미실제로 존재하는 "좀비 프로세스"라는 용어는 죽은 프로세스에 해당하는 프로세스 테이블 항목을 의미합니다. 바라보다Linux에서 좀비 프로세스를 처리하는 방법

답변2

우선, 좀비는 프로세스가 PID를 제외한 모든 자원을 해제하고 최종적으로 수확(harvest), 즉 완전히 해제되기를 기다리고 있는 상태이다.

커널 프로세스에는 Task_Interruptible 상태가 있습니다. 이는 전달된 신호에 응답하지 않음을 의미합니다.

따라서 마지막으로 질문에 대해 프로세스 관리 신호를 피하기 위해 모든 신호를 마스킹하면 해당 신호는 자체적으로 유지되며 필요한 경우 관리할 수 없습니다. 이로 인해 시스템이 과부하될 수도 있습니다.

관련 정보