平成30年度 秋期 午前 問17
ソフトウェア
プリエンプションに関する問題
プリエンプション方式のタスクスケジューリングにおいて,タスク B の実行中にプリエンプションが発生する契機となるのはどれか。ここで,タスクの優先度は,タスク A が最も高く,タスク A > タスク B = タスク C > タスク D の関係とする。
- アタスク A が実行可能状態になった。
- イタスク B が待ち状態になった。
- ウタスク C が実行可能状態になった。
- エタスク D が実行可能状態になった。
答えと解説を見る
✓ これが正解アタスク A が実行可能状態になった。
解説
より優先度の高いタスクが順番待ちに現れたときです。
優先度の異なる四つのタスクがある状況で、実行中のタスクから CPU が取り上げられる契機を選ぶ問いです。プリエンプションは横取りという意味で、OS が実行中のタスクから CPU を取り上げて別のタスクへ渡すことを指します。ですから契機になるのは、いま走っているものより優先度の高いタスクが順番待ちの列に現れたときです。タスク管理の三つの状態を置いておくと見通しが立ちます。実行状態は CPU を使っている状態で、同時に一つだけです。実行可能状態は走れるけれども順番を待っている状態、待ち状態は入出力などの完了を待っていて走れない状態です。プリエンプションとは、実行状態から実行可能状態への移り変わりが、そのタスク自身の都合ではなく外から起こることだと言い換えられます。設問が与えた優先度の関係は、最も高いものが一つ、同じ高さのものが二つ、最も低いものが一つという形です。走っているのは真ん中の高さのタスクですから、順番待ちに現れて取り上げる理由になるのは、最も高いタスクだけです。見分けの軸は二つあります。現れたタスクの優先度が実行中のものより高いかどうかと、状態の移り方が自発的かどうかです。取り上げられたタスクは消えず、実行可能状態のまま列に残ります。
ほかの選択肢はなぜ違うのか
- イタスク B が待ち状態になった。:実行中のタスク自身が入出力などの完了待ちに入った場合で、移り変わりは実行状態から待ち状態へです。自分から CPU を手放しているので横取りにはあたりませんし、この動きは横取りを行わない方式でも起こります。
- ウタスク C が実行可能状態になった。:順番待ちに現れたタスクの優先度は、実行中のものと同じ高さに設定されています。等しいだけでは走っている側を止める理由にならず、列に並ぶだけです。等しいを高いと読み違えると、ここで取り違えます。
- エタスク D が実行可能状態になった。:順番待ちに現れたタスクの優先度は、実行中のものより低く設定されています。低いものが列に加わっても走っている側は取り上げられず、そのまま実行を続けます。順番が回ってくるのは実行中のタスクが手放した後です。
出典:平成30年度 秋期 応用情報技術者試験 午前 問17
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)