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

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

💡 「誰を先に並ばせるか」を決めるCPUの交通整理係
📌 このページのポイント
スケジューリングアルゴリズムの比較 CPU時間の流れ → 先着順 (FCFS) プロセスA(長い) B C ラウンド ロビン A B C A B A 優先度 (Priority) C★ A B A プロセスA プロセスB プロセスC 高優先度
スケジューリングアルゴリズムの比較イメージ
ひよこ ひよこ

スケジューリングアルゴリズムって何をするものなの?

ペンギン先生 ペンギン先生

パソコンの中ではたくさんのプログラムが同時に動いてるよね。でもCPUは基本的に一度に1つの処理しかできないんだ。だから「次は誰の番?」を高速に決める仕組みが必要で、それがスケジューリングアルゴリズムだよ。

ひよこ ひよこ

どんな種類があるの?

ペンギン先生 ペンギン先生

代表的なのは3つだよ。先着順(FCFS)は来た順に処理する。ラウンドロビンは全員に同じ時間ずつ交代で割り当てる。優先度スケジューリングは重要な処理を先にやる。それぞれ得意な場面が違うんだ。

ひよこ ひよこ

どれが一番いいの?

ペンギン先生 ペンギン先生

「どれが一番」とは言えないんだ。先着順は単純だけど、重い処理が来ると後ろが詰まる。ラウンドロビンは公平だけど切り替えのコストがかかる。優先度方式は大事な処理が速いけど、優先度が低い処理がいつまでも実行されない問題があるんだよ。

ひよこ ひよこ

OSの中だけで使われるの?

ペンギン先生 ペンギン先生

いい質問だね。実はOSだけじゃなくて、Webサーバーのロードバランサーがリクエストを振り分けるときや、クラウドのタスクキューがジョブを割り当てるときにも使われてるよ。DNSラウンドロビンなんかも身近な例だね。

ひよこ ひよこ

最近のOSではどんな方式が使われてるの?

ペンギン先生 ペンギン先生

LinuxではCFS(Completely Fair Scheduler)という方式が長く使われていて、最近はEEVDFという新しい方式に移行しつつあるよ。「完全に公平」を目指しつつ、対話的なアプリには素早く応答するように工夫されているんだ。単純なアルゴリズムを組み合わせて進化してきた歴史があるんだよ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「スケジューリングアルゴリズム」って出てきたら「CPUの時間を誰にどう配るかのルール」と思えればだいたいOK!
📖 おまけ:英語の意味
「Scheduling Algorithm」 = 予定組み手順
💬 schedule(予定を組む)+ algorithm(手順)で、「順番決めのルール」という意味だよ
← 用語集にもどる