Skip to the content.

最終更新日:2026年7月16日

まず結論

プリエンプティブスケジューリングとは、実行中のタスクより優先度の高いタスクが実行可能になったとき、OSがCPUを取り上げて高優先度タスクへ切り替える方式です。

基本情報技術者試験では、次のように判断します。

低優先度タスクを実行中
↓
高優先度タスクが起動
↓
実行中タスクを中断
↓
中断されたタスクは実行可能状態へ
↓
高優先度タスクを実行

特に重要なのは、中断されたタスクは待ち状態ではなく、実行可能状態へ戻るという点です。

直感的な説明

病院の診察をイメージすると分かりやすいです。

通常の患者を診察中に、より緊急度の高い患者が来た場合、診察をいったん止めて、緊急患者を先に診ます。

患者Bを診察中
↓
より緊急度の高い患者Aが来る
↓
Bはいったん待機列へ戻る
↓
Aを先に診察する

このときBは、検査結果待ちなどで動けないわけではありません。

単に診察の順番を譲っただけなので、CPUが空けばすぐ再開できます。

これが、実行可能状態です。

定義・仕組み

リアルタイムOSや一般的なOSでは、複数のタスクを切り替えながら実行します。

プリエンプティブ方式では、OSが実行中タスクのCPU使用権を強制的に取り上げることがあります。

代表的なタスク状態は次の3つです。

状態 意味
実行状態 現在CPUを使っている
実行可能状態 CPUが割り当てられれば実行できる
待ち状態 入出力完了などを待ち、今すぐ実行できない

状態の切り替わりは、次のように考えます。

実行可能状態
↓ ディスパッチ
実行状態
↓ プリエンプション
実行可能状態

実行状態
↓ 入出力要求
待ち状態
↓ 入出力完了
実行可能状態

優先度が高いタスクが起動した場合

Aの優先度がBより高いとします。

A > B

Bの実行中にAが実行可能になると、OSはBを中断し、Aを実行します。

B:実行状態
A:実行可能状態になる
↓
B:実行可能状態へ
A:実行状態へ

優先度が低いタスクが起動した場合

Aの実行中に、低優先度のBが起動しても、Aの実行は続きます。

A:実行中・高優先度
B:起動・低優先度
↓
A:実行継続
B:実行可能状態

このテーマは、基本情報技術者試験の「OS」「タスク管理」「リアルタイム処理」と関係する内容です。公式の出題範囲やシラバスは、IPA:基本情報技術者試験 から確認できます。

科目Aでどう出る?

科目Aでは、タスクの優先度と状態遷移を組み合わせて問われます。

判断手順は次のとおりです。

1. 現在どのタスクが実行中か確認する
2. 新しく実行可能になったタスクの優先度を見る
3. 高優先度ならプリエンプションが起きる
4. 中断されたタスクは実行可能状態へ戻る

よく出るパターン

状況 OSの動作
高優先度Aを実行中に低優先度Bが起動 Aを継続、Bは実行可能状態
低優先度Bを実行中に高優先度Aが起動 Bを実行可能状態へ戻し、Aを実行
実行中タスクが入出力を要求 待ち状態へ移る
入出力が完了 待ち状態から実行可能状態へ移る

ディスパッチとプリエンプション

用語 意味
ディスパッチ 実行可能なタスクへCPUを割り当てる
プリエンプション 実行中タスクからCPUを取り上げる

例えば、Bの実行中にAへ切り替える場合は、次の2つが続けて起きます。

BからCPUを取り上げる
→ プリエンプション

AへCPUを割り当てる
→ ディスパッチ

どんな場面で使う?

プリエンプティブスケジューリングは、重要な処理を優先して実行したい場面で使われます。

  • 制御装置の異常停止処理
  • センサー割込みへの応答
  • 通信処理
  • リアルタイム監視
  • 複数アプリケーションの実行

例えば、通常の記録処理よりも、設備異常を検知した停止処理の優先度を高くしておけば、異常発生時にすぐCPUを切り替えられます。

通常処理を実行中
↓
異常停止タスクが起動
↓
通常処理を中断
↓
停止処理を優先実行

よくある誤解・混同

誤解1:中断されたタスクは待ち状態になる

中断の理由が高優先度タスクへの切替えなら、元のタスクは実行可能状態へ戻ります。

CPUを譲っただけ
→ 実行可能状態

入出力完了を待つ
→ 待ち状態

誤解2:新しいタスクが起動すれば必ず切り替わる

新しく起動したタスクの優先度が低ければ、現在の高優先度タスクは実行を継続します。

誤解3:プリエンプションとディスパッチは同じ

プリエンプションはCPUを取り上げる処理、ディスパッチはCPUを割り当てる処理です。

誤解4:ノンプリエンプティブ方式でも同じ動作をする

ノンプリエンプティブ方式では、実行中タスクが自らCPUを手放すまで、他のタスクへ強制的に切り替えません。

方式 特徴
プリエンプティブ OSが強制的に切り替えられる
ノンプリエンプティブ 実行中タスクがCPUを手放すまで待つ

誤解5:優先度が高いほど必ず待ち時間がゼロになる

高優先度でも、さらに高い優先度のタスクが動いていたり、必要な資源を待っていたりすると、すぐ実行できない場合があります。

確認問題(基本情報技術者試験対策)

優先度に基づくプリエンプティブスケジューリングを行うOSがある。タスクXの優先度はタスクYより高い。Yの実行中にXが実行可能になったときの動作として、最も適切なものはどれか。

  • ア. Yを待ち状態にしてXを実行する
  • イ. Yを実行可能状態にしてXを実行する
  • ウ. Xを待ち状態にしてYを実行し続ける
  • エ. XとYを同時に実行状態にする
▶ クリックして答えと解説を見る(ここを開く)

正解:イ

Xの方が高優先度なので、OSはYからCPUを取り上げてXへ切り替えます。

Yは入出力待ちではなく、CPUが空けば再開できるため、待ち状態ではなく実行可能状態へ戻ります。

まとめ(試験直前用)

  • プリエンプティブ方式は、OSが実行中タスクからCPUを取り上げられる方式
  • 高優先度タスクが起動すると、低優先度タスクを中断して切り替える
  • 中断されたタスクは、通常、待ち状態ではなく実行可能状態へ戻る
  • 実行可能状態は、CPUが割り当てられれば実行できる状態
  • 待ち状態は、入出力完了などを待っている状態
  • プリエンプションはCPUを取り上げる処理
  • ディスパッチは実行可能タスクへCPUを割り当てる処理
  • ノンプリエンプティブ方式では、実行中タスクを強制的に切り替えない

© 2024-2026 stemtazoo. All rights reserved.