Кадом ҳолат бояд раванди аз раванди падарӣ бигирад, то зомби шавад?
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* чақиришлари орқали уни ишлов бермаган бўлади.