😆

OS解説 vol.3 プロセスのスケジューリング

に公開

今回はプロセスのスケジューリングについて解説します。

OSは複数のプロセスに対してハードウェアリソースの割り当てを行っています。
あるプロセスの実行時間が長く、リソースを長時間占有すると後続のプロセスの実行ができずに処理性能が低下してしまいます。そこでOSはプロセスに対してさまざまなスケジューリング方法で処理性能の低下を防止しています。

1. 到着順スケジューリング

レディーキューに登録されている先頭のプロセスに対してCPUリソースを割り当てる方法です。

  • 利点: 先頭のプロセスのみ考慮すれば良いためアルゴリズムの実装が用意。
  • 欠点: 後続のプロセスの実行時間は前に実行されるプロセスの実行時間の影響を受ける。また、一つのプロセスが長時間CPUリソースを占有するリスクがある。

2. 処理時間順スケジューリング

処理時間の少ないプロセスから順にCPUリソースを割り当てる方法です。
レディーキューに登録されているプロセスは処理時間が少ない順にソートされています。
実行可能状態に遷移した際に自プロセスはレディーキューの適切な位置に挿入されます。

  • 利点: 一つのプロセスがCPUリソースを占有するリスクが減る。
  • 欠点: 処理時間が長いプロセスはCPUリソースを割り当てられずに待ち続ける可能性がある。

3. 優先度順スケジューリング

プロセスの生成時に優先度を割り当て、高いものにCPUリソースを割り当てる方式です。
優先度の指標は以下となります。
(例)

優先度 プロセスの種類 理由
リアルタイム処理 処理時間内に完了しないと重大な影響があるため
OS pcの性能に直結するため
対話処理 ユーザ体験向上のため
バッチ処理 時間がかかる想定の処理のため
  • 欠点: リアルタイム性が求められる、性能に直結するプロセスが遅延するリスクが減る。
  • 利点: 優先度の低いプロセスはCPUリソースを割り当てられずに待ち続ける可能性がある。

4. ラウンドロビンスケジューリング

プロセスにクオンタムを割り当て、クオンタムを消費したプロセスをレディーキュの末尾に追加する方式です。クオンタムは一定であり、プロセスごとに動的には割り当てられないです。

  • 欠点: 全てのプロセスが平等にCPUリソースを獲得できる。待ち時間が一定。
  • 利点: 処理時間の長いプロセスは完了までに時間がかかる。

5. 多重レベルフィードバックスケジューリング

複数のレディーキューを持ち、レベルが高いレディーキューのプロセスから実行される方式です。
新しくレディーキューに追加されるプロセスはレベルが一番高いレディーキューの末尾に追加されます。
レベルiのレディーキューのプロセスがCPUリソースを獲得する条件はレベル0〜レベルi-1のレディーキューが全て空になった場合となります。
しかし、レベルの低いレディーキューに登録されているプロセスは飢餓状態となることがあるためエージング方式で対応する必要があります。

これらの手法を組み合わせてOSはプロセスをスケジュールしています。

次回の内容

次回は排他制御について解説します。

前回の内容

https://zenn.dev/harasho_404/articles/7930c62763fdef

参考

https://www.morikita.co.jp/books/mid/081012

Discussion