マルチタスクとは
マルチタスク は、 コンピュータ において複数の タスク ( プロセス )を切り替えて実行することができるシステムのこと。 マルチプログラミング 、 マルチプロセス ともいう。逆に、同時に一つのタスクしか実行できない方式を シングルタスク という。
コンピュータはCPU、メモリ、ディスク、キーボードなどのI/O、ネットワークインターフェースなどから構成される。一般的に、CPUの計算処理時間に比べ、ディスクやネットワークの処理時間は数十から数百倍かかる。シングルタスク環境では、逐次処理が行われるため、入力待ちや通信待ちなど、CPUが計算を実行できずに、待つ時間が発生する。マルチタスクの導入によって、これらの待ち時間の間にCPUを動作させ別の計算を行い、全体の処理時間の短縮を実現することが可能になる。
一方、マルチタスク環境では、並行プログラミングの手法が利用でき、機能をタスクとして分割することで、ソフトウェアの再利用性を上げることができる。
1つのCPUしかないコンピュータでは、ある瞬間には1つの処理しか実行できない。しかし、CPUの処理時間を数十ミリ秒といった短い時間で区切り、タスク間で1つのCPUをタイムシェアリングすることによって、ユーザーから見ると、複数の アプリケーション (タスク・プロセス)が同時に実行されているように見える。
タスクの切り替えのオーバーヘッドや、 キャッシュ や トランスレーション・ルックアサイド・バッファ のミスヒット率の上昇などのコストがかかるが、入出力待ちなどであるタスクの実行が止まっても他のタスクが実行されるため、全体として スループット の上昇が期待できる。
プリエンプティブ・マルチタスク
タスクの切り替えにはハードウェアタイマ 割り込み が用いられることが多く、この場合割り込みによって一定時間内( タイムスライス )に強制的に オペレーティングシステム (OS)に制御が移る。OSは一定の方式に従い次のタイムスライスを実行中の タスク ・ プロセス ・ スレッド (マルチスレッドOSの場合)に割り当てる。このことを プリエンプション (preemption, 横取り) という。
この方式を特に プリエンプティブ (preemptive) なマルチタスクという。パーソナルコンピュータ用商用OSでは、 OS/2...






