プロセスの処理による分類
プロセスは大きく分けて2つの処理に分類できます。CPU処理と入出力処理 (I/O処理)です。
- CPU処理: 実際にプロセスがCPU上で計算や演算を行っている処理。
- 入出力処理: ファイル、ネットワーク、デバイスなどへのデータ読み書きや通信に関わる処理。
プロセスはこれらのCPU処理と入出力処理を交互に繰り返しながら実行されることが一般的です。
マルチプログラミング
プロセスが入出力の完了待ち状態になると、CPUはアイドル状態になります。この間、CPUは他の作業をしていないためリソースが無駄になります。この無駄を減らし、CPUの稼働率を高めることがマルチプログラミング (マルチタスキング) の目的です。
マルチプログラミングの仕組みにより、単一のCPUしかないシステムでも複数のプロセスを並行して動作させることが可能になります。
下図のように逐次的に実行しているような2つのプロセスがあるとします。これらのプロセスは入出力処理とCPU処理のどちらも存在するとします。

このとき、入出力処理は実際にはCPUは仕事をしていないので、別のプロセスを割り当てCPU処理を実行することを考えます。これにより、CPUは常に何らかの処理を実行している状態となり、無駄なく効率的に稼働します。

CPUバウンドとI/Oバウンド
プロセスにはCPU処理と入出力処理の大きく2つに分けられることを説明しました。上記の例で示したような図では、綺麗にCPU処理と入出力処理が同じ時間で分かれていますが、実際のプロセスはそのようにはならないことがほとんどです。
プロセスはCPU処理と入出力処理の比率により以下の2種類に分類できます。
- CPUバウンド: CPU処理の割合が高く、計算や演算が多いプロセス。
- I/Oバウンド: 入出力処理の割合が高く、外部データの読み書きや通信が多いプロセス。
CPUバウンドなプロセスは科学技術計算や3Dレンダリングなどで見られます。一方、I/Oバウンドなプロセスはファイルの読み書きやネットワーク通信を多用するデータベースやウェブサーバーに該当します。
性質を決定する指標
ププロセスの性質を測るための指標として、以下のものがあります。
- CPU時間: プロセスが実行中状態にある時間の総和。
- 入出力時間: 入出力処理に費やす時間の総和。
- 入出力命令数: プロセスが実行した入出力処理の命令総数。
- ブロック要因: 入出力依頼のSVC (Supervisor Call) 命令によりブロックされた回数。
これらの指標を基に、CPU時間が多い場合はCPUバウンド、入出力時間が多い場合はI/Oバウンドと判断できます。
CPUバウンドプロセスとI/Oバウンドプロセスをバランスよく管理することで、システム全体の効率を向上させることができます。このように、どのように管理すれば効率よく実行できるかを考えるのがスケジューリングアルゴリズムになります。適切なスケジューリングアルゴリズムを選択する際には、プロセスの性質を理解することが重要です。
まとめ
本記事では、プロセスが大きく2つの処理に分けられることを示しました。さらにそれらはCPUバウンドとI/Oバウンドなプロセスに分類できることを解説しました。
コメント