プリエンプション 【preemption】
概要
プリエンプション(preemption)とは、コンピュータ上で実行中のプログラム(タスク)を強制的に一時中断し、他をプログラムの実行に切り替えること。オペレーティングシステム(OS)のタスクスケジューラが実行中のアプリケーションに対して行う操作の一つ。OSがCPU(MPU/マイクロプロセッサ)の割り込み機構などを利用して実施する操作で、現在実行されているタスクの実行状態を保存して強制的に停止し、同じように中断されていた他のタスクの実行を再開する。
このようなタスクの切り替えを「コンテキストスイッチ」(context switching)と呼び、プリエンプションによって停止していたタスクの実行を再開させる操作を「ディスパッチ」(dispatch)という。
この切り替えを短い周期で高速に繰り返すことで、CPUが一台のコンピュータでも複数のプログラムを同時に並行して実行させることができる。これを「マルチタスク」(multitasking)と呼び、プリエンプションを利用する方式を特に「プリエンプティブマルチタスク」(preemptive multitasking)という。
現代のCPUやOSのマルチタスク方式のほとんどはプリエンプションを利用しているが、歴史的には、タスク側が自ら決めたタイミングで自発的にOS側へ制御を返却することでタスク切り替えを行う「ノンプリエンプティブマルチタスク」あるいは「協調的マルチタスク」が用いられることもあった。
(2021.7.5更新)