? Un processo zombie è un processo di computer su un sistema operativo Unix-based che ha terminato l'esecuzione , ma ha ancora un numero ID processo sinistra nella tabella dei processi del sistema operativo . Sono i resti di un processo più ampio o di un programma che non è riuscito a raccogliere ed eseguire tutti i comandi di uscita per quando il processo termina . Questi processi non occupano i cicli di CPU o spazio di memoria però. Causa
codice del programma difettoso porta spesso a processi non terminano correttamente , causando processi zombie derivanti programmi in esecuzione . Il programmatore non ha programmato un processo padre di utilizzare il sistema "wait" chiamare per consentire un processo figlio per eseguire in modo indipendente , mentre il padre viene sospeso . Ciò significa che il processo figlio non restituisce un messaggio di stato di uscita al genitore quando termina , in modo che il genitore non riceve l'avviso circa la cessazione , e il processo figlio diventa un processo zombie .
Considerazioni
non abbiate fretta di terminare i processi zombie , non appena li trovate . A volte i processi principali processi zombie lasciano di proposito in modo che lo stesso numero ID del processo non è dato a due processi separati durante la durata della vita del programma. Se si vede solo pochi processi zombie in un momento che non sono persistenti , i processi genitori possono eventualmente di porvi fine. Tuttavia, se il sistema inizia a rallentare , con una grande quantità di processi in esecuzione , terminare qualche processo zombie può migliorare le prestazioni .
Individuazione Zombies
Utilizzando un strumento di comando Unix per eseguire il comando " ps " - abbreviazione di stato del processo - elenca tutti i processi attualmente in esecuzione su un sistema . Qualsiasi processo indicato come " z" sotto la colonna Stat è un processo zombie . Uno qualsiasi di questi processi che esistono , mentre il processo padre o il programma è ancora in esecuzione è indicativo del codice imperfetto , mentre i processi zombie in esecuzione senza un programma genitore di solito rappresentano un bug nel sistema operativo stesso .
Uccidere gli zombie
processi zombie
conservano i numeri ID di processo nella tabella voce di processo, in modo da avere anche molti di loro fanno causare il sistema a corto di questi numeri . Tuttavia, è possibile forzatamente terminare i processi zombie per liberare i loro valori ID di processo nella tabella. Terminate loro utilizzando il comando " kill- s SIGCHLD " , dove " ppid " rappresenta l'ID di processo zombie del genitore . In alternativa , è possibile con la forza uccidere processi padre di interrompere tutti i bambini ed i processi zombie che hanno creato così .