Sobes.tech
Middle

Кадом ҳолат бояд раванди аз раванди падарӣ бигирад, то зомби шавад?

sobes.tech AI

Ҷавоб аз AI

Процес, зомби ёки "қалпоқ процес" бўлиб, у ўз ижроини тугатганда ( EXIT_ZOMBIE ҳолатига ўтганда), аммо унинг қайдномаси процесслар жадвалида ҳали ҳам мавжуд бўлиб, унинг ота процесси унинг якунланиш ҳолатини wait() ёки waitpid() систем қўнғироғи орқали ўқишини кутади. Бу вақтгача, у минимал ресурслар эгаллайди (ҳақиқатан ҳам фақат процесслар жадвалидаги қайднома), аммо у билан боғлиқ ресурсларни тўлиқ бўшашга йўл қўймайди.

Процесслар жадвалида, бундай процесс одатда <defunct> кўрсаткичи билан кўрсатилади.

# ps командаси чиқиши, зомби-рақамли процесстуриш
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]
...

Зомби-рақамли процесстуриш учун, ота процесси wait() ёки waitpid() чақириши керак. Агар ота процесси ўз зомби болаларининг ҳолатини ўқишдан олдин тугаса, бу болалар init процесси (ID 1) болаларига айланади, у автоматик равишда wait() чақириб, зомби-рақамли процесларни тозалайди.

Шу тариқа, процесстуриш учун отадан олган асосий ҳолат, у зомбига айланиши учун, тугаш ҳолати бўлиб, ота ҳали wait* чақиришлари орқали уни ишлов бермаган бўлади.