プロセス制御ブロック(PCB )は、プロセス記述子とも呼ばれ、コンピュータのオペレーティングシステムがプロセスに関するすべての情報を格納するために使用するデータ構造です。
プロセスが作成される(初期化またはインストールされる)と、オペレーティングシステムは対応するプロセス制御ブロックを作成し、プロセスの状態(新規、準備完了、実行中、待機中、または終了済み)を指定および追跡します。プロセス情報を追跡するために使用されるため、PCB はコンテキスト スイッチングにおいて重要な役割を果たします。[ 1 ]
オペレーティングシステムのカーネルは、プロセス テーブルに PCB を格納します。[ 2 ]
PCB(プロセス制御ブロック)の役割はプロセス管理において極めて重要です。ほとんどの公益事業者、特にスケジューリングやリソース管理に関わる事業者は、PCBにアクセスしたり、変更を加えたりします。
マルチタスクオペレーティングシステムでは、PCBは正確かつ効率的なプロセス管理に必要なデータを保存します。[ 4 ]これらの構造の詳細はシステムに依存しますが、共通要素は主に次の3つのカテゴリに分類されます。
メモリ、入出力デバイス、ファイル、プロセスなど、関連する各エンティティごとにステータステーブルが存在します。
例えば、メモリテーブルには、各プロセスへの主メモリと二次(仮想)メモリの割り当て、異なるプロセス間で共有されるメモリ領域へのアクセス権限などに関する情報が含まれています。I/Oテーブルには、デバイスの可用性やプロセスへの割り当て、I/O操作の状態、I/O操作に使用されるメモリバッファの位置などを示すエントリが含まれる場合があります。
プロセス識別データには、プロセスの一意の識別子(ほぼ例外なく整数)と、マルチユーザー・マルチタスクシステムにおいては、親プロセスの識別子、ユーザー識別子、ユーザーグループ識別子などのデータが含まれます。プロセスIDは、上記で定義したテーブルを相互参照するためによく使用されるため、特に重要です。例えば、どのプロセスがどのI/Oデバイスやメモリ領域を使用しているかを示すために用いられます。
プロセス状態データは、プロセスが中断されたときのその状態を定義し、OSが後でそのプロセスを再開できるようにします。これには常に、汎用CPUレジスタの内容、CPUプロセス状態ワード、スタックポインタ、フレームポインタなどが含まれます。コンテキストスイッチ中は、実行中のプロセスが停止され、別のプロセスが実行されます。カーネルは、実行中のプロセスの実行を停止し、ハードウェアレジスタの値をPCBにコピーし、新しいプロセスのPCBから取得した値でハードウェアレジスタを更新する必要があります。
プロセス制御情報は、OSがプロセス自体を管理するために使用されます。これには以下が含まれます。
PCBは、通常のプロセスアクセスから保護されたメモリ領域に配置する必要があります。一部のオペレーティングシステムでは、PCBはプロセススタックの最下部に配置されます。[ 5 ]
{{cite book}}: CS1 maint: 複数の名前: 著者リスト (リンク)