最終更新日:2026年9月18日
fe fe-technology operating-system scheduling
まず結論
処理時間順方式とは、CPUが空いたとき、すでに到着して待っているジョブの中から、処理時間が最も短いものを選んで実行する方式です。
基本情報技術者試験では、次の順で考えると判断しやすくなります。
今のジョブが完了
↓
その時点で到着済みのジョブを確認
↓
処理時間を比較
↓
最も短いジョブを実行
大切なのは、まだ到着していないジョブは候補に入れないことです。
直感的な説明
処理時間順方式は、作業待ちの列から「すぐ終わる仕事」を先に片付けるイメージです。
ただし、未来に来る仕事まで先読みして選ぶわけではありません。
例えば、次のジョブがあるとします。
| ジョブ | 到着時刻 | 処理時間 |
|---|---|---|
| A | 0秒 | 2秒 |
| B | 1秒 | 4秒 |
| C | 2秒 | 3秒 |
| D | 3秒 | 2秒 |
| E | 4秒 | 1秒 |
時刻0ではAしか到着していないので、Aから始めます。
Aが終わる時刻2では、BとCが到着済みです。
B:4秒
C:3秒
短いCを選びます。
このように、ジョブが終わるたびに、その時点で待っている候補を比較するのがポイントです。
触って確認:処理時間順方式を1段階ずつ追う
「次の判断」を押すと、その時点で待っているジョブを比較し、処理順が時間軸に追加されます。
| ジョブ | 到着 | 処理時間 |
|---|---|---|
| A | 0 | 2 |
| B | 1 | 4 |
| C | 2 | 3 |
| D | 3 | 2 |
| E | 4 | 1 |
時刻0:到着済みはAだけなので、Aを実行します。
この時点の比較: 候補:A(2秒) → Aを選択
ここまでの時間軸: A:0〜2秒
見るポイント:ジョブが到着した瞬間ではなく、CPUが空いた時点で「到着済みの中から最短」を選びます。
JavaScriptが使えない環境でも、最終的な処理順は次のように確認できます。
0 2 5 6 8 12
|--- A ---|---- C ----|-E-|-- D --|------ B ------|
処理順:A → C → E → D → B
定義・仕組み
処理時間順方式は、予定処理時間が短いジョブを優先するスケジューリング方式です。
SJF(Shortest Job First)と呼ばれる考え方に対応します。
到着時刻も見る
処理時間だけを小さい順に並べればよいわけではありません。
先ほどの例では、Eの処理時間が1秒で最短ですが、Eが到着するのは時刻4です。
時刻0ではEはまだ存在しないため、最初に選ぶことはできません。
時刻0
到着済み:Aだけ
→ Aを実行
時刻2
到着済みで未処理:B、C
→ Cを実行
時刻5
到着済みで未処理:B、D、E
→ Eを実行
試験では、「その時点で選べる候補はどれか」を先に確認するとミスが減ります。
ノンプリエンプティブとして考える
典型的な処理時間順方式では、いったん実行を開始したジョブは、完了するまで続けます。
例えば、Cを実行中に、より短いEが到着しても、すぐにはCを中断しません。
Cを実行中
↓
Eが到着
↓
Cはそのまま完了まで実行
↓
CPUが空いた時点でEを候補に入れる
実行中のジョブを途中で止めて、残り時間が短いジョブへ切り替える考え方は、プリエンプティブなスケジューリングとして区別します。
詳しくは、プリエンプティブスケジューリングとは?も確認してください。
ターンアラウンドタイムとの関係
処理順が決まると、各ジョブの完了時刻が分かります。
例えばBは、
到着:1秒
実行:8〜12秒
完了:12秒
です。
ターンアラウンドタイムは、
完了時刻 − 到着時刻
= 12 − 1
= 11秒
となります。
ターンアラウンドタイムそのものの意味や、待ち時間との違いは、ターンアラウンドタイムとは?で整理しています。
このテーマは、基本情報技術者試験の「オペレーティングシステム」「タスク管理」「スケジューリング」と関係します。公式の出題範囲やシラバスは、IPA:基本情報技術者試験から確認できます。
科目Aでどう出る?
科目Aでは、到着時刻と処理時間が表で与えられ、処理順や特定ジョブの完了時刻・ターンアラウンドタイムを求める問題があります。
解く順番は次のとおりです。
1. 現在の時刻を確認
2. その時点で到着済みのジョブだけを抜き出す
3. 処理時間を比べて最短を選ぶ
4. 選んだジョブの完了時刻まで時間を進める
5. 新しく到着したジョブを加えて再び比較する
試験では、いきなりターンアラウンドタイムを計算するよりも、まず時間軸を完成させる方が安全です。
処理順を決める
↓
完了時刻が決まる
↓
最後に必要な時間を計算する
判断表
| 問題文の表現 | 判断 |
|---|---|
| 到着した順に処理 | 到着順方式 |
| 一定時間ずつ順番にCPUを割り当てる | ラウンドロビン |
| 到着済みの中から短いジョブを優先 | 処理時間順方式 |
| 優先度の高いジョブを優先 | 優先度方式 |
スケジューリング方式全体の比較は、CPUスケジューリング方式とは?も合わせて確認すると整理しやすくなります。
どんな場面で使う?
処理時間順方式は、短時間で終わるジョブを先に処理し、平均的な待ち時間を小さくしたいときの考え方です。
例えば、短い作業と長い作業が同じ待ち行列にある場合、短い作業を先に終わらせることで、多くのジョブを早く完了させやすくなります。
一方で、短いジョブが次々と到着すると、長いジョブが後回しになり続ける可能性があります。
この状態は スタベーション(飢餓状態) と呼ばれます。
長いジョブが待つ
↓
短いジョブが到着
↓
短いジョブを先に実行
↓
また短いジョブが到着
↓
長いジョブがさらに待つ
そのため、処理時間順方式は「短いものを優先する」という利点と、「長いものが待ち続ける可能性」をセットで理解します。
よくある誤解・混同
誤解1:処理時間が短い順に、最初から全部並べればよい
違います。
まだ到着していないジョブは選べません。
処理時間だけを見る
→ 不十分
到着済みか確認してから処理時間を比較
→ 正しい考え方
誤解2:短いジョブが到着したら、実行中ジョブをすぐ中断する
典型的な処理時間順方式では、実行中ジョブを完了まで続ける前提で考えます。
途中でCPUを取り上げるかどうかは、プリエンプティブかノンプリエンプティブかの違いです。
誤解3:処理時間とターンアラウンドタイムは同じ
違います。
処理時間は、CPUで実際に処理する時間です。
ターンアラウンドタイムは、待ち時間も含めた到着から完了までの時間です。
処理時間
→ 実際に実行している時間
ターンアラウンドタイム
→ 到着してから完了するまで
誤解4:早く到着したジョブが必ず先に処理される
処理時間順方式では、CPUが空いた時点で複数のジョブが待っていれば、到着順よりも処理時間の短さを優先します。
誤解5:短いジョブを優先すれば欠点はない
長いジョブが後回しになり続けるスタベーションに注意します。
短いものを優先
→ 平均待ち時間を短くしやすい
短いものが入り続ける
→ 長いジョブが待ち続ける可能性
まとめ(試験直前用)
- 処理時間順方式は、到着済みのジョブの中から最短のものを選ぶ
- まだ到着していないジョブは候補に入れない
- 典型的には、実行を始めたジョブは完了まで続ける
- 計算問題では、まず処理順を時間軸に書く
- 完了時刻が分かってから、ターンアラウンドタイムなどを計算する
- 短いジョブを優先するため、長いジョブのスタベーションに注意する
覚える一文はこれです。
CPUが空いたら、到着済みの中でいちばん短いジョブを選ぶ。