マルチタスク 【multitasking】 マルチプロセス / multi-process / マルチプログラミング / multi-programming / 多重プログラミング
概要
マルチタスク(multitasking)とは、システムなどが、同時に複数のタスク(作業、処理)を並行して実行すること。また、OSがコンピュータやマイクロプロセッサ(CPU/MPU)をそのように運用すること。マルチタスクに対応したOSでは複数のプログラムを同時に実行状態に置くことができ、利用者が操作・表示していないプログラムも処理を進めることができる。利用者は複数のソフトウェアを利用する際にいちいち起動・終了を繰り返す必要がなく、即座に別のソフトウェアに切り替えて中断した操作を再開することができる。
コンピュータ上でのプログラムの実行は、細かく見ると入出力の待ち時間などが発生しており、何もしていない時間に別のプログラムの実行を進めることで計算資源の利用効率を向上させることができる。
CPU(マイクロプロセッサ)あるいはCPU内部のプロセッサコアが一つしか無いシステムでは同時に一つのプログラムしか実行できないが、その場合は処理時間を極めて短い時間ごとに区切って稼働中のプログラムに割り当て、順番に切り替えてプロセッサを使用することで並行して実行させる。この切り替え処理を「コンテキストスイッチ」(context switching)という。
プリエンプティブマルチタスクとノンプリエンプティブマルチタスク
CPUをOSが管理し、処理能力を実行中のプログラムに少しずつ順番に割り当てて実行させる方式を「プリエンプティブマルチタスク」(preemptive multitasking)あるいは「非協調的マルチタスク」、プログラム側が自発的に制御をOSに明け渡すことで実行プログラムの切り替えを行っていく方式を「ノンプリエンプティブマルチタスク」(nonpreemptive multitasking)あるいは「協調的マルチタスク」「擬似マルチタスク」などという。
シングルタスク (ユニタスク)
システムなどが、一度に一つのタスク(作業、処理)のみを実行可能なことをシングルタスク(single-tasking)あるいはユニタスク(unitasking)という。
初期のコンピュータやOSは基本的にシングルタスクで動作していたが、近年では主要なシステムはほとんどマルチタスク動作が可能となっており、複数のソフトウェアなどを同時に起動して動作させることができる。
また、画面表示や操作方式(ユーザインターフェース)の特徴として、起動したソフトウェアが画面全体を占有し、一度に一つのソフトしか表示・操作できない仕組みのことをシングルタスクという場合もある。その際、OSの設計はマルチタスクになっており、利用者から見えない状態(バックグラウンド)で複数のソフトウェアが実行されている場合もある。