基本情報技術者 2016年 春期 午前(科目A) 問16
問題文
組込みリアルタイムOSで用いられる、優先度に基づくプリエンプティブなスケジューリングの利用方法として、適切なものはどれか。
選択肢
ア:各タスクの実行時間を均等配分する場合に利用される。
イ:起動が早いタスクから順番に処理を行う場合に利用される。
ウ:重要度及び緊急度に応じて処理を行う場合に利用される。(正解)
エ:処理時間が短いタスクから順番に処理を行う場合に利用される。
🔒 解説は解答すると表示されます
優先度ベースのプリエンプティブスケジューリング【午前解説】
正解の理由
選択肢の中で正しいのは ウ です。問題文の「優先度に基づくプリエンプティブなスケジューリング」は、タスクに割り当てられた優先度を基準に運用し、より高い優先度のタスクが実行可能になると低優先度のタスクを中断して実行を開始します。これにより「重要度および緊急度」に基づいて処理順序を決め、リアルタイム要件(短い応答時間やデッドラインの達成)を満たすのに適しています。他の選択肢はラウンドロビンや先着順(FCFS)、最短処理時間優先(SJF)など別のスケジューリング方式を示しており、本問の条件と一致しません。
解法ステップ
- 問題文のキーワードを確認:「優先度に基づく」「プリエンプティブ」。
- 用語の意味を思い出す:プリエンプティブ=中断可能、優先度に基づく=重要度や緊急度で順序決定。
- 選択肢を一つずつ照合:均等配分→ラウンドロビン、起動が早い→FCFS、処理時間が短い→SJF、と照合して除外。
- 残ったものが「重要度及び緊急度に応じて処理を行う」=正解(ウ)。
選択肢別の誤答解説
- ア: 各タスクの実行時間を均等配分する場合に利用される。
誤り。均等配分はラウンドロビン等のタイムスライス方式であり、優先度ベースのプリエンプティブとは目的が異なります。 - イ: 起動が早いタスクから順番に処理を行う場合に利用される。
誤り。起動順(先着順=FCFS)はプリエンプトや優先度付けの概念とは無関係です。 - ウ: 重要度及び緊急度に応じて処理を行う場合に利用される。
正解。優先度に基づき、高優先度タスクが低優先度タスクを中断して実行するため、重要度・緊急度を反映した運用が可能です。 - エ: 処理時間が短いタスクから順番に処理を行う場合に利用される。
誤り。処理時間が短い順は SJF(Shortest Job First)であり、優先度ベースの方式とは別の戦略です。
よくある誤解
- 「優先度=処理時間が短い」:優先度は重要度や締切の緊急性で決めるので、処理時間の短さとは別概念です。SJFとは異なります。
- 「起動が早い順=優先度方式」:起動時刻順(FCFS)はプリエンプトとは無関係で、優先度で中断・介入しません。
- 「プリエンプトするだけで安全」:優先度逆転や飢餓に配慮しないと、重要タスクがブロックされたり低優先度が実行されなくなる問題が発生します。
補足コラム
優先度ベースのスケジューリングには「静的優先度(設計時に決定)」と「動的優先度(実行時に変化)」があります。代表的なリアルタイムアルゴリズムには、周期が短いほど優先度が高いとするレートモノトニック(RM)や、最も近いデッドラインを優先するEarliest Deadline First(EDF)があります。実装上の注意点として優先度逆転(低優先度タスクが資源を保持して高優先度タスクをブロックする)を防ぐために優先度継承や優先度上限プロトコルが用いられます。組込みRTOS(例: FreeRTOS)ではプリエンプティブとコオペラティブ(非プリエンプティブ)モードが設定でき、用途に応じて選択します。
FAQ
Q1: プリエンプティブと非プリエンプティブの違いは何ですか?
A1: プリエンプティブは高優先度タスクが低優先度タスクを中断できる方式、非プリエンプティブはタスクが自ら実行を終了するまで中断されない方式です。用途に応じて応答性と単純性を選びます。
A1: プリエンプティブは高優先度タスクが低優先度タスクを中断できる方式、非プリエンプティブはタスクが自ら実行を終了するまで中断されない方式です。用途に応じて応答性と単純性を選びます。
Q2: 優先度逆転とは何ですか、どう防ぐのですか?
A2: 優先度逆転は低優先度が共有資源を保持して高優先度が待たされる現象で、優先度継承や優先度上限プロトコルで防ぎます。
A2: 優先度逆転は低優先度が共有資源を保持して高優先度が待たされる現象で、優先度継承や優先度上限プロトコルで防ぎます。
Q3: いつSJFやFCFSを使うべきですか?
A3: バッチ処理や公平性が重視されるシステムではSJFやFCFSが有効ですが、厳密な応答時間やデッドライン保証が必要なリアルタイム用途には適さないことが多いです。
A3: バッチ処理や公平性が重視されるシステムではSJFやFCFSが有効ですが、厳密な応答時間やデッドライン保証が必要なリアルタイム用途には適さないことが多いです。
Q4: 優先度はどう決めればよいですか?
A4: タスクの重要度、緊急度、デッドライン、周期性を総合して決定します。周期に基づくRMやデッドラインに基づくEDFのような設計指針も有効です。
A4: タスクの重要度、緊急度、デッドライン、周期性を総合して決定します。周期に基づくRMやデッドラインに基づくEDFのような設計指針も有効です。
関連キーワード: リアルタイムOS、プリエンプティブ、優先度スケジューリング、優先度逆転、優先度継承、レートモノトニック、EDF、組込みシステム

\ せっかくなら /
基本情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

