マルチタスク

マルチタスク(multitasking)とは、二つ以上の処理をタスクという単位に分割して、同時あるい少しのずれで並行しながら実行することを言う。

コンピュータの分野では、オペレーティングシステム(OS)のタスク管理がある。CPU(シングルコア)が一つしかないコンピュータは、複数処理を完全に並行して処理することは出来ない。しかし、短いタスク間で分割し、一つのCPUへ順番に、そのタスクの仕事をさせることによって、複数のアプリケーションがあたかも同時に動いているように見せかけることができる。

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

現在、広く使われているWindowsやMac、Linux、UNIXといったOSはすべてマルチタスクである。初期のMacやWindows 3.1などは、後述するノンプリエンプティブ・マルチタスクである。

ちなみに、スタンフォード大学の研究者クリフォード・ナスによると、人間がマルチタスクをした場合も脳内で並行処理されているわけではなく、脳内の別々の領域で処理が行われているそうだ。短時間で切り替えを頻繁に行っているという。また、二つのことを同時にした場合、その比率は半々ではなく、90%前後まで低下するそうだ。つまり、実社会において複数作業を同時進行しても能力や仕事の量が向上するわけではなさそうだ。

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

OSが強制的にタスク管理をする場合、プリエンプティブマルチタスクという。割り込みによって制御がOSに移る。この割り込みのことをプリエンプションと言う。プリエンプションは、コンピュータが実行しているタスクを一時中断する処理を指す。

すなわち、OSが割り込みの仕組みを利用して、今実行されている処理を一旦停止させるとともにスケジューラを読み込み、その次に移るべき仕事を決定する仕組みがプリエンプティブ・マルチタスクである。

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

ノンプリエンプティブマルチタスクは、各アプリケーションが、CPUの使われていない未使用時間、あるいはCPUの空き時間を他のアプリケーションに開放し、結果として同時実行するマルチタスクの一つである。これによって複数のアプリケーションを同時に実行することが可能になるが、その中でCPUを占有し続けるアプリケーションがあると、マルチタスクではなく、実際にはシングルタスクと同じことをしていることになる。擬似マルチタスクや協調的マルチタスクともいう。

マルチタスクの意味を簡潔に説明すると

複数のタスクを切り替えて実行すること。