平成29年度 秋期 基本情報技術者試験 午前 問18
テクノロジ/ソフトウェア優先度に基づくプリエンプティブなスケジューリングを行うリアルタイムOSで,二つのタスクA,Bをスケジューリングする。Aの方がBよりも優先度が高い場合にリアルタイムOSが行う動作のうち,適切なものはどれか。
出典:平成29年度 秋期 基本情報技術者試験 午前 問18
- アAの実行中にBに起動がかかると,Aを実行可能状態にしてBを実行する。
- イAの実行中にBに起動がかかると,Aを待ち状態にしてBを実行する。
- ウBの実行中にAに起動がかかると,Bを実行可能状態にしてAを実行する。
- エBの実行中にAに起動がかかると,Bを待ち状態にしてAを実行する。
正解:ウ
解説
優先度に基づくプリエンプティブなスケジューリングでは,実行中のタスクよりも優先度の高いタスクに起動がかかると,実行中のタスクの処理を中断(プリエンプト)してでも,優先度の高いタスクをすぐに実行します。中断されたタスクは処理が完了していないため「待ち状態」ではなく,再び実行される機会を待つ「実行可能状態」に置かれます。
選択肢ごとの解説
- ア誤り。優先度の高いAの実行中に,優先度の低いBに起動がかかっても,Aの実行を中断してBを実行する必要はなく,Aの実行が継続されます。
- イ誤り。優先度の高いAの実行中に優先度の低いBに起動がかかっても,Aを待ち状態にする理由がなく,Aはそのまま実行が継続されます。
- ウ正しい。優先度の低いBの実行中に優先度の高いAに起動がかかると,Bを実行可能状態にして直ちにAを実行するのがプリエンプティブなスケジューリングです。
- エ誤り。Bの実行を中断する際は,Bの処理はまだ完了していないため,待ち状態ではなく実行可能状態(レディ状態)に戻されます。