Middle
Qual è la differenza tra un processo orfano e un processo zombie?
sobes.tech AI
Risposta dell'AI
Processo orfano (Orphan Process) — è un processo il cui processo genitore si è concluso prima che il processo figlio completasse la sua esecuzione. Il processo di init (PID 1) adotta automaticamente l'orfano e diventa il suo nuovo genitore per la successiva liberazione delle risorse.
Processo zombie (Zombie Process) — è un processo che ha terminato la sua esecuzione, ma la sua voce nella tabella dei processi del kernel (PCB) non è ancora stata rimossa, poiché il processo genitore non ha chiamato la system call wait() o waitpid() per raccogliere lo stato di terminazione del processo figlio. Tale processo non consuma risorse CPU, ma occupa spazio nella tabella dei processi.
Confronto:
| Caratteristica | Processo orfano | Processo zombie |
|---|---|---|
| Stato | In esecuzione (o in attesa di esecuzione) | Terminato |
| Genitore | Il genitore originale è terminato, il nuovo genitore è init (PID 1). |
Il genitore esiste, ma non ha chiamato wait(). |
| Risorse CPU | Consuma risorse CPU per svolgere il suo compito. | Non consuma risorse CPU. |
| Posto nella tabella | Occupa spazio nella tabella dei processi come un processo normale in esecuzione. | Occupa spazio nella tabella dei processi finché il suo stato non viene letto dal genitore. |
| Eliminazione | Verrà terminato e pulito dal sistema operativo dopo la conclusione. | Rimane nella tabella dei processi finché il genitore non chiama wait() o finché il genitore non termina (in tal caso diventa orfano init e sarà pulito). |