問題
優先度に基づくプリエンプティブなスケジューリングを行うリアルタイムOSで,二つのタスクA,Bをスケジューリングする。Aの方がBよりも優先度が高い場合にリアルタイムOSが行う動作のうち,適切なものはどれか。
キーボード:1〜4で選択・Enterで次へ
答え合わせ
- A
- B
- C
- D
自信の3択
えらぶと、この端末に記録します(登録はいりません)
解説
答えは c「Bの実行中にAに起動がかかると,Bを実行可能状態にしてAを実行する」 です。
プリエンプティブ(横取りあり)なスケジューリングでは、優先度の高いタスクが動ける状態になったら、実行中の低いタスクからCPUを取り上げます。
AのほうがBより優先度が高いので、Bの実行中にAが起動されると、OSはBを止めてAを実行します。止められたBは、CPUが空けばすぐ動ける実行可能状態に戻ります(何かを待っているわけではないので、待ち状態ではありません)。
👉 覚え方:優先度の高い方が横入りする。横入りされた方は「実行可能」で順番待ち。
ほかの選択肢:a・b 優先度の低いBが、高いAからCPUを奪うことはない/d 中断されたBは何も待っていないので「待ち状態」ではない。
なぜこれが正解か
正解は c。優先度に基づくプリエンプティブなスケジューリングでは,実行中のタスクより優先度の高いタスクが実行可能になった時点で,OSが実行中のタスクからCPUを横取り(プリエンプション)し,優先度の高いタスクを実行する。AはBより優先度が高いので,Bの実行中にAが起動されると,Bは中断されてAが実行される。中断されたBは入出力などの事象を待っているわけではなく,CPUが割り当てられればすぐ実行できるので実行可能状態に移る。
各選択肢の解説
- a 誤り:Aの実行中に優先度の低いBが起動されても,Aは中断されない。Bは実行可能状態で待つ。
- b 誤り:aと同様に,優先度の低いBがAを中断することはない。また中断されたタスクは待ち状態ではなく実行可能状態になる。
- c 正しい:優先度の高いAがBを横取りし,Bは実行可能状態になる。
- d 誤り:Aを実行する点は正しいが,中断されたBは事象待ちではないので「待ち状態」は誤り。
覚え方・ひっかけ注意
タスクの3状態:実行状態(CPUを使用中)/実行可能状態(CPUが割り当てられれば実行できる)/待ち状態(入出力完了などの事象を待っている)。横取りされたタスクは「実行可能状態」,入出力要求を出したタスクは「待ち状態」へ移る,と区別する。
理論的背景
リアルタイムOSでは,締切(デッドライン)までに処理を終える必要があるため,優先度に基づくプリエンプティブ・スケジューリングが基本となる。実行可能なタスクのうち最も優先度の高いものを常に実行し,より優先度の高いタスクが実行可能になれば,実行中のタスクを直ちに中断して切り替える。切替え時には,中断するタスクのレジスタなどの実行状態(コンテキスト)を保存し,再開時に復元する。タスクの状態は,実行状態・実行可能状態・待ち状態の3つで表され,プリエンプションによる中断は「実行状態→実行可能状態」,入出力要求や資源待ちは「実行状態→待ち状態」,待っていた事象の発生は「待ち状態→実行可能状態」の遷移になる。
実務での使われ方
組込み機器の制御(モータ制御,通信プロトコル処理,センサ監視など)では,μITRON や FreeRTOS などのリアルタイムOSが使われ,緊急度の高い処理ほど高い優先度を割り当てる。周期タスクの優先度を周期の短い順に付けるレートモノトニック・スケジューリングは代表的な設計手法である。注意点として,低優先度タスクが資源を保持している間に中優先度タスクが割り込み,高優先度タスクが待たされ続ける優先度逆転があり,優先度継承プロトコルなどで対策する。
試験での位置づけ
基本情報ではタスクの状態遷移とプリエンプションの基本,応用情報・エンベデッドシステムスペシャリストでは優先度逆転,割込み処理,タイマによる周期起動などが問われる。「横取りされたタスクは実行可能状態」という点が繰り返し狙われる。
選択肢の発展補足
a・b は「優先度の低いタスクが高いタスクを中断する」としている点で誤り。プリエンプションは常に優先度の高いタスクのために行われる。d は中断されたタスクを「待ち状態」としている点が誤りで,待ち状態は入出力完了など外部の事象を待っている場合に限られる。ノンプリエンプティブ(横取りなし)方式では,実行中のタスクが自ら CPU を手放すまで A は待たされるため,応答時間の保証が難しくなる。
出典と作り方
出典:IPA(情報処理推進機構)公式 基本情報技術者試験 令和元年度 秋期 問18/ 公的機関配布資料につき出典明記の上引用。解説は合格ナビ独自の3段階の解説(初級・標準・上級)です。

