プロセス管理
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2024/11/29 15:12 UTC 版)
この記事は英語版の対応するページを翻訳することにより充実させることができます。(2024年11月) 翻訳前に重要な指示を読むには右にある[表示]をクリックしてください。
|
オペレーティングシステム |
---|
主要項目 |
プロセス管理(プロセスかんり)とは、オペレーティングシステムの主にカーネルの重要な機能の一つで、プロセスの生成・実行・消滅を管理することである。プロセス間通信や排他制御もプロセス管理の役割である。また、プロセスへのリソースの割り当てを制御する機構でもある。
管理対象
一般にプロセスを管理対象とするが、カーネルがスレッドを直接制御する場合にはスレッドも管理対象となる。この場合のスレッドをライトウェイトプロセス(Light Weight Process)と呼ぶことがある。また、プロセスをグループ化してリソースを割り当てる機能を持つ場合、プロセスグループも管理対象となる。
主な機能
プロセスの生成にあたっては、生成するプロセスの情報を管理する領域(プロセス制御ブロック; PCB)を作成し、プロセスの優先度の決定、プロセスへの記憶領域の割り当て等を行なう。プロセスが別のプロセスから作成された場合には、その親プロセスと子プロセスの関係も保持する。
プロセスの実行に関しては、プロセスを次の三つの状態に分けて管理する。
- 実行状態
- 実行可能状態
- 待ち状態
実行可能状態にあるプロセスは、CPUに空きができた時点で実行状態に移る(ディスパッチ)。ただし、一度に実行状態に移ることができるのは一つのプロセスである。実行状態にあるプロセスは、ある一定時間(タイムスライス)経過すると、強制的に実行可能状態に移る。また、実行中に入出力処理等が始まったときは、待ち状態に移る。待ち状態にあるプロセスは、入出力処理等が完了して実行できる状態になったときに、実行可能状態に移る。このようなスケジューリングのアルゴリズムは様々なものが研究され実用化されてきた。
システムによっては、プロセスの中断・再開も可能になっている。この場合、上記の三つの状態に加えて、「実行可能中断状態」と「待ち中断状態」を含めた五つの状態で管理する。
プロセスの消滅に関しては、使用中の資源(記憶領域など)を全て返却して消滅させる。消滅させるプロセスが子プロセスを持っている場合の処理については、OSにより異なる。強制的に子プロセスを消滅させたり、子プロセスに親プロセスの消滅を伝えて子プロセスに終了させたり、あるいは、子プロセスが親プロセスの生死に関知しないようにする場合もある。
関連項目
プロセス管理
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/09/16 14:38 UTC 版)
詳細は「プロセス管理」を参照 カーネルの主な仕事はアプリケーションの実行を許可し、ハードウェア抽象化などの機能によってそれをサポートすることである。 プロセスは、アプリケーションがアクセスできるメモリの範囲を定義する。カーネルのプロセス管理は、ハードウェアの持つメモリ保護機構を考慮しなければならない。 カーネルはアプリケーションを実行するためアドレス空間を設定し、アプリケーションのコードを含むファイルをメモリにロードし、プログラムのためのコールスタックを設定し、そのプログラムの所定の位置に制御を渡すことで実行を開始する。 マルチタスク可能なカーネルは、ユーザーから見て実際にそのコンピュータが同時実行できるプロセス数よりも、多数のプロセスが同時並行して実行されているかのように見せかける。一般にシステムが同時並行して実行できるプロセス数は、そのシステムの持つCPU数に等しい(同時マルチスレッディングをサポートしている場合はその限りではない)。 プリエンプティブ・マルチタスクシステムでは、カーネルは各プログラムにタイムスライス(そのプログラムがCPU上で実行される連続時間)を与え、プロセスからプロセスへと高速に切り換えていくので、ユーザーから見ればそれらのプロセスが同時並行して実行されているように見えるのである。カーネルは次に実行すべきプロセスを決定し、タイムスライスの長さを決定するスケジューリングアルゴリズムを持つ。一般にプロセスには優先度が設定される。カーネルはそれらのプロセス間の通信手段も提供する。これはプロセス間通信 (IPC) と呼ばれ、パイプ、共有メモリ、メッセージ、RPC、ソフトウェア割り込みなどがある。 他に協調型マルチタスクもあり、各プロセスは自らカーネルに制御を戻すまで割り込まれずに実行を続けることができる。制御をカーネルに戻すことを "yielding" と呼び、プロセス間通信の際や何らかのイベントを待つ際に行われ、そのときにカーネルが別のプロセスを動作させる。古い Windows や Mac OS はこの方式だったが、コンピュータの性能向上に伴ってプリエンプティブ方式に切り換えた。 オペレーティングシステムは、マルチプロセッシング(SMPやNUMA)をサポートすることもある。この場合、複数のプログラムやスレッドが複数のプロセッサ上で動作する。そのようなシステムでカーネルを動作させる場合、「リエントラント(再入可能)」あるいは「割り込み可能」になるよう大幅な改造が必要となる。これはつまり、何か処理をしている最中に他からも要求を受け付けるということである。この改造ができれば、異なるプロセッサ上で動作するプログラムが同時にカーネルを呼び出しても大丈夫になる。カーネルは複数のプロセッサからのメモリアクセスを同期させる方法(スピンロックなど)も提供しなければならない。これはメモリ管理とプロセス管理にまたがる問題である。
※この「プロセス管理」の解説は、「カーネル」の解説の一部です。
「プロセス管理」を含む「カーネル」の記事については、「カーネル」の概要を参照ください。
プロセス管理と同じ種類の言葉
固有名詞の分類
- プロセス管理のページへのリンク