Nwlapcug.com


Che cosa è un processo di Zombie?

Un processo di zombie è un processo di computer su un sistema operativo basato su Unix che ha terminato l'esecuzione, ma ancora ha lasciato un numero di ID di processo nella tabella di processo del sistema operativo. È i resti di un più ampio processo o programma che non è riuscito a raccogliere ed eseguire tutti i comandi di uscita per quando termina il processo. Questi processi non prendono però eventuali cicli di CPU o spazio di memoria.

Causa

Codice di programma difettoso conduce spesso ai processi non terminare correttamente, con conseguente processi zombie derivanti in programmi in esecuzione. Il programmatore non ha programmato un processo padre di utilizzare la chiamata di sistema "wait" per consentire un processo figlio esecuzione indipendente mentre il padre è stato sospeso. Ciò significa che il processo figlio non restituisce un messaggio di stato uscita al padre quando termina, così il padre non riceve mai avviso sulla cessazione, e il processo figlio diventa un processo di zombie.

Considerazioni

Non abbiate fretta di terminare processi zombie, non appena li trovate. A volte i processi padre lasciano zombie processi apposta affinché lo stesso numero di ID di processo non è dato a due processi separati durante la durata del programma. Se vedete solo alcuni processi zombie alla volta che non sono persistenti, i processi padre possono terminare alla fine li. Tuttavia, se il tuo sistema inizia a rallentare con una grande quantità di processi in esecuzione, che chiude alcuni zombie processo può migliorare le prestazioni.

Individuazione di zombie

Utilizzando uno strumento di comando Unix per eseguire il comando "ps" - lo stato del processo breve per..--elenca tutti i processi attualmente in esecuzione su un sistema. Qualsiasi processo elencato come "z" nella colonna Stat è un processo non valido. Uno di questi processi che esistono mentre il padre di processo o programma è ancora in esecuzione è indicativo del codice difettoso, mentre processi zombie in esecuzione senza un programma padre di solito rappresentano un bug nel sistema operativo stesso.

Uccidere gli zombie

Processi zombie conservano numeri di ID di processo nella tabella di voce del processo, quindi, avendo anche molti di loro fare causare il sistema a corto di questi numeri. Tuttavia, è possibile terminare forzatamente processi zombie per liberare i loro valori di ID di processo nella tabella. Li terminare utilizzando il comando "kill -s SIGCHLD < ppid >", dove "ppid" rappresenta lo zombie del genitore ID del processo In alternativa, si possono uccidere forzatamente i processi padre per terminare tutti i bambini e zombie processi hanno creato pure.