平成25年度 秋期 午前 問18
ソフトウェア
プリエンプティブに関する問題
優先度に基づくプリエンプティブなスケジューリングを行うリアルタイム OS で,二つのタスク A,B をスケジューリングする。A の方が B より優先度が高い場合にリアルタイム OS が行う動作のうち,適切なものはどれか。
- アA の実行中に B に起動がかかると,A を実行可能状態にして B を実行する。
- イA の実行中に B に起動がかかると,A を待ち状態にして B を実行する。
- ウB の実行中に A に起動がかかると,B を実行可能状態にして A を実行する。
- エB の実行中に A に起動がかかると,B を待ち状態にして A を実行する。
答えと解説を見る
✓ これが正解ウB の実行中に A に起動がかかると,B を実行可能状態にして A を実行する。
解説
優先度の高い側が横取りし、奪われた側は実行可能状態です。
この設問は二つの点を別々に決めると整理できます。一つ目は、どちらがどちらを追い出すのかです。プリエンプティブな方式では、動いているタスクを途中で止めて割り込めるのは優先度が高い側ですから、優先度の低いタスクが動いている最中に高いタスクへ起動がかかったときに入れ替わりが起きます。二つ目は、追い出された側がどの状態へ移るのかです。待ち状態は入出力の完了など外の出来事を待つときに入る状態であり、自分から何かを頼んだ場合に限られます。追い出された側は処理装置を取り上げられただけで何も待っていませんから、順番が回ればすぐ動ける実行可能状態へ移ります。判定の軸はこの二点です。
ほかの選択肢はなぜ違うのか
- アA の実行中に B に起動がかかると,A…:優先度の低い側に起動がかかったときに、動いている高い側を追い出す形になっています。割り込めるのは優先度が高い側なので、入れ替わりの向きが逆です。
- イA の実行中に B に起動がかかると,A…:入れ替わりの向きが逆であるうえに、追い出された側を待ち状態へ移しています。外の出来事を待っているわけではないので、移る先としても当てはまりません。
- エB の実行中に A に起動がかかると,B…:入れ替わりの向きは合っていますが、追い出された側を待ち状態へ移しています。処理装置を取り上げられただけで何かの完了を待ってはいないため、順番が回ればすぐ動ける側の状態が正しくなります。
出典:平成25年度 秋期 基本情報技術者試験 午前 問18
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)