最終更新日:2026年7月25日
fe fe-technology computer-system
まず結論
タスクスケジューリング方式とは、OSが、どのタスクにCPUを使わせるかを決める方法です。
基本情報技術者試験では、まず次のように切り分けます。
OSが実行中タスクを途中で止められる → プリエンプティブ
タスクがCPUを手放すまで待つ → ノンプリエンプティブ
「実行中のタスクが、自分で待ち状態に移るか終了するまで、他のタスクを実行できない」と出たら、ノンプリエンプティブ と判断します。
直感的な説明
CPUは、同時にたくさんのタスクを実行しているように見えます。
でも実際には、CPUを使うタスクを短い時間で切り替えながら処理しています。
ここで大事なのは、誰の判断でタスクを切り替えるか です。
OSの判断で切り替える
→ プリエンプティブ
プログラム側がCPUを手放すまで待つ
→ ノンプリエンプティブ
たとえるなら、プリエンプティブは先生が時間を見て発表者を交代させるイメージです。
ノンプリエンプティブは、発表者が話し終わるまで、次の人に交代できないイメージです。
英語では、preemptive は「先に割り込む」、non-preemptive は「割り込まない」という感覚です。
定義・仕組み
タスクスケジューリングでは、OSが実行可能状態のタスクの中から、次に実行するタスクを選びます。
代表的な用語を整理すると、次のようになります。
| 用語 | 判断のポイント |
|---|---|
| プリエンプティブ | OSが実行中タスクを中断して、別のタスクに切り替えられる |
| ノンプリエンプティブ | 実行中タスクがCPUを手放すまで、他のタスクへ切り替えない |
| ラウンドロビン方式 | 一定時間ごとに順番にCPUを割り当てる |
| 優先順位方式 | 優先度が高いタスクを先に実行する |
| 残余処理時間順方式 | 残りの処理時間が短いタスクを先に実行する |
タスクの状態は、ざっくり次のように考えると分かりやすいです。
実行可能状態:CPUを使える順番を待っている
実行状態 :今CPUを使っている
待ち状態 :入出力などを待っていて、すぐには実行できない
ノンプリエンプティブでは、いったん実行状態になったタスクは、
自分で待ち状態に移る
または
終了する
まで、CPUを使い続けます。
そのため、OSが途中で強制的に別のタスクへ切り替える、という説明ではありません。
公式の出題範囲やシラバスは、IPA:基本情報技術者試験 から確認できます。タスク管理やスケジューリングは、OSやコンピュータシステムの基本動作と関係が深い内容です。
科目Aでどう出る?
科目Aでは、説明文から該当するスケジューリング方式を選ぶ形で出題されやすいです。
選択肢を切るときは、次のキーワードを見ます。
| 問題文のキーワード | 選ぶ用語 |
|---|---|
| OSが中断する、CPU使用時間、優先度で切替え | プリエンプティブ |
| 自ら待ち状態に移る、終了するまで切り替えない | ノンプリエンプティブ |
| 一定時間、時間片、次のタスクへ回す | ラウンドロビン方式 |
| 優先度が高い方を実行する | 優先順位方式 |
| 残りの実行時間が短い順 | 残余処理時間順方式 |
例えば、
実行状態としたタスクが自ら待ち状態に遷移するか終了するまで、
他のタスクを実行状態にできない
という説明なら、ポイントは 自ら待ち状態に遷移するか終了するまで です。
これはOSが途中で奪うのではなく、タスクがCPUを手放すまで待つ説明なので、ノンプリエンプティブです。
一方、
決められた時間内に待ち状態に遷移しないとき、
そのタスクを中断して次のタスクを実行する
なら、ラウンドロビン方式の説明です。
どんな場面で使う?
問題文でタスクスケジューリングが出る場合は、用語名そのものよりも、タスクの状態変化や実行順序を追う力 が大切です。
例えば、次のような情報が与えられることがあります。
- タスクの到着時刻
- 処理時間
- 優先度
- タイムクォンタム
- 待ち状態に入るタイミング
このときは、どの方式で動いているかを先に確認します。
ラウンドロビン → 時間切れで次へ回す
優先順位方式 → 優先度を見る
ノンプリエンプティブ → 実行中タスクが手放すまで続く
方式を確認しないまま実行順序を追うと、途中でタスクを切り替えるべきかどうかを間違えやすくなります。
特に、ノンプリエンプティブでは、より優先度が高いタスクが実行可能状態になっても、実行中のタスクがCPUを手放すまで切り替えない場合があります。
よくある誤解・混同
一番多い混同は、ノンプリエンプティブでも、優先度が高いタスクが来たらすぐ切り替える と思ってしまうことです。
| 混同しやすい点 | 正しい理解 |
|---|---|
| ノンプリエンプティブでもOSが途中で止める | ノンプリエンプティブでは、基本的にタスクが手放すまで待つ |
| ラウンドロビンは優先度順で実行する | ラウンドロビンは一定時間ごとに順番に回す |
| 残余処理時間順は到着順で実行する | 残り時間が短いタスクを優先する |
| 優先順位方式は必ずプリエンプティブである | 優先順位方式にも、切替えルールの違いがあり得る |
プリエンプティブとノンプリエンプティブを見分けるコツは、中断の主導権がどこにあるか です。
OSが中断できる
→ プリエンプティブ
タスクがCPUを手放すまで待つ
→ ノンプリエンプティブ
また、ラウンドロビン方式は、プリエンプティブな方式の代表例として扱われることが多いです。
決められた時間を使い切ったら、実行中のタスクをいったん中断して、実行待ち行列の後ろに回します。
まとめ(試験直前用)
- タスクスケジューリングは、OSがCPUをどのタスクに使わせるかを決める方法
- OSが途中で中断できるなら プリエンプティブ
- タスクが待ち状態に移るか終了するまで待つなら ノンプリエンプティブ
- 一定時間ごとに順番に回すなら ラウンドロビン方式
- 優先度なら 優先順位方式、残り時間なら 残余処理時間順方式