Skip to main content

Vad är en zombieprocess?

En zombieprocess är ett exempel på ett datorprogram som behåller en processtabellrekord trots att han har slutfört.Avlagda processer som dessa är vanligtvis associerade med Unix och andra liknande operativsystem på grund av hur de hanterar barnprocesser.När en barnprocess är klar med att utföra är föräldern vanligtvis ansvarig för att ta bort den från processtabellen.Det är vanligtvis inte möjligt att direkt ta bort en zombieprocess med Kill -kommandot, även om föräldern ofta kan göras för att ta bort den om operatören använder signalbarn (Sigchld).Underlåtenhet kan en zombieprocess tas bort indirekt genom att döda föräldern.

Zombie -process är en metaforisk beskrivande term som hänvisar till de levande döda.Avstängda processer i Unix och liknande operativsystem kan ses som analogt med zombies genom att de upprätthåller en processtabell närvaro trots att de inte längre utför sina avsedda funktioner.När en process är klar att utföra sägs den ibland ha dött, medan de medel som operativsystemet återvinner sin processtabellfördelning kan vara känd som skörd.Förälderprocessen för en zombie är tekniskt tänkt att skörda sina barn, även om detta inte alltid händer.

Det finns vissa fall där förekomsten av en zombie -process kan vara avsiktlig eller till och med önskan.Efter att en barnprocess har upphört genomförandet kan föräldern behöva driva en annan instans av samma program senare.Om en zombie inte har tagits bort från processtabellen kommer ett nytt barn inte att tilldelas samma identifiering (ID) som det gamla barnet.Vissa program kan dra nytta av eller till och med kräva den här typen av differentiering.

Om en överordnad process inte har genomfört väntekommandot för att skörda zombier som det är ansvarigt för, kan det vara möjligt att tvinga problemet.Detta görs vanligtvis via Kill -kommandot och skickar Sigchld -signalen till moderprocessen.Om allt fungerar korrekt, bör en överordnad process som får denna signal skörda sina zombiebarn så att deras ID och processtabellpositioner kan återanvändas.

Under vissa omständigheter kan en överordnad process ignorera Sigchld -signalen.Om detta inträffar och operatören fortfarande önskar att processtabellen rensas kan moderprocessen dödas.Alla zombies som förälderprocessen skapade kommer sedan att tilldelas som barn till initprocessen.Eftersom init regelbundet initierar väntekommandot på sina barn kommer alla zombies som det ansvarar för att tas bort från processtabellen.