プロセス(Process)とは、OS上で実行されている、プログラムの1つ1つの動作単位のことです。同じアプリを2つ起動すれば、それぞれが別々のプロセスとして動きます。OSはこのプロセスを単位として、パソコンの資源を管理しています。
現実世界に例えると、プロセスは厨房で実際に調理している一人ひとりの料理人のようなものです。レシピ(プログラム)そのものは1冊でも、それをもとに複数の料理人が同時に、それぞれ別の鍋やまな板(メモリ)を使って調理を進められます。
プログラムとの違い
| 用語 | 意味 |
|---|---|
| プログラム | ディスク上に保存された、静的な命令の集まり(レシピ) |
| プロセス | そのプログラムが実際に動いている状態(調理中の作業) |
プロセスが持つ情報
1つのプロセスには、「プロセスID」と呼ばれる識別番号のほか、専用のメモリ領域、開いているファイルの情報などが割り当てられます。他のプロセスの情報を勝手に覗いたり書き換えたりできないよう、それぞれが独立した領域を持つ点が重要な特徴です。
マルチタスクとの関係
複数のアプリを同時に使えるのは、OSが多数のプロセスをごく短い時間ずつ順番に切り替えながら実行しているためです。人の目には同時に動いているように見えますが、実際には高速な切り替えによって、あたかも並行しているかのように見せています。
プロセスとスレッドの違い
似た言葉に「スレッド」があります。プロセスがアプリ全体の独立した実行単位であるのに対し、スレッドは1つのプロセスの中で分担して動く、さらに細かい実行の流れです。1つのプロセスの中に、複数のスレッドが存在することもあります。
プロセス間の情報のやり取り
プロセスは基本的に独立していますが、必要な場合には「プロセス間通信」と呼ばれる仕組みを使って、互いにデータをやり取りできます。別々に動いているアプリ同士が連携して動作する裏側では、こうした通信の仕組みが働いています。
プロセスの状態
プロセスは、常に処理を実行し続けているわけではありません。「実行中」「実行待ち」「他の処理待ち(一時停止)」といった状態を、OSの管理のもとで行き来しながら動いています。多くのプロセスが同時に存在していても、実際にCPUを使って処理しているのは、瞬間ごとに見ればごく一部だけです。
プロセスの優先度
複数のプロセスが同時に処理を待っている時、OSはあらかじめ設定された優先度をもとに、どのプロセスへ先にCPUの時間を割り当てるかを判断します。重要なプロセスに高い優先度を与えることで、限られた資源の中でも重要な処理が後回しにされにくくなります。
実際に確認する方法
いま自分のパソコンでどんなプロセスが動いているかは、Windowsであればタスクマネージャーの「プロセス」タブから一覧で確認できます。それぞれのプロセスがどれだけCPUやメモリを使っているかも合わせて表示されるため、動作が重い原因を探る際にも役立ちます。

コメント