プロセスの解説(基本情報技術者シラバス用語)

目次

プロセスとは

プロセスとは、OS(オペレーティングシステム)から見て、現在実行されている「プログラムの実行単位(実行中のプログラム)」のことです。プログラムそのものはハードディスクなどの記憶装置に保存されている静的なデータですが、これをダブルクリックなどして起動し、メモリ上に展開されてCPUによって処理されている状態のものをプロセスと呼びます。各プロセスには個別のメモリ領域(作業スペース)が割り当てられ、他のプロセスから直接干渉されないように保護されています。

具体例

  • タスクマネージャーでの確認:Windowsで「Ctrl + Shift + Esc」を押してタスクマネージャーを開くと、動作中のアプリ(Chrome、Excel、音楽プレイヤーなど)がリストで並んでいます。これらの一つひとつが「プロセス」です。
  • ブラウザの複数起動:ブラウザで複数のタブを開いている際、タブごとに個別のプロセスが割り当てられることがあります。これにより、あるタブでWebページがフリーズしても、ブラウザ全体が道連れになって強制終了するのを防ぐことができます。

もう少し詳しく

コンピュータの専門的な文脈において「プロセス」とは、ハードディスクなどの補助記憶装置に格納されている「静的なプログラム」が、メモリ(主記憶装置)上に読み込まれ、CPUによって「動的に実行されている状態」を指します。OSはシステム上で動作する多数のプロセスを管理するために、「プロセス制御ブロック(PCB:Process Control Block)」という管理領域をメモリ内に作成します。ここには、そのプロセスの現在の状態(実行中、待機中など)、プロセスの識別子(プロセスID)、割り当てられたメモリ領域のアドレス、プログラムカウンタの値など、実行を再開するために必要なあらゆる管理情報が保存されています。

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

試験でのポイント

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

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

関連する用語

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

読んだ内容を10問練習と実技で確認

記事で理解した用語を、StudyQuestの演習とクラウド実技ラボで定着させます。

10問練習 実技ラボ