Sobes.tech
Middle

Aký stav musí proces získať od rodičovského procesu, aby sa stal zombie?

sobes.tech AI

Odpoveď od AI

Proces sa zombí alebo "duchovný proces" sa stáva, keď ukončí svoju činnosť (prejde do stavu EXIT_ZOMBIE), ale jeho záznam v tabuľke procesov ešte stále existuje, čakajúc na to, aby jeho rodičovský proces prečítal jeho stav ukončenia pomocou systémového volania wait() alebo waitpid(). Do tej doby zaberá minimálne zdroje (prakticky len záznam v tabuľke procesov), ale úplne neuvoľňuje s ním spojené zdroje.

V tabuľke procesov je takýto proces zvyčajne zobrazený s ukazovateľom <defunct>.

# Príklad výstupu príkazu ps, ukazujúci zombie proces
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
...
someuser  1234  0.0  0.0      0     0 pts/0    Z+   10:00   0:00 [defunct_process]
...

Aby zombie proces zmizol, musí rodičovský proces zavolať wait() alebo waitpid(). Ak rodičovský proces skončí skôr, ako prečíta stav svojich zombie detí, tieto deti sa stanú deťmi procesu init (s ID 1), ktorý automaticky volá wait() pre svoje deti, čím sa zombie procesy vyčistia.

Hlavný stav, ktorý proces dostáva od rodičovského procesu, aby sa stal zombie, je stav ukončenia, ktorý rodič ešte neobslúžil pomocou volaní wait*.