戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

基本情報技術者 2019年 秋期 午前(科目A)18


問題文

優先度に基づくプリエンプティブなスケジューリングを行うリアルタイムOSで、二つのタスクA,Bをスケジューリングする。Aの方がBよりも優先度が高い場合にリアルタイムOSが行う動作のうち、適切なものはどれか。

選択肢

Aの実行中にBに起動がかかると、Aを実行可能状態にしてBを実行する。
Aの実行中にBに起動がかかると、Aを待ち状態にしてBを実行する。
Bの実行中にAに起動がかかると、Bを実行可能状態にしてAを実行する。(正解)
Bの実行中にAに起動がかかると、Bを待ち状態にしてAを実行する。

優先度に基づくプリエンプティブスケジューリングの動作【午前2 解説】

要点まとめ

  • 結論:プリエンプティブ方式では高優先度タスクが起動すると低優先度の実行を中断し、高優先度を即時実行へ切替えます。
  • 根拠:プリエンプティブは「割込み的に実行中タスクを実行可能(ready)状態に戻す」ことで,優先度の高いタスクを優先実行する設計です。
  • 差がつくポイント:実行可能状態と待ち状態の違いを正確に押さえ,「実行中→実行可能」に戻る挙動を選べるかが鍵になります。

正解の理由

正解:
プリエンプティブ優先度スケジューリングでは、より高い優先度のタスクが起動した時点で現在実行中の低優先度タスクを中断(実行可能状態へ戻す)して高優先度タスクを実行します。選択肢ウは「Bの実行中にAが起動すると、Bを実行可能状態にしてAを実行する」と述べており、これがプリエンプションの典型的な動作と一致します。

よくある誤解

  • 「待ち状態」にする表現をそのまま選んでしまう:実行中のタスクは通常「待ち」ではなく「実行可能(ready)」に戻る点を混同しやすいです。
  • プリエンプト=強制終了と誤解する:タスクは終了せず状態遷移(running→ready)するだけで、後で再実行されます。
  • 優先度の大小を逆に読む:設問の「Aの方がBより優先度が高い」を確認せずに選択肢を誤る受験者が多いです。

解法ステップ

  1. 設問から「プリエンプティブ(preemptive)」であることを確認する。
  2. タスクの優先度関係(AがBより高い)を明確にする。
  3. 「実行中に他タスクが起動した」場合の遷移を考える:高優先度が起動すれば現在実行中は中断されてreadyへ。
  4. 選択肢の語句(実行可能状態/待ち状態)を正確に比較して、上記の遷移に一致するものを選ぶ。

選択肢別の誤答解説

  • ア: 「Aの実行中にBが起動すると、Aを実行可能にしてBを実行する。」
    → 誤り。Aは既に実行中なので「実行可能にする」表現は矛盾。さらにAの優先度が高くBを強制実行する理由がない。
  • イ: 「Aの実行中にBが起動すると、Aを待ち状態にしてBを実行する。」
    → 誤り。優先度が高いAを待ちにする根拠がなく、プリエンプティブでも低優先度が高優先度を押しのけて実行されない。
  • : 「Bの実行中にAが起動すると、Bを実行可能状態にしてAを実行する。」
    → 正解。高優先度のAが起動した際に低優先度のBを中断してreadyに戻し、Aを実行するプリエンプトの挙動を正確に表現している。
  • エ: 「Bの実行中にAが起動すると、Bを待ち状態にしてAを実行する。」
    → 誤り。中断されたタスクは通常「待ち(blocked)」ではなく「実行可能(ready)」状態へ遷移するため用語が不適切。

補足コラム

プリエンプティブ優先度スケジューリングは応答性が高くリアルタイム性を確保しやすい反面、優先度逆転(priority inversion)の問題が発生することがあります。これは低優先度タスクが共有資源を保持している間に中間優先度タスクが高優先度タスクの実行を妨げる現象で、対策として優先度継承(priority inheritance)や優先度天井(priority ceiling)プロトコルが用いられます。またコンテキストスイッチのコストも考慮する必要があります。

FAQ

Q. 実行可能状態(ready)と待ち状態(blocked)の違いは?
A. 実行可能状態はCPU割当てを待っている状態、待ち状態はI/Oやイベント等の外的条件待ちでスケジューラの候補から外れる状態です。
Q. 非プリエンプティブの場合はどうなる?
A. 非プリエンプティブでは一度実行を始めたタスクは自発的にCPUを放棄するまで実行を続けるため、高優先度タスクが起動しても直ちに実行に移れません。
Q. 「実行可能にする」と「待ちにする」の表現は混同していいの?
A. 混同は命取りです。設問では正確な状態遷移(running→ready)がポイントなので、用語の違いを区別してください。

関連キーワード: プリエンプティブ、優先度スケジューリング、実行可能状態、待ち状態、コンテキストスイッチ、優先度逆転、優先度継承、リアルタイムOS
← 前の問題へ次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

基本情報技術者
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について