平成27年度 秋期 午前 問16
ソフトウェア
プリエンプションに関する問題
プリエンプション方式のタスクスケジューリングにおいて,タスク B の実行中にプリエンプションが発生する契機となるのはどれか。ここで,タスクの優先度は,タスク A が最も高く,タスク A > タスク B = タスク C > タスク D の関係とする。
- アタスク A が実行可能状態になった。
- イタスク B が待ち状態になった。
- ウタスク C が実行可能状態になった。
- エタスク D が実行可能状態になった。
答えと解説を見る
✓ これが正解アタスク A が実行可能状態になった。
解説
上位のタスクが現れたときに横取りされます。
プリエンプションは、実行中のタスクから OS が CPU を取り上げることです。ここを押さえると、判断の軸は二つに定まります。一つは、手放したのが本人か、それとも取り上げられたのかという点。もう一つは、新しく走れる状態になったタスクの優先度が、いま走っているタスクより上か、同じか、下かという点です。設問はタスクスケジューリングの前提として、四つのタスクの優先度の関係を明示しています。走っているのは二番目に高いタスクで、そこへそれより高いタスクが実行可能になれば、OS は走っているほうから CPU を取り上げ、実行可能な状態へ戻したうえで、高いほうを走らせます。これが横取りです。四つの記述は、上位が現れた場合、同位が現れた場合、下位が現れた場合、そして本人が待ちに入った場合を一通り並べたものなので、この二つの軸だけで切り分けられます。時間切れによる切替えも横取りの一種ですが、この設問では選択肢に現れていません。
ほかの選択肢はなぜ違うのか
- イタスク B が待ち状態になった。:入出力の完了待ちなどで、走っていたタスク自身が CPU を手放した形です。取り上げられたわけではないので、横取りが起きた場面には当たりません。
- ウタスク C が実行可能状態になった。:設問は、この二つのタスクの優先度が等しいと与えています。同じ高さのものが走れる状態になっても、いま走っているほうを押しのける理由にはなりません。
- エタスク D が実行可能状態になった。:優先度が下のタスクが走れる状態になっても、順番を待つ列に並ぶだけです。上位が CPU を握っている間は、順番が回ってきません。
出典:平成27年度 秋期 応用情報技術者試験 午前 問16
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)