到着順方式
ジョブやプロセスを、到着した順番に実行するスケジューリングの方式。先に来たものから順に処理し、途中で割り込むことはない。FCFS(First Come First Served)ともいう。
イマシルちゃんの解説
スーパーのレジに並ぶときと同じで、先に並んだ人から順番にお会計してもらうのが到着順方式なんだ。
とってもわかりやすくて公平だけど、
前の人がカゴいっぱいに買い物していると、牛乳1本だけの人も長く待たされちゃう。
そこで、ほかにもいろんな順番の決め方があるんだよ!
より深い解説
定義
到着順方式(FCFS:First Come First Served、FIFO方式)は、実行可能になった順(到着順)にジョブやプロセスをCPUに割り当てるスケジューリングの方式である。実行中のジョブは、終了するまで(または入出力などで自ら待ちになるまで)CPUを使い続ける、ノンプリエンプティブ(横取りしない)方式である。
特徴
| 長所 | 短所 |
|---|---|
| 仕組みが単純で、オーバーヘッドが小さい | 処理時間の長いジョブが先にあると、後ろの短いジョブも長く待たされる(コンボイ効果) |
| 到着順なので公平で、いつまでも実行されないジョブ(飢餓状態)が生じない | 対話型の処理では、応答時間が長くなることがある |
主なスケジューリングの方式
| 方式 | 実行する順番 | 横取り |
|---|---|---|
| 到着順(FCFS) | 到着した順 | しない |
| 処理時間順(SPT) | 処理時間が短い順 | しない |
| 優先度順 | 優先度が高い順 | する方式もある |
| ラウンドロビン | 一定の時間(タイムクウォンタム)ずつ、順番に実行する。時間を使い切ったら列の最後に回す | する |
| 多重レベルフィードバックキュー | 優先度の異なる複数の列を使い、長く実行したジョブほど優先度を下げる | する |
処理時間順(SPT:Shortest Processing Time first)は、平均のターンアラウンドタイムを最小にできるが、長いジョブが後回しにされ続ける飢餓状態が起こりうる。ラウンドロビンは、すべてのジョブに少しずつ実行の機会を与えるため、対話型のシステムに向く。
到着順方式での計算例
| ジョブ | 到着時刻 | 処理時間 |
|---|---|---|
| X | 0 | 6 |
| Y | 1 | 2 |
| Z | 3 | 1 |
| ジョブ | 開始 | 終了 | ターンアラウンドタイム |
|---|---|---|---|
| X | 0 | 6 | 6 |
| Y | 6 | 8 | 7 |
| Z | 8 | 9 | 6 |
Zは処理時間が1しかないのに、Xの終了を待つために、ターンアラウンドタイムが6になっている。これがコンボイ効果である。
処理時間順(SPT)で実行すると、時刻6の時点で待っているYとZのうち、処理時間の短いZを先に実行する。Zのターンアラウンドタイムは 7 − 3 = 4 に縮み、その代わりYは 9 − 1 = 8 に延びる。3つのジョブの平均は、到着順の約6.3から6.0に短くなる。
ネットワークとの関係
到着順の考え方は、ネットワーク機器の送信待ちのキュー(FIFOキュー)にも使われる。FIFOキューでは、音声のように遅延に弱いパケットも、大きなデータのパケットの後ろで待たされるため、優先度の高いパケットを先に送る優先キューイングなどのQoSの仕組みが使われる。