マルチタスク
出典: フリー百科事典『ウィキペディア(Wikipedia)』
マルチタスク は、OSが複数のタスク(プロセス)を切り替えながら実行すること。マルチプログラミング、マルチプロセスともいう。逆に、同時に一つのタスクしか実行できない方式をシングルタスクという。
十分短時間に切り替えがおこなわれれば、ユーザーから見ると、複数のアプリケーション(タスク・プロセス)が同時に実行されているように見える。
タスクの切り替えのオーバーヘッドや、キャッシュやトランスレーション・ルックアサイド・バッファのミスヒット率の上昇などのコストがかかるが、入出力待ちなどであるタスクの実行が止まっても他のタスクが実行されるため、全体としてスループットの上昇が期待できる。
目次 |
[編集] プリエンプティブ・マルチタスク
詳細はプリエンプションを参照。
タスクの切り替えにはハードウェアタイマ割り込みが用いられることが多く、この場合割り込みによって一定時間内(タイムスライス)に強制的にオペレーティングシステム(OS)に制御が移る。OSは一定の方式に従い次のタイムスライスを実行中のタスク・プロセス・スレッド(マルチスレッドOSの場合)に割り当てる。このことをプリエンプション (preemption, 横取り)という。
この方式を特にプリエンプティブ (preemptive) なマルチタスクという。パーソナルコンピュータ用商用OSでは、OS/2、Windows NT/2000/XP/VistaといったWindows NT系OS、Mac OS Xなど。一定時間内にOSに制御が戻るため、システム全体の堅牢性が高い。一方、OSがCPU時間を管理する必要があり、また、一定時間毎にタスク切り替え処理が発生するため、処理は重くなるが、現在のCPUの能力向上と共にそのコストは問題にならなくなっており、現在は、メリットの多いこちらの方式が主流である。
タスクを切り替える間隔をクオンタムと呼ぶ。この時間が長ければ長い程、システムの負荷が軽くなる。しかし、一定期間内で同時に処理できる数はクオンタムに反比例する。この為、サーバー向けのOSではクオンタムは短くして応答を良くする様に調整される。
なお、OSによっては入出力割り込みやシステムコールの呼び出しによってプリエンプションを発生させるものもある。マルチタスクを最初に実現したオペレーティングシステムであるMVSは、入出力割り込みを基本としている。
[編集] ノンプリエンプティブ・マルチタスク
これとは異なる方法もある。各タスク自身が、短い時間間隔でOSに処理を返す方式によって実現されているものを、ノンプリエンプティブなマルチタスクあるいは疑似マルチタスクという。例えばイベント待ち行列を参照する際などにタスクが自分でOSに制御を渡す(Novell NetWareの様にシステムコールの都度制御を返す実装もある)。OSがCPU資源を管理する必要がないので処理は軽い。しかし、長時間CPUを占有し続けるタスクが存在すると、実質的にシングルタスクと同じになってしまうという欠点がある。また特定のタスクが無限ループに陥るなどOSに処理をかえせなくなると、他のタスクを道連れにしてシステムがハングする結果になる。古いMac OSやWindows 3.xなどはこの方式である。
[編集] 備考
「マルチタスク」「MULTITASK」という言葉は日本において日本電気株式会社が商標登録している(第4598360号、2002年8月23日登録)。使用範囲を「携帯電話機」「コンピュータネットワークの加入に関する情報の提供,データ通信に関する情報の提供,テレックスによる通信,テレビジョン送信機・ラジオ送信機その他の通信機器の貸与,テレビジョン文字多重放送,テレビジョン放送,テレビジョン放送・有線テレビジョン放送・ラジオ放送に関する情報の提供,ファクシミリによる通信,ラジオ放送,移動体電話による通信,電気通信に関連する情報の提供,電子メール通信,電子計算機端末による衛星通信,電子計算機端末による通信のための通信回線の提供,電報による通信,付加価値通信網による通信(バンサービス),付加価値通信網の提供,報道をするものに対するニュースの供給,無線呼出し,有線テレビジョン放送 」(原文ママ)としているので、使用分野によっては注意が必要である。

