Ποια είναι η διαφορά μεταξύ μιας ορφανής διαδικασίας και μιας διαδικασίας ζόμπι;
sobes.tech AI
Απάντηση από AI
Ορφανική διαδικασία (Orphan Process) — είναι μια διαδικασία της οποίας η γονική διαδικασία έχει τερματίσει πριν ολοκληρώσει την εκτέλεση της η θυγατρική διαδικασία. Η διαδικασία εκκίνησης (init, PID 1) υιοθετεί αυτόματα το ορφανό και γίνεται ο νέος της γονέας για μετέπειτα απελευθέρωση πόρων.
Ζωντανή διαδικασία (Zombie Process) — είναι μια διαδικασία που έχει ολοκληρώσει την εκτέλεσή της, αλλά η καταχώρισή της στον πίνακα διαδικασιών του πυρήνα (PCB) δεν έχει ακόμη διαγραφεί, επειδή η γονική διαδικασία δεν έχει καλέσει την κλήση συστήματος wait() ή waitpid() για να συλλέξει την κατάσταση τερματισμού της θυγατρικής. Μια τέτοια διαδικασία δεν καταναλώνει πόρους CPU, αλλά καταλαμβάνει χώρο στον πίνακα διαδικασιών.
Σύγκριση:
| Χαρακτηριστικό | Ορφανική διαδικασία | Ζωντανή διαδικασία |
|---|---|---|
| Κατάσταση | Εκτελείται (ή περιμένει να εκτελεστεί) | Έχει τερματίσει |
| Γονέας | Ο αρχικός γονέας τερμάτισε, ο νέος γονέας είναι το init (PID 1). |
Ο γονέας υπάρχει, αλλά δεν έχει καλέσει wait(). |
| Πόροι CPU | Καταναλώνει πόρους CPU για την εκτέλεση της εργασίας του. | Δεν καταναλώνει πόρους CPU. |
| Θέση στον πίνακα | Καταλαμβάνει χώρο στον πίνακα διαδικασιών ως μια κανονική διαδικασία. | Καταλαμβάνει χώρο στον πίνακα διαδικασιών μέχρι να διαβαστεί η κατάσταση από τον γονέα. |
| Διαγραφή | Θα τερματιστεί και θα καθαριστεί από το λειτουργικό σύστημα μετά το τέλος. | Παραμένει στον πίνακα διαδικασιών μέχρι ο γονέας να καλέσει wait() ή να τερματίσει. |