平成25年度 秋期 基本情報技術者試験 午前 問18
テクノロジ/ソフトウェア優先度に基づくプリエンプティブなスケジューリングを行うリアルタイムOSで,二つのタスクA,Bをスケジューリングする。Aの方がBより優先度が高い場合にリアルタイムOSが行う動作のうち,適切なものはどれか。
出典:平成25年度 秋期 基本情報技術者試験 午前 問18
- アAの実行中にBに起動がかかると,Aを実行可能状態にしてBを実行する。
- イAの実行中にBに起動がかかると,Aを待ち状態にしてBを実行する。
- ウBの実行中にAに起動がかかると,Bを実行可能状態にしてAを実行する。
- エBの実行中にAに起動がかかると,Bを待ち状態にしてAを実行する。
正解:ウ
解説
優先度に基づくプリエンプティブなスケジューリングでは,優先度の高いタスクが実行可能になると,現在実行中の優先度が低いタスクを強制的に中断(待ち状態または実行可能状態に)し,優先度の高いタスクを実行します。AがBより優先度が高いので,Bの実行中にAに起動がかかると,Bを中断してAを実行します。
選択肢ごとの解説
- ア誤り。優先度の高いAの実行中に優先度の低いBに起動がかかっても,Aはそのまま実行を継続すべきであり,Bに実行権を渡すのは不適切です。
- イ誤り。上記と同様に,優先度の高いAを待ち状態にしてまで優先度の低いBを実行するのは,優先度に基づくスケジューリングの趣旨に反します。
- ウ正しい。優先度の高いAに起動がかかった場合,実行中の優先度の低いBを実行可能状態にして,直ちにAを実行するのがプリエンプティブなスケジューリングの動作です。
- エ誤り。Bを待ち状態にする点は結果的に近いですが,一般にプリエンプションでは中断されたタスクは待ち状態ではなく実行可能状態に置かれ,再度スケジューリング対象となります。