プリエンプティブマルチタスク

プリエンプティブマルチタスク(preemptive multitask)とは、OSCPU使用時間を各アプリケーションに割り当てて、複数の作業を並行して実行する方式のことをいう。

プリエンプティブマルチタスクは、マルチタスクの一つで、二つ以上の作業をタスクに分け、同時もしくはわずかなずれで並行して処理を行うものである。

CPU状態の保存や復元による切り替えを行うコンテキストスイッチも関わっており、これはLinuxカーネルでサポートしているようだ。

ノンプリエンプティブマルチタスクは、プリエンプティブマルチタスクに対比される言葉であり、こちらは疑似的あるいは協調的マルチタスクとも呼ばれる。CPUの空き時間、もしくはタスクがリソースを要しない時、これらを実行中のアプリケーション自らが他のアプリケーションへ開放するようにプログラムされた方式である。しかし、CPUを独占し続けるアプリがあると、期待する機能を発揮しない。古いMacやWindows98の16ビット及びそのアプリ以前はこの方式であった。

プリエンプティブマルチタスクは非協調的であり、優先順位の高いタスクがあれば、現在実行されているタスクを止め、強制的に権限をとってしまう方式である。プリエンプティブマルチタスクによってタスク管理が強制的にOSへ移ると、プリエンプションという割り込みが発生する。割り込みハンドラと似た概念だ。これによって一つのアプリがCPUを独占するといった現象が起きないようにコントロールされる。プリエンプティブマルチタスクは、Windows95の32ビット及びそのアプリ以降で採用されている。

プリエンプティブマルチタスクの意味を簡潔に説明すると

OSによる強制割り込みによって並行処理すること。