プロセス制御ブロックとは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > 百科事典 > プロセス制御ブロックの意味・解説 

プロセス制御ブロック

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2018/10/05 08:22 UTC 版)

Jump to navigation Jump to search

プロセス制御ブロック(プロセスせいぎょブロック、Process Control BlockPCB)とは、オペレーティングシステムカーネルにおいて対応するプロセスの状態を表すデータ構造。オペレーティングシステム (OS) によっては、保護された便利な配置としてプロセス毎のカーネルスタックの先頭部分にPCBが置かれる。

なお、OSによっては「プロセス」の代わりに「タスク」という用語を使う場合があり、その場合にはタスク制御ブロック (Task Control Block, TCB) と呼ばれるが、PCBと同じ物と考えてよい。

概要

実装は様々であるが、一般的にPCBは直接/間接に以下のような項目を保持する。

  • プロセスを識別する番号(プロセス識別子、あるいはPID)
  • そのプロセスのレジスタ群の値、特に
    そのプロセスのプログラムカウンタの値
  • そのプロセスのアドレス空間(の管理データ)
  • オープンしているファイルとソケットのリスト
  • プロセス・アカウンティング情報:プロセスが最近動作した時刻、これまでに消費したCPU時間の合計など

コンテキストスイッチのとき、現在実行中のプロセスは一時停止し、他のプロセスが実行のチャンスを与えられる。カーネルは実行中のプロセスを停止し、そのときのレジスタの値をPCBにセーブし、新たに動作させるプロセスのPCBからレジスタに値をリストアする。

カレントPCB

カーネル内のコードは頻繁に現在走行中のプロセスのプロセス制御ブロック (PCB) にアクセスする。通常、グローバルなポインタ変数で現在のプロセスのPCB(カレントPCB)を指す。また、カーネル内のシステムコール処理はプロセス毎に行われるものであるため、カーネルスタックはプロセス毎に必要となる。これを簡単に管理するため、PCBとカーネルスタックを一体化させることがある。

グローバル変数を使うと間接アクセスになるため性能的に不利となる。そこで性能向上のためにカレントPCBを固定の仮想アドレスにマッピングすることがある。例えば、MIPSアーキテクチャでは 0番地の前後へのアクセスについてゼロレジスタ(内容が常にゼロ)をポインタのように扱って非常に効率的なコードを書くことができる。これを利用して仮想空間の最も大きなアドレス(32ビットならば 0xFFFFFFFF)付近にPCBとカーネルスタックをマッピングすることが多い(負のオフセットとゼロレジスタでPCBにアクセス可能)。

一般にカーネル内ではプロセス毎にスタックがあるため、そのサイズはユーザ空間コールスタックほど大きくできない。そのため、カーネル内のコードはスタック上に大きな局所変数領域を持たないよう注意しなければならないし、再帰呼び出しも避けなければならない。

マルチプロセッシングでは、各プロセッサがそれぞれ異なるプロセスを実行するため、カレントPCBもプロセッサ毎に存在する。

ライトウェイトプロセス

ユーザープロセスのマルチスレッドをカーネルが認識して処理する場合(ライトウェイトプロセス)、各スレッドがカーネル内にコンテキストを持つ。従って、PCBはプロセス全体に関わる部分(アドレス空間関連やファイル関連)とコンテキストスイッチに関わる部分に分けられ、後者はスレッド(ライトウェイトプロセス)毎に作成される。これはある意味でプロセス管理のふたつの大きな機能(プロセス毎の資源割り当て管理とプロセスあるいはライトウェイトプロセスの状態管理)に対応している。




英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「プロセス制御ブロック」の関連用語

プロセス制御ブロックのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



プロセス制御ブロックのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのプロセス制御ブロック (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。

©2025 GRAS Group, Inc.RSS