Skip to main content

Wat is een zombieproces?

Een zombieproces is een exemplaar van een computerprogramma dat een procestabelrecord behoudt ondanks het feit dat hij klaar is met uitvoeren.Gepaalde processen zoals deze worden meestal geassocieerd met Unix reg;en andere vergelijkbare besturingssystemen vanwege de manier waarop ze omgaan met onderliggende processen.Wanneer een onderliggende proces is voltooid, is de ouder meestal verantwoordelijk voor het verwijderen van het uit de procestabel.Het is meestal niet mogelijk om een zombieproces rechtstreeks te verwijderen met de opdracht kill, hoewel de ouder vaak kan worden gemaakt om het te verwijderen als de operator de Signal Child (SIGCHLD) -melding gebruikt.Als u dit niet doet, kan een zombieproces indirect worden verwijderd door de ouder te doden.

Zombie -proces is een metaforische beschrijvende term die verwijst naar de levende doden.Ter ziele gegane processen in Unix reg;en soortgelijke besturingssystemen kunnen worden gezien als analoog aan zombies doordat ze een procestabel aanwezig behouden, ondanks het niet langer uitvoeren van hun beoogde functies.Wanneer een proces is voltooid, wordt er soms gezegd dat het is gestorven, terwijl de middelen waarmee het besturingssysteem zijn procestabelallocatie herstelt, bekend kan worden als oogsten.Het ouderproces van een zombie wordt technisch geacht zijn kinderen te plukken, hoewel dit niet altijd gebeurt.

Er zijn bepaalde gevallen waarin het bestaan van een zombieproces opzettelijk of zelfs gewenst kan zijn.Nadat een onderliggende proces is gestopt met de uitvoering, moet de ouder mogelijk later een ander exemplaar van hetzelfde programma uitvoeren.Als een zombie niet uit de procestabel is verwijderd, krijgt een nieuw kind niet dezelfde identificatie (ID) toegewezen als het oude kind.Bepaalde programma's kunnen baat hebben bij of zelfs dit soort differentiatie vereisen.

Als een ouderproces het wachtopdracht niet heeft uitgevoerd om zombies te oogsten waarvoor het verantwoordelijk is, kan het mogelijk zijn om het probleem te forceren.Dit wordt meestal gedaan via de opdracht Kill en het verzenden van het SIGCHLD -signaal naar het bovenliggende proces.Als alles goed werkt, moet een bovenliggende proces dat dit signaal ontvangt zijn zombiekinderen plukken, zodat hun ID's en procestabelposities kunnen worden hergebruikt.

Onder bepaalde omstandigheden kan een ouderproces het SIGCHLD -signaal negeren.Als dit gebeurt en de operator nog steeds wenst dat de procestabel wordt gewist, kan het bovenliggende proces worden gedood.Alle zombies die het bovenliggende proces heeft gemaakt, worden vervolgens als kinderen toegewezen aan het init -proces.Aangezien Init periodiek het wachtopdracht op zijn kinderen initieert, zullen alle zombies waarvoor het verantwoordelijk is, uiteindelijk uit de procestabel worden verwijderd.