令和元年度 秋期 基本情報技術者試験 午前 問18
テクノロジ/ソフトウェア優先度に基づくプリエンプティブなスケジューリングを行うリアルタイムOSで,二つのタスク A,B をスケジューリングする。A の方が B よりも優先度が高い場合にリアルタイムOSが行う動作のうち,適切なものはどれか。
出典:令和元年度 秋期 基本情報技術者試験 午前 問18
- アAの実行中にBに起動がかかると,Aを実行可能状態にしてBを実行する。
- イAの実行中にBに起動がかかると,Aを待ち状態にしてBを実行する。
- ウBの実行中にAに起動がかかると,Bを実行可能状態にしてAを実行する。
- エBの実行中にAに起動がかかると,Bを待ち状態にしてAを実行する。
正解:ウ
解説
プリエンプティブなスケジューリングでは,実行中のタスクより優先度の高いタスクが実行可能になると,OSが強制的にCPUを取り上げて優先度の高いタスクに切り替えます。取り上げられたタスクは,すぐに実行を再開できる「実行可能状態」に移ります。「待ち状態」は入出力完了などの事象を待つ状態であり,優先度によるプリエンプションでは待ち状態にはなりません。
選択肢ごとの解説
- ア誤り。優先度の低いBのために優先度の高いAを中断することはありません。
- イ誤り。優先度の低いBを優先させるうえに,Aを待ち状態にする点も誤りです。
- ウ正しい。優先度の高いAが起動すると,実行中のBは実行可能状態に戻され,Aが実行されます。
- エ誤り。Aを実行させる点は正しいのですが,中断されたBは実行可能状態になるのであって待ち状態にはなりません。