わかりやすく CPUスケジューリング とは
席は一つ、待っている仕事はいくつも。だれを先に呼ぶかで、待ち時間が変わります。
だれを先に呼ぶか
窓口は一つなのに、待っている人は何人もいます。一度に一人しか呼べないので、だれを先に呼ぶかを決めなければなりません。先に来た人でしょうか、用事がすぐ終わる人でしょうか、急いでいる人でしょうか。
こうして呼ぶ順番を決めることを、スケジューリングといいます。CPUの前にも仕事が列を作っていて、どれを先に処理するかをだれかが決めなければなりません。
救急外来や銀行の窓口が、だれを先に呼ぶかをいつも考えているのと同じ問題です。
席は一つ、待つ仕事はいくつも。呼ぶ順番を決めます。
スケジューリングとは、待っている仕事のうち、どれを先に処理するかを決めることです。
順番を変えると待ち時間も変わる
同じお客さんが三人います。一人は用事が長く、二人は短いです。
上の列は来た順に呼びます。長い用事が先頭だと、後ろの短い二人はそれが終わるまで長く待ちます。下の列は短い用事を先に呼びます。短い二人はすぐ終わり、長い一人だけが残ります。
お客さんも用事も同じなのに、順番を変えただけで、みんなが待った時間の平均が変わりました。
長い用事を前に置くと、後ろに並んだ人がみんなその長い時間をまるまる待つことになるので、平均がぐっと増えるのです。
同じ三人でも、呼ぶ順番によって平均の待ち時間が変わります。
仕事の量が同じでも、順番を変えると平均の待ち時間が変わります。
自分で順番を決めてみる
お客さんが四人待っていて、用事の長さはそれぞれ違います。
呼ぶ順番を変えると、下にみんなが待った時間の平均がすぐ出ます。短い用事を前に置けば平均は減り、長い用事を前に置けば平均は増えます。
あれこれ入れかえながら、どの順番が平均をいちばん減らすかを探してみましょう。
じつは、残っているもののうち、いつもいちばん短い用事を先に呼ぶのが、平均の待ち時間をいちばん小さくする方法です。
順番を変えるたびに、平均の待ち時間がどう変わるかがわかります。
短い用事を先にすると平均の待ち時間は減りますが、それがいつも正解とは限りません。
速いのがいつもよいとは限らない
短い用事ばかり先に呼び続ければ、平均は減ります。でも用事がとても長いお客さんは、順番がずっと後回しにされて、いつまでも待つことになりかねません。
そこで別の方法もあります。一人に任せきりにせず、みんなに少しずつ交代で機会を与えれば、だれも果てしなく後回しにはなりません。
そのかわり、頻繁に交代すれば、そのたびに席を入れかえるコストがかかります。速さと公平さのどちらを選んでも、ただの選択はありません。
すぐに反応しなければならないビデオ通話と、少し遅れてもよい大きなファイルのダウンロードを違うように扱うように、状況ごとにはかりにかけ方が変わります。
短い用事を優先すると速いですが、長い用事はずっと後回しにされることがあります。
平均を減らす速さと、だれも後回しにしない公平さは、引き換えにしなければなりません。
一枚にまとめる
覚えておくことは三つだけです。
一つ目、スケジューリングは呼ぶ順番を決めることです。席は一つで、待っている仕事はいくつもあるからです。
二つ目、順番を変えると平均の待ち時間が変わります。短い用事を先にすると平均は減ります。三つ目、それでも正解は一つではありません。速さと公平さは引き換えで、頻繁に交代すれば切りかえのコストもかかります。
順番をどれだけうまく決めても、なかった時間が新しく生まれるわけではありません。その待ち時間を、だれにどれだけ分けて背負わせるかを決めているだけです。
順番が平均を変え、速さと公平さは引き換えになります。