プロセス管理
テンプレート:OS プロセス管理とは、オペレーティングシステムの主にカーネルの重要な機能の一つで、プロセスの生成・実行・消滅を管理することである。プロセス間通信や排他制御もプロセス管理の役割である。また、プロセスへのリソースの割り当てを制御する機構でもある。
管理対象
一般にプロセスを管理対象とするが、カーネルがスレッドを直接制御する場合にはスレッドも管理対象となる。この場合のスレッドをライトウェイトプロセス(Light Weight Process)と呼ぶことがある。また、プロセスをグループ化してリソースを割り当てる機能を持つ場合、プロセスグループも管理対象となる。
主な機能
プロセスの生成にあたっては、生成するプロセスの情報を管理する領域(プロセス制御ブロック; PCB)を作成し、プロセスの優先度の決定、プロセスへの記憶領域の割り当て等を行なう。プロセスが別のプロセスから作成された場合には、その親プロセスと子プロセスの関係も保持する。
プロセスの実行に関しては、プロセスを次の三つの状態に分けて管理する。
- 実行状態
- 実行可能状態
- 待ち状態
実行可能状態にあるプロセスは、CPUに空きができた時点で実行状態に移る(ディスパッチ)。ただし、一度に実行状態に移ることができるのは一つのプロセスである。実行状態にあるプロセスは、ある一定時間(タイムスライス)経過すると、強制的に実行可能状態に移る。また、実行中に入出力処理等が始まったときは、待ち状態に移る。待ち状態にあるプロセスは、入出力処理等が完了して実行できる状態になったときに、実行可能状態に移る。このようなスケジューリングのアルゴリズムは様々なものが研究され実用化されてきた。
システムによっては、プロセスの中断・再開も可能になっている。この場合、上記の三つの状態に加えて、「実行可能中断状態」と「待ち中断状態」を含めた五つの状態で管理する。
プロセスの消滅に関しては、使用中の資源(記憶領域など)を全て返却して消滅させる。消滅させるプロセスが子プロセスを持っている場合の処理については、OSにより異なる。強制的に子プロセスを消滅させたり、子プロセスに親プロセスの消滅を伝えて子プロセスに終了させたり、あるいは、子プロセスが親プロセスの生死に関知しないようにする場合もある。