【すけじゅーりんぐあるごりずむ】

スケジューリングアルゴリズム とは?

最終更新:
💡 実行できるタスクへ、CPUの時間をどう配る?

実行できるタスクから次に動かすものを選び、CPUなどの資源を割り当てるルール。応答時間・処理量・公平性・期限などの目的に応じて方式が異なり、現実のOSは複数CPUやタスクの状態も考慮します。

📌 このページのポイント
CPUの時間を、どの順に配る?同時に実行可能:A=3、B=2、C=1時間の進む方向先着順A→B→CABC交代制1単位ずつABCABA優先度C > B > ACBAどの行も、A=3・B=2・C=1の合計6単位I/O待ち・途中の到着・切り替えコストは省略
一つの実行枠の基本モデルで、先着順はA→B→C、交代制は時間枠1、優先度はC>B>Aとします。棒の色と文字がタスクを表し、現実の複数CPUやOSの動作とは条件が異なります。
ひよこ ひよこ
スケジューリングは何を決めるの?
ペンギン先生 ペンギン先生
CPUを使える状態のタスクから、次に実行する対象を選ぶんだ。I/Oなどを待っているタスクとは区別する。1つの実行枠をどう分けるかを考える基本モデルと、複数CPUで並列に動かす現実の構成も分けて見よう。
ひよこ ひよこ
どんな基本方式がある?
ペンギン先生 ペンギン先生
先着順は待ち行列の先から、ラウンドロビンは実行時間の枠を区切って順番に、優先度方式は決めた優先度を基準に選ぶよ。実際のルールは、実行を途中で切り替えるか、同じ優先度をどう扱うかでも違うんだ。
ひよこ ひよこ
ラウンドロビンなら全員同じ時間?
ペンギン先生 ペンギン先生
各回に使える時間の上限を決める方法だよ。早く終わったりI/O待ちになったりすれば、その枠を全部使うとは限らない。LinuxのSCHED_RRは同じ優先度のタスク間で交代する方式で、全タスクが同じ扱いではないんだ。
ひよこ ひよこ
何を基準に良し悪しを比べる?
ペンギン先生 ペンギン先生
操作への応答、処理を終えるまでの時間、処理量、公平性、期限などだよ。切り替えにもコストがあり、優先度の低い対象が進まないこともある。目的や仕事の特徴に合うかを確認しよう。
ひよこ ひよこ
Linuxはどの方式を使う?
ペンギン先生 ペンギン先生
通常のCPU時間配分ではCFSからEEVDFへの移行が進められている。EEVDFは受け取ったCPU時間の偏りと仮想的な期限を使って選ぶよ。ただし通常用とリアルタイム用などのポリシーがあり、すべてが1つの方式ではない。使うカーネルや設定も確認するんだ。
もっと詳しく知りたい人へ

図の順番は実際のOSでも同じ?

図は全タスクが最初から実行可能で、I/O待ちも切り替えコストもない、1つの実行枠の例です。実際には途中の到着、待ち状態、複数CPU、優先度やポリシーなどで順番が変わります。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「スケジューリングアルゴリズム」って出てきたら「実行可能なタスクへ資源を配るルール」と思えばだいたいOK!
📖 おまけ:英語の意味
「Scheduling Algorithm」 = 実行や資源の割り当てを決める手順
💬 Scheduleは予定や割り当てを組むことです。CPUの説明と、ジョブや通信の割り当てでは対象や制約が違います。

参考資料

← 用語集にもどる