マルチタスク

マルチタスク () は、コンピュータにおいて複数のタスク（プロセス）を切り替えて実行できるシステムのことである。Unixなど「プロセス」という用語を使うシステムではマルチプロセスともいう（ほぼ同じものを別のシステムでは別の名で呼んでいることもあれば、違うものを同じ名で呼んでいることもあれば、何らかの理由で呼び分けていることもある）。マルチプログラミングという語は複数のプログラムを動かすという点に着目した語である（一般に、「タスク」とか「プロセス」は、プログラムの活動実体、といったようなものを指す語である）。逆に、同時に一つのタスクしか実行できない方式をシングルタスクという。

概要
コンピュータはプロセッサ（CPU）、記憶装置、ディスプレイやキーボードなどのヒューマンマシンインタフェース、ネットワークインタフェースなどのインターコネクション、などから構成される。一般的に、CPUの計算処理時間に比べ、ディスクやネットワークの処理時間は数十から数百倍かかる。シングルタスク環境では、逐次処理が行われるため、入力待ちや通信待ちなど、CPUが計算を実行できずに、待つ時間が発生する。マルチタスクの導入によって、これらの待ち時間の間にCPUを動作させ別の計算を行い、全体の処理時間の短縮を実現することが可能になる。さらに、並行プログラミングの手法が利用でき、機能をタスクとして分割することで、ソフトウェアの再利用性を上げられる。

ひとつのCPUしかないコンピュータでは、ある瞬間にはひとつの処理しか実行できない。しかし、CPUの処理時間を数十ミリ秒といった短い時間で区切り、タスク間でひとつのCPUを順に使い回すことによって、ユーザーから見ると、複数のアプリケーション（タスク・プロセス）が同時に実行されているように見える。

タスクの切り替えのオーバーヘッドや、キャッシュやトランスレーション・ルックアサイド・バッファのミス率の上昇などのコストがかかるが、入出力待ちなどであるタスクの実行が止まっても他のタスクが実行されるため、全体としてスループットの上昇が期待できる。

また、タスクという単位よりも、ユーザ単位で「1基のコンピュータを時分割でシェアする」という点に主眼がある語として「タイムシェアリングシステム」がある。

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

タスクの切り替えにはハードウェアタイマ割り込みが用いられることが多く、この場合割り込みによって一定時間内（タイムスライス）に強制的にオペレーティングシステム (OS) に制御が移る。OSがTSSの場合、一定の方式に従い次のタイムスライスを実行中のタスク・プロセス・スレッド（マルチスレッドOSの場合）に割り当てる。また、OSはシステムコール処理のタイミングにおいて、より優先度の高いタスク・プロセス・スレッドに CPU サイクルを割り当てる。これらのことをプリエンプション (横取り) という。

この方式を特に指す場合はプリエンプティブなマルチタスクという。Unix系とLinuxなどのOSや、パーソナルコンピュータ用商用OSでは、OS/2（ArcaOS・eComStation・osFree）、9X系Windows、CE系Windows、NT系Windows（ReactOS・Greentea OS）、NEXTSTEPとその子孫のmacOS・iPadOSなどがある。企業向けシステムのメインフレーム用OS（タイムシェアリングシステム）などもほぼ全てこの方式である。一定時間内にOSに制御が戻るため、システム全体の堅牢性が高い。一方、OSがCPU時間を管理する必要があり、また、一定時間毎にタスク切り替え処理が発生するため、処理にはコストがかかるが、現在のCPUの能力向上と共にそのコストは問題にならなくなっており、現在は、メリットの多いこちらの方式が主流である。

タスクを切り替える間隔をクオンタムと呼ぶ。この時間が長ければ長い程、システムの負荷が低い。しかし、一定期間内で同時に処理できる数はクオンタムに反比例する。この為、サーバ向けのOSではクオンタムを長くしてシステム負荷を下げ、アプリケーションのスループットを上げることが多い。逆にクライアントOSではクオンタムを短くして応答性を上げるように調整されることがある。たとえば、Windowsはサーバーとクライアントでこのような調整が既定で行なわれている。

なお、OSによっては入出力割り込みやシステムコールの呼び出しによってプリエンプションを発生させるものもある。マルチタスクを最初に実現したOSであるMVSは、入出力割り込みを基本としている。

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

各タスク自身が、短い時間間隔でOSに処理を返す方式によって実現されているものを、ノンプリエンプティブなマルチタスク、協調的マルチタスクという。例えばイベント待ち行列を参照する際などにタスクが自分でOSに制御を渡す（NetWareのようにシステムコールの都度制御を返す実装もある）。OSがCPU資源を管理する必要がないので処理は少ない。しかし、長時間CPUを占有し続けるタスクが存在すると、実質的にシングルタスクと同じになってしまうという欠点がある（例えば、特定のタスクが無限ループに陥るなどOSに処理を返せなくなると、他のタスクを道連れにしてシステムがハングアップする結果になる。かつてのMac OSやWindows 3.x、Windows 9x系における16bit Windowsプログラムの動作、などはこの方式である）。

 商標登録 
「マルチタスク」「MULTITASK」という言葉は日本において日本電気株式会社が商標登録している（第4598360号、2002年8月23日登録）。指定商品は「携帯電話機」「コンピュータネットワークの加入に関する情報の提供、データ通信に関する情報の提供、テレックスによる通信、テレビジョン送信機・ラジオ送信機その他の通信機器の貸与、テレビジョン文字多重放送、テレビジョン放送、テレビジョン放送・有線テレビジョン放送・ラジオ放送に関する情報の提供、ファクシミリによる通信、ラジオ放送、移動体電話による通信、電気通信に関連する情報の提供、電子メール通信、電子計算機端末による衛星通信、電子計算機端末による通信のための通信回線の提供、電報による通信、付加価値通信網による通信（バンサービス）、付加価値通信網の提供、報道をするものに対するニュースの供給、無線呼出し、有線テレビジョン放送」である。

日本の商標制度#商標権の効力・日本の商標制度#商標登録の要件・日本の商標制度#商標登録の取消しおよび無効も参照のこと。

脚注

関連項目
プロセス管理
プロテクト
マルチスレッド
マルチプロセッシング
リアルタイムシステム
並行計算
タスク並列性
マルチタスク (心理学)
CPU時間

Category:OSのプロセス管理
Category:並行計算