Apa itu proses atau utas zombie?

11

Apa itu proses zombie atau utas, dan apa yang membuatnya? Apakah saya hanya membunuh mereka, atau bisakah saya melakukan sesuatu untuk mendapatkan diagnosa tentang bagaimana mereka mati?

Pengembang Don
sumber
13
Anda memotong kepala mereka. Atau Anda membakarnya. Hanya itu caranya.
Simon Bergot
"Kalahkan atau bakar mereka, mereka naik cukup mudah" ...
TMN

Jawaban:

17

Apa itu proses zombie atau utas, dan apa yang membuatnya?

Proses zombie adalah proses mati.
OS hanya menyimpan informasi di sekitar sehingga orang tua dapat memeriksa kode keluar dari proses di beberapa titik kemudian karena OS menyimpan informasi tentang mereka dan dengan demikian mereka muncul ketika melihat proses.

Apakah saya baru saja membunuh mereka,

Tidak. Mereka sudah mati.
OS akan membersihkan ketika orang tua meninggal atau mendapatkan kode status dari OS.

atau bisakah saya melakukan sesuatu untuk mendapatkan diagnosa tentang bagaimana mereka mati?

Tidak. Orang tua bisa tetapi tidak dengan shell.

Martin York
sumber
4

Sebuah utas zombie adalah utas yang telah menghentikan eksekusi tetapi tidak diakhiri dengan bersih. Ini mengalokasikan sumber daya yang digunakan oleh utas tetapi menyimpan entri di utas / tabel proses.

Secara teoritis, utas zombie keluar dari status ini dengan menjalankan _join (POSIX). Ini berarti bahwa ketika utama Anda selesai, proses zombie akan terbunuh dengan program ini.

Yannick Müller
sumber
2

Proses zombie adalah proses yang keduanya menghentikan eksekusi dan telah dihapus dari daftar proses yang dijadwalkan , tetapi belum dihapus. Bergantung pada OS, tt mungkin atau mungkin masih belum memiliki berbagai sumber daya ditugaskan untuk itu, dan mungkin ditanya, tetapi tidak akan berjalan.

Beberapa OS'es (sesuai desain) tidak diizinkan untuk membuat atau menghapus sumber daya secara dinamis di luar titik peristiwa tertentu (VxWorks Cert misalnya). Sistem seperti itu sering mengatasi keterbatasan ini dengan menggunakan kumpulan sumber daya yang telah dialokasikan sebelumnya dari mana mereka mengambil, mengembalikan, dan menggunakan kembali barang-barang. Namun, ketika proses pada sistem seperti itu berakhir, itu tidak dapat dihapus dan sebaliknya akan menjadi zombified (dihentikan dan dihapus dari daftar penjadwalan).

Semoga ini membantu.

Sparky
sumber
0

Ketika utas / proses terbunuh, tetapi masih ada catatan di tabel terkait tentang hal itu, itu menjadi zombie.

Ini bisa terjadi ketika, misalnya, proses induk membuat proses anak, tetapi berakhir sebelum anak. Ketika proses anak berakhir, ia memberi tahu orang tua tentang penghentian. Setelah itu catatan proses anak dihapus dari tabel terkait. Tapi orangtuanya sudah berakhir, jadi catatannya masih ada di tabel.

Tidak ada cara untuk menyingkirkan zombie kecuali reboot

superM
sumber
1
Reboot tidak diperlukan. Cukup bunuh proses induk dan zombie akan dibersihkan oleh sistem secara otomatis.
Kevin Panko