Hvad er en Zombie-proces?
En zombie-proces er et eksempel på et computerprogram, der bevarer en processtabeloptagelse på trods af at den er færdig med at udføre. Nedfældede processer som disse er typisk forbundet med Unix® og andre lignende operativsystemer på grund af den måde, de håndterer underordnede processer. Når en barneproces er færdig med at udføre, er forælderen typisk ansvarlig for at fjerne den fra procestabellen. Det er normalt ikke muligt direkte at fjerne en zombie-proces med kill-kommandoen, skønt overordnede ofte kan gøres for at fjerne den, hvis operatøren bruger signalbarn (SIGCHLD) anmeldelse. I modsat fald kan en zombie-proces fjernes indirekte ved at dræbe forælderen.
Zombie-proces er et metaforisk beskrivende udtryk, der henviser til de levende døde. Nedfældede processer i Unix® og lignende operativsystemer kan ses som analoge med zombier, idet de opretholder en procesbordtilstedeværelse på trods af, at de ikke længere udfører deres tilsigtede funktioner. Når en proces er færdig med at udføre, siges det undertiden at den er død, mens de midler, hvormed operativsystemet genvinder sin processtabelallokering, kan kaldes høst. Forældreprocessen for en zombie formodes teknisk at høste sine børn, selvom dette ikke altid sker.
Der er visse tilfælde, hvor eksistensen af en zombie-proces kan være forsætlig eller endda ønsket. Når en barneproces er ophørt med udførelse, kan det være nødvendigt at forælderen kører en anden forekomst af det samme program senere. Hvis en zombie ikke er blevet fjernet fra processtabellen, tildeles et nyt barn ikke den samme identifikation (ID) som det gamle barn. Visse programmer kan drage fordel af eller endda kræve denne slags differentiering.
Hvis en overordnet proces ikke har udført ventekommandoen for 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 den overordnede proces. Hvis alt fungerer korrekt, skal en forældreproces, der modtager dette signal, høste sine zombiebørn, så deres ID'er og procesbordspositioner kan genbruges.
Under visse omstændigheder kan en overordnet proces ignorere SIGCHLD-signalet. Hvis dette sker, og operatøren stadig ønsker, at procestabellen skal ryddes, kan overordnede proces dræbes. Eventuelle zombier, som forældreprocessen oprettes, tildeles derefter som børn til initprocessen. Da init periodisk indleder ventekommandoen på dets børn, fjernes eventuelle zombier til sidst fra processtabellen.