×
システム構成・性能・ソフトウェア

プロセスの最も重要な特徴の一つは「独立性」です。OSは仮想メモリという技術を用いて、各プロセスに対して専用の独立したメモリ空間(作業部屋)を与えます。これにより、あるプロセスに不具合が発生してクラッシュしたり、悪意のあるプログラムが他のプロセスのデータを盗み見ようとしたりしても、別のプロセスのメモリ領域には直接アクセスできないように厳格に保護されています。しかし、この独立性の強さは、複数のプロセス同士でデータをやり取りして連携したい場合には壁となります。そのため、プロセス間で通信を行う場合には、OSが用意した「プロセス間通信(IPC:Inter-Process Communication)」という特別な仕組み(共有メモリ、パイプ、メッセージキューなど)を経由する必要があります。また、プロセスを新規に生成したり切り替えたりする処理には、メモリ空間の構築や管理情報の保存といった多大なオーバーヘッド(処理の負担)が伴うという側面も持っています。

試験でのポイント

試験では、プロセスの状態遷移モデルや、後述する「スレッド」との比較が非常によく問われます。

  • プロセスの状態遷移:プロセスは生成されてから終了するまでに、「実行可能状態(Ready)」「実行状態(Running)」「待機状態(WaitまたはBlock)」という3つの基本的な状態を行き来します。CPUの割り当てを待っているのが「実行可能状態」、実際にCPUを使っているのが「実行状態」、そしてディスクからのデータ読み込みやユーザーの入力待ちなどで一時停止しているのが「待機状態」です。この状態図を正確に思い描けるようにしておきましょう。
  • コンテキストスイッチの負荷:あるプロセスから別のプロセスへCPUの実行権を切り替えることを「コンテキストスイッチ」と呼びます。この切り替え時には、古いプロセスの状態をPCBに保存し、新しいプロセスの状態をPCBから復元するという処理が発生するため、頻繁に切り替わりすぎるとシステム全体の処理効率が低下(スラッシング等の原因)する点が問われます。

関連する用語

スレッド、コンテキストスイッチ、仮想メモリ