プリエンプティブマルチタスク 【preemptive multitasking】 非協調的マルチタスク

概要

プリエンプティブマルチタスク(preemptive multitasking)とは、一つの処理装置(CPU)で並行して複数の処理を進めるマルチタスクで、CPUをOSが管理する方式。OSがCPUの処理能力を実行中のプログラムに少しずつ順番に割り当てて実行させる。

OSはCPUの割り込み機構を利用し、一定時間ごとに実行中のプログラムを強制的に一時停止し、同じように停止させられ待っている他のプログラムの実行を再開する。プログラム側の振る舞いによらずOS側から実行を差し止めて待機させる仕組みのことをプリエンプションpreemption)という。

停止したプログラムは状態を保存して待機し、再び順番が巡ってくると実行を再開する。このような切り替え(コンテキストスイッチcontext switching)を短い周期で繰り返すことにより、あたかも同時に複数のプログラムが実行されているように装うことができる。

OSはCPUの実行時間をあらかじめ決められた短い時間単位に分割してプログラムに割り当てる。これを「タイムスライス」(time slice)と呼び、ハードウェアタイマーなどを利用してマイクロ秒単位で設定したり、CPUクロック周期の回数ごとに設定したりする。

コンテキストスイッチのたびにプログラムの実行状態の退避や呼び戻しなどの処理が発生するため、タイムスライスが短すぎると切り替えにかかるオーバーヘッドが大きくなり実効性能が落ちることになるが、逆に長過ぎると外部との入出力や状況の変化に即座に追随できなくなり、体感的な性能が落ちることになる。

多くのOSはプログラムの実行状態に優先度を設定することができ、必ずしもすべてのプログラムに平等に実行時間を割り当てるわけではない。OSによる実行順の調整はスケジューリングscheduling)と呼ばれ、OSのカーネルなどに組み込まれたスケジューラscheduler)によって制御される。

一方、OSにプリエンプションの機能がなく、プログラム側が自発的に制御をOSに明け渡すことで実行プログラムの切り替えを行っていく方式を「ノンプリエンプティブマルチタスク」(nonpreemptive multitasking)あるいは「協調的マルチタスク」「擬似マルチタスク」などという。初期のパソコン向けOSなどではこの方式も見られたが、現在ではプリエンプティブマルチタスクが主流となっている。

(2018.9.27更新)

他の辞典による解説 (外部サイト)

この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。