プロセスとは
一般的に、プロセス(process)とは「経過」「過程」「手順」などの意味がある英単語ですが、ITの分野におけるプロセスとは、実行中のプログラムのことを指します。例えば、エクスプローラーやChromeを起動しているとプロセスになります。プロセスは、Windowsの場合、Windowsマークから「タスクマネージャー」を起動し、プロセスタグを開くと確認できます。
※Windows10のタスクマネージャー
プロセスの役割
プロセスの役割には、以下のようなものがあります。
マルチタスクの実現
CPU時間を高速で各プロセスに割り振ることで、複数のプロセスを同時に実行しているように見せています。CPU時間とは、プロセスがCPU(中央処理装置)を使って処理を行った時間の長さのことです。あるプロセスがCPUを使い終わってデータの入出力の処理に移ると、他のプロセスがCPUを使い始めることで、効率よくCPUを活用します。
メモリ管理
各プロセスは独自のメモリ領域を持っており、これによってプロセス間の干渉を防ぎます。1つのプロセスに問題が起こっても他のプロセスへ影響しないようにメモリを保護し、安全に実行できるようにします。
状態管理
プロセスは、実行中、待機中、終了などの状態を持っています。プロセスには優先度があり、優先度が高ければ他のプロセスを中止して実行を始めることができます。これらを管理することで、システム全体の動作を制御しています。
プロセス間通信
プロセス間通信は「IPC(Inter-Process Communication)」とも呼びます。プロセス間通信とは、実行中のプログラム、すなわちプロセス同士がデータのやり取りをするための仕組みです。プロセスは直接データの共有はできないため、プロセス間通信によってやり取りします。
プロセス間通信には、以下のような手法があります。
メッセージキューイング
プロセス間でメッセージを送受信するためのキュー()を使用します。送信者と受信者の間にキューがあるため、直接的なやり取りをすることがなくなり、非同期的な通信が可能になります。
パイプ
データを一方的に流すための通信手段です。片方のプロセスでデータを書き込み、もう片方のプロセスで書きこまれたデータを読み取ります。匿名パイプ(名前なしパイプ)と名前付きパイプの2種類あり、実行の前後関係があるプロセスでのパイプは匿名パイプ、実行の前後関係がないプロセスでのパイプは識別子を指定する名前付きパイプを使用します。
ソケット
ローカルネットワークやインターネットを通じて、異なるプロセス間でのデータのやり取りを行います。プログラムとネットワークをつなげる接続口のことを指します。
共有メモリ
複数のプロセスが同じメモリ領域を共有することで、効率的にデータのやり取りを行います。データを直接メモリに書き込むため、他の手段よりも高速な通信速度を実現します。
シグナル
シグナルとは、プロセスに対して送る信号のことで、例えば、プロセスを終了したり、一時停止したりするために使用されます。
プロセスとスレッドの違い
スレッドとは、CPU(パソコンの中心となって処理を行うパーツ)におけるプログラムの実行単位のことで、プロセスはスレッドという実行単位に分割されてCPUにより処理されます。
シングルスレッド
1つのスレッドで順番に処理していく方式です。シンプルで分かりやすく、データの競合(複数のユーザが1つのデータを同時に変更しようとする際に起こる問題)が起こりにくいという特徴がありますが、マルチスレッドに比べて処理が遅くなります。
マルチスレッド
複数のスレッドを並行して処理していく方式です。処理速度が速い一方で、コードが複雑化しやすいためデバッグが難しく、データの競合がシングルスレッドに比べて起こりやすくなります。
タスクとは
ITの分野におけるタスクとは、コンピュータの実行単位のことで、プロセスとほぼ同じ意味で使用されます。CPUでタスクを処理する際、1つずつ順番に処理していく「シングルタスク」、複数のタスクを並行して処理していく「マルチタスク」があります。マルチタスク機能を持っているOSを「マルチタスクOS」といいます。
まとめ

今回は、プロセスとは何かについて解説しました。
プロセスは、コンピュータの動作を理解する上で重要な概念です。1度では理解することが難しい部分でもあると思いますが、概要だけでも知っておくとIT分野への理解の手助けになると思います。
無料のプログラミングスクール「テクドリ」の卒業生のインタビュー動画を、インスタグラムほか公式SNSにて公開中!