平成29年度 秋期 午前 問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…:低いほうを待ち状態にすると述べています。割り込む向きは、確かに正しい形でした。けれども入る状態を取り違えています。取り上げられた側は、実行可能で待ちました。待ち状態ではありません。片側だけ違います。状態のほうが違いました。
出典:平成29年度 秋期 基本情報技術者試験 午前 問18
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)