応用情報技術者試験 平成30年秋 午前問17 解説付き過去問
問題
プリエンプション方式のタスクスケジューリングにおいて、タスクBの実行中にプリエンプションが発生する契機となるのはどれか。
ここで、タスクの優先度は、タスクAが最も高く、タスクA > タスクB = タスクC > タスクDの関係とする。
ここで、タスクの優先度は、タスクAが最も高く、タスクA > タスクB = タスクC > タスクDの関係とする。
正解
解説
この問題は、プリエンプション方式(プリエンプティブスケジューリング)における、実行中のタスクを中断して他のタスクに切り替える契機を問うものです。
- プリエンプション方式の特徴
プリエンプション方式とは、OSがタスクの優先度や状態を監視し、より高い優先度のタスクが実行可能状態になった場合に、現在実行中のタスクを中断してCPUを高優先度のタスクに割り当てる方式です。
この方式により、常に最も重要なタスクが先に処理されることが保証されます。 - タスクの優先度関係
問題文では、タスクの優先度は「A > B = C > D」とされています。これは、タスクAが最も高く、タスクBとタスクCが同一であり、タスクDは最も低いという関係です。
このため、タスクBが実行中のときにタスクAが実行可能状態になると、タスクAの方が優先度が高いためプリエンプションが発生します。 - 選択肢の検証
各選択肢がプリエンプションの契機となるかを検討します。
- タスクAが実行可能状態になった場合:タスクAはタスクBより優先度が高いため、プリエンプションが発生します。
- タスクBが待ち状態になった場合:これはタスクBが自発的にCPUを放棄する状態であり、プリエンプションとは異なります。
- タスクCが実行可能状態になった場合:タスクBと同じ優先度のため、実行中のタスクBを中断させる契機にはなりません。
- タスクDが実行可能状態になった場合:タスクBより優先度が低いため、プリエンプションは発生しません。
したがって、タスクBの実行中にプリエンプションが発生する契機は、「タスクAが実行可能状態になった場合」です。これはタスクAが最も高い優先度であり、CPUを奪って実行を開始する条件を満たすためです。