ゾンビプロセスまたはスレッドとは何ですか?


11

ゾンビプロセスまたはスレッドとは何ですか?私は彼らを殺すだけですか、それとも彼らがどのように死んだかについて診断を得るために何かをすることができますか?


13
あなたは彼らの頭を切った。またはそれらを燃やします。それが唯一の方法です。
サイモンベルゴ

「ビート 'またはそれらを燃やす、彼らは非常に簡単に行く」
TMN

回答:


17

ゾンビプロセスまたはスレッドとは何ですか?

ゾンビプロセスはデッドプロセスです。
OSは情報を保持しているだけなので、後の時点で親がプロセスの終了コードを確認できます。そのため、OSはプロセスに関する情報を保持しているため、プロセスを見たときに表示されます。

私は彼らを殺しますか

いいえ。彼らはすでに死んでいます。
親が死ぬか、OSからステータスコードを取得すると、OSはクリーンアップします。

または私は彼らがどのように死んだかについて診断を得るために何かをすることができますか?

いいえ。親はシェルを使用できますが、使用することはできません。


4

ゾンビスレッドは、実行を終了したが、正常に終了しなかったスレッドです。スレッドが使用するリソースの割り当てを解除しますが、スレッド/プロセステーブルにエントリを保持します。

理論的には、_join(POSIX)を実行することにより、ゾンビスレッドはこのステータスを終了します。メインが終了すると、ゾンビプロセスはプログラムで強制終了されます。


2

ゾンビプロセスは、実行を終了し、スケジュールれたプロセスのリストから削除されたが、まだ削除されていないプロセスです。OSによっては、ttにさまざまなリソースがまだ割り当てられている場合と割り当てられていない場合があり、クエリを実行できますが、実行はされません。

一部のOS(設計上)は、特定のイベントポイント(VxWorks Certなど)を超えてリソースを動的に作成または削除することを許可されていません。このようなシステムは、事前に割り当てられたリソースのプールを使用してアイテムを取得、返却、再利用することにより、この制限を回避することがよくあります。ただし、そのようなシステム上のプロセスが終了すると、削除することはできず、代わりにゾンビ化されます(終了し、スケジューリングリストから削除されます)。

お役に立てれば。


0

スレッド/プロセスは強制終了されますが、対応するテーブルにまだそのレコードが残っている場合、ゾンビになります。

これは、たとえば、親プロセスが子プロセスを作成し、子プロセスの前に終了する場合に発生する可能性があります。子プロセスが終了すると、終了について親に通知します。その後、子プロセスのレコードが対応するテーブルから削除されます。ただし、親はすでに終了しているため、レコードはテーブルに残ります。

ゾンビを取り除く方法はありませんが、


1
再起動は必要ありません。親プロセスを強制終了するだけで、ゾンビはシステムによって自動的にクリーンアップされます。
ケビン・パン粉
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.