プリエンプション(ぷりえんぷしょん)
マルチタスク環境において、OSが実行中のタスクやプロセスからCPUの実行権を強制的に奪い、実行可能状態にある別のタスクへ切り替える動作。優先度のより高いタスクが実行できる状態になったときや、割り当てた持ち時間を使い切ったときに起こる。
詳細解説
タスクのスケジューリングには、OSが強制的にCPU利用権を取り上げるプリエンプティブ方式と、実行中のタスクが自発的に処理の中断や入出力待ちをOSに要求したときだけ切り替えを行うノンプリエンプティブ方式があります。プリエンプションを受けて中断したタスクは、入出力の完了のような何かの出来事を待つ理由がなく、CPUが再び割り当てられればすぐ続きを実行できるので、待ち状態ではなく実行可能状態に移ります。
優先度に基づくリアルタイムOSなどでは、緊急性の高い処理を即座に実行するためにこの仕組みが不可欠です。ただし、低優先度のタスクが複数の共有資源を順番に確保する途中でプリエンプションが発生し、割り込んだ高優先度のタスクが逆の順序で同じ資源を確保しようとすると、互いの解放を待ち合うデッドロックに陥ることがあるため、資源の獲得順序の統一などの対策が求められます。
プリエンプションが問われた過去問
- 2021(R3)春 午前 問17リアルタイムOSにおいて,実行中のタスクがプリエンプションによって遷移する状態はどれか。
- 2023(R5)秋 午前II 問6優先度に基づくプリエンプティブスケジューリングのリアルタイムOSを使用した組込みシステムにおいて,入力装置及び出力装置にアクセスする二つのタ
- 2025(R7)秋 午前II 問6優先度に基づくプリエンプティブスケジューリングのリアルタイムOSを使用した組込みシステムにおいて,入力装置及び出力装置にアクセスする二つのタ
- 2025(R7)春 午前 問14リアルタイムOSにおいて,実行中のタスクがプリエンプションによって遷移する状態はどれか。