Skip to main content

Hvad er en zombie -proces?

En zombie -proces er et eksempel på et computerprogram, der bevarer en processtabelrekord på trods af at det er færdigt med at udføre.Defunct processer som disse er typisk forbundet med Unix og andre lignende operativsystemer på grund af den måde, de håndterer børneprocesser på.Når en børneproces er færdig med at udføre, er forælderen typisk ansvarlig for at fjerne den fra processtabellen.Det er normalt ikke muligt direkte at fjerne en zombie -proces med Kill -kommandoen, skønt forælderen ofte kan laves for at fjerne den, hvis operatøren bruger signalbarnet (SIGCHLD) -anmeldelse.I mangel af dette kan en zombie -proces fjernes indirekte ved at dræbe forælderen.

Zombie -processen er et metaforisk beskrivende udtryk, der henviser til de levende døde.Nedlagte processer i Unix Og lignende operativsystemer kan ses som analoge med zombier, idet de opretholder en processtabel -tilstedeværelse på trods af ikke længere at udføre deres tilsigtede funktioner.Når en proces er færdig med at udføre den, siges den undertiden at være død, mens de midler, hvorpå operativsystemet gendanner sin procestabelfordeling, kan være kendt som høst.Forælderprocessen for en zombie er teknisk formodet at høste sine børn, skønt dette ikke altid sker.

Der er visse tilfælde, hvor eksistensen af en zombie -proces kan være forsætlig eller endda ønsket.Efter at en børneproces er ophørt med henrettelse, kan forælderen muligvis køre en anden forekomst af det samme program senere.Hvis en zombie ikke er blevet fjernet fra processtabellen, får et nyt barn ikke den samme identifikation (ID) som det gamle barn.Visse programmer kan drage fordel af eller endda kræve denne form for differentiering.

Hvis en forælderproces ikke har udført ventetidskommandoen til at høste zombier, den er ansvarlig for, kan det være muligt at tvinge problemet.Dette gøres typisk via Kill -kommandoen og sender SIGCHLD -signalet til overordnede processen.Hvis alt fungerer korrekt, skal en overordnet proces, der modtager dette signal, høste sine zombiebørn, så deres ID'er og processtabelpositioner kan genbruges.

Under visse omstændigheder kan en overordnet proces ignorere SIGCHLD -signalet.Hvis dette sker, og operatøren stadig ønsker, at processtabellen ryddes, kan overordnede processen dræbes.Eventuelle zombier, som overordnede processen oprettede, tildeles derefter som børn til init -processen.Da Init init initierer ventetidskommandoen på sine børn, vil eventuelle zombier, den er ansvarlig for, til sidst blive fjernet fra processtabellen.