ざっくりと
- 終了したはずのプロセス
- システムリソースを占有
- 特別な手順で対処
ゾンビプロセスは、終了してもリソースを占有するプロセスです。
概要説明
ゾンビプロセスとは終了したはずのプロセスがシステム上に残る現象である。 なぜならば、通常の操作では消去できず、CPUやメモリーなどを占有するからだ。
例えばWindowsではタスクマネージャで強制終了をかけたり、再起動を行ったりする必要がある。そしてLinuxでは親プロセスにkillコマンドで終了と入力して、応答しないようなら強制終了させることで、子プロセスがinitプロセス管轄となる。
つまりゾンビプロセスはシステムのパフォーマンスに影響を及ぼす可能性がある。だからその対処法を知ることが重要である。
職業職種
システム管理者
システム管理者は、ゾンビプロセスを理解して対処する必要がある。なぜなら、これらのプロセスはシステムパフォーマンスに影響を及ぼす可能性があるからだ。例えばタスクマネージャやtaskkillコマンドを使って強制終了をかける。
プログラマ
プログラマも、ゾンビプロセスの存在とその対処法を知っておくべきだ。なぜなら、自分の作成したプログラムが原因でゾンビプロセスを生じさせる可能性があるからだ。例えば親プロセスにkillコマンドで終了と入力する。
パソコンユーザー
一般的なパソコンユーザーも、ゾンビプロセスがパソコンのパフォーマンスに影響を及ぼす可能性があることを理解しておくべきだ。なぜなら、ゾンビプロセスが存在するとパソコンの動作が遅くなる可能性があるからだ。例えば再起動を行う。
ゾンビプロセスは、名前の由来は、そのまま「ゾンビ」です。なぜなら、ゾンビのように生き返ってしまうプロセスだからです。
類似語
オーファンプロセス
オーファンプロセスは、親プロセスが終了した後も残るプロセスである。なぜなら、親プロセスが終了した後に子プロセスが残ってしまい、新たな親プロセスが見つからないためだ。例えば、プログラムの途中で親プロセスがクラッシュした場合など。
デーモンプロセス
デーモンプロセスは、ユーザーの介入を必要とせずにバックグラウンドで動作するプロセスである。なぜなら、これらのプロセスはシステムが必要とする様々なタスク(ネットワークリクエストの処理など)を自動的に行うためだ。例えば、メールサーバーやWebサーバーなどのプロセス。
スレッド
スレッドは、プロセス内で独立して動作する作業の単位である。なぜなら、複数のスレッドが同時に動作することで、プロセスは複数のタスクを並行して実行することができるからだ。例えば、ユーザーインターフェースを担当するスレッドと、計算処理を担当するスレッドなど。
反対語
アクティブプロセス
アクティブプロセスは、現在実行中のプロセスである。なぜなら、これはゾンビプロセスの正反対で、CPUを占有し、具体的なタスクを実行しているからだ。例えば、ブラウザやワードプロセッサーなどのアプリケーション。
親プロセス
親プロセスは、子プロセスを生み出し、管理するプロセスである。なぜなら、ゾンビプロセスは親プロセスから見捨てられているが、親プロセスは子プロセスを活動させる役割を持つからだ。例えば、オペレーティングシステムやシステムサービスなど。
ユーザープロセス
ユーザープロセスは、ユーザーが直接操作するプロセスである。なぜなら、これはゾンビプロセスとは反対に、ユーザーの操作により終了させることができるからだ。例えば、ゲームやエディターなどのプログラム。
会話例
友達とPCの話をしている場面
「なんでPCが急に重くなったんだろう?」
「ゾンビプロセスが原因かもしれないね。プロセスが終了してるのに、まだシステムに残ってるやつのことさ。」
コンピューター教室の授業中
「先生、ゾンビプロセスって何ですか?」
「良い質問だね。ゾンビプロセスはプロセスが終了したのにシステム上でまだ存在している状態のことを言うんだよ。」
ソフトウェア開発者同士の会話
「ゾンビプロセス、どうやって防ぐんだっけ?」
「Linuxだと親プロセスにkillコマンドで終了させて、強制終了させればいいよ。Windowsだと、タスクマネージャかtaskkillコマンドで強制終了させるか、再起動させればいいんだ。」
注意点
ゾンビプロセスを対処する時の注意点は、適切な方法で終了させることである。なぜならば、適切な方法で終了させないと、ゾンビプロセスは再度発生する可能性があるからだ。
例えば、Windowsではタスクマネージャを使ってゾンビプロセスを強制終了させる。そして、強制終了ができない場合は再起動を行う。だから、適切な方法で対処しよう。
ゾンビプロセスとオーファンプロセスは、間違えやすいので注意しましょう。
ゾンビプロセスは処理が終了しているけれどもシステム上に残ってしまっているプロセスです。
一方、オーファンプロセスは親プロセスが終了した後もシステム上に残ってしまっているプロセスです。
macOSでの対応
- ターミナルを開く。
-
ps aux | grep Z
と入力し、エンターキーを押す。これにより、システム上のゾンビプロセスがリスト表示される。 - リストに表示されたプロセスを確認し、ゾンビプロセスのPID(プロセスID)とPPID(親プロセスID)をメモする。
-
親プロセスを終了させるには、ターミナルに
kill -HUP [PPID]
を入力。[PPID]の部分は前のステップでメモした親プロセスのIDに置き換える。
コメント
ゾンビプロセスを知れて助かりました。