メインメニューを開く

差分

編集の要約なし
'''マルチタスク''' (Multi Tasking) は、[[コンピュータ]]において複数の[[タスク]]([[プロセス]])を切り替えて実行できるシステムのことである。[[Unix系|Unix]]など「プロセス」という用語を使うシステムでは'''マルチプログラミングセス'''ともいう(ほぼ同じものを別のシステムでは別の名で呼んでいることもあれば違うものを同じ名で呼んでいることもあれば、何らかの理由で呼び分けていることもある)。'''マルチプロセスグラミング'''という語は複数の[[プログラム (コンピュータ)|プログラム]]を動かすという点に着目した語である(一般に、「タスク」とか「プロセス」は、プログラムの活動実体、といったようなものを指す語である)。逆に、同時に一つのタスクしか実行できない方式を'''シングルタスク'''という。
 
==概要==
コンピュータは[[プロセッサ]]([[CPU]]、[[記憶装置|メモリ]]、[[ディスクメディアプレイ (コンピュータ)|ディスプレイ]][[キーボード (コンピュータ)|キーボード]]などの[[I/Oヒューマンマシンインタフェース]]、[[ネットワークカード|ネットワークインターフェース]]などのインターコネクション、などから構成される。一般的に、CPUの計算処理時間に比べ、ディスクやネットワークの処理時間は数十から数百倍かかる。シングルタスク環境では、逐次処理が行われるため、入力待ちや通信待ちなど、CPUが計算を実行できずに、待つ時間が発生する。マルチタスクの導入によって、これらの待ち時間の間にCPUを動作させ別の計算を行い、全体の処理時間の短縮を実現することが可能になる。さらに、並行プログラミングの手法が利用でき、機能をタスクとして分割することで、ソフトウェアの再利用性を上げられる。
 
1つのCPUしかないコンピュータでは、ある瞬間には1つの処理しか実行できない。しかし、CPUの処理時間を数十ミリ秒といった短い時間で区切り、タスク間で1つのCPUを[[タイムシェアリング]]順に使い回ことによって、ユーザーから見ると、複数の[[アプリケーションソフトウェア|アプリケーション]](タスク・プロセス)が同時に実行されているように見える。
一方、マルチタスク環境では、並行プログラミングの手法が利用でき、機能をタスクとして分割することで、ソフトウェアの再利用性を上げられる。
 
1つのCPUしかないコンピュータでは、ある瞬間には1つの処理しか実行できない。しかし、CPUの処理時間を数十ミリ秒といった短い時間で区切り、タスク間で1つのCPUを[[タイムシェアリング]]することによって、ユーザーから見ると、複数の[[アプリケーションソフトウェア|アプリケーション]](タスク・プロセス)が同時に実行されているように見える。
 
タスクの切り替えの[[オーバーヘッド]]や、[[キャッシュ (コンピュータシステム)|キャッシュ]]や[[トランスレーション・ルックアサイド・バッファ]]のミス率の上昇などのコストがかかるが、入出力待ちなどであるタスクの実行が止まっても他のタスクが実行されるため、全体として[[スループット]]の上昇が期待できる。
 
また、タスクという単位よりも、ユーザ単位で「1基のコンピュータを時分割でシェアする」という点に主眼がある語として「[[タイムシェアリングシステム]]」がある。
 
== プリエンプティブ・マルチタスク ==
{{main|プリエンプション}}
タスクの切り替えにはハードウェアタイマ[[割り込み (コンピュータ)|割り込み]]が用いられることが多く、この場合割り込みによって一定時間内([[タイムスライス]])に強制的に[[オペレーティングシステム]] (以下、OS) に制御が移る。OSは一定の方式に従い次のタイムスライスを実行中の[[タスク]]・[[プロセス]]・[[スレッド (コンピュータ)|スレッド]](マルチスレッドOSの場合)に割り当てる。このことを'''プリエンプション''' (preemption, 横取り) という。
 
この方式を特に指す場合は'''プリエンプティブ''' (preemptive) なマルチタスクという。[[Unix系]]([[Linux]]など)のシステムや、[[パーソナルコンピューター]]用商用[[オペレーティングシステム|OS]]では、[[OS/2]]、[[Windows NT系|NT系 Windows]]OS、[[OS X|Mac OS X]]、[[Linux]]などがあり、る。企業向けにはシステムの[[メインフレーム]]用OSやOS([[UNIXタイムシェアリングシステム]]などが該当すもほぼ全てこの方式である。一定時間内にOSに制御が戻るため、システム全体の堅牢性が高い。一方、OSがCPU時間を管理する必要があり、また、一定時間毎にタスク切り替え処理が発生するため、処理にはコストがかかるが、現在のCPUの能力向上と共にそのコストは問題にならなくなっており、現在は、メリットの多いこちらの方式が主流である。
 
タスクを切り替える間隔を'''クオンタム'''と呼ぶ。この時間が長ければ長い程、システムの負荷が低い。しかし、一定期間内で同時に処理できる数はクオンタムに反比例する。この為、サーバ向けのOSではクオンタムは短くして応答を良くする様に調整される。
 
== ノンプリエンプティブ・マルチタスク ==
各タスク自身が、短い時間間隔でOSに処理を返す方式によって実現されているものを、'''ノンプリエンプティブ'''なマルチタスク、'''協調的マルチタスク'''あるいは'''疑似マルチタスク'''という。例えば[[イベント (プログラミング)|イベント]]待ち行列を参照する際などにタスクが自分でOSに制御を渡す([[NetWare]]の様にシステムコールの都度制御を返す実装もある)。OSが[[CPU]]資源を管理する必要がないので処理は少ない。しかし、長時間CPUを占有し続けるタスクが存在すると、実質的にシングルタスクと同じになってしまうという欠点がある(例えば、特定のタスクが無限ループに陥るなどOSに処理をかえせなくなると、他のタスクを道連れにしてシステムがハングアップする結果になる。古い[[Mac OS]]や[[Microsoft Windows 3.x|Windows 3.x]]、[[Windows 9x系]]における16bit Windowsプログラムの動作、などはこの方式である)。
 
== 備考商標登録 ==
「マルチタスク」「MULTITASK」という言葉は日本において[[日本電気]]株式会社が[[商標]]登録している(第4598360号、[[2002年]][[8月23日]]登録)。指定商品は「[[携帯電話|携帯電話機]]」「コンピュータネットワークの加入に関する情報の提供、データ通信に関する情報の提供、テレックスによる通信、[[テレビジョン]]送信機・[[ラジオ]]送信機その他の通信機器の貸与、テレビジョン[[文字多重放送]]、テレビジョン放送、テレビジョン放送・有線テレビジョン放送・ラジオ放送に関する情報の提供、[[ファクシミリ]]による通信、ラジオ放送、移動体電話による通信、電気通信に関連する情報の提供、[[電子メール]]通信、電子計算機端末による[[衛星通信]]、電子計算機端末による通信のための通信回線の提供、電報による通信、付加価値通信網による通信(バンサービス)、付加価値通信網の提供、報道をするものに対するニュースの供給、無線呼出し、有線テレビジョン放送」である。
 
[[日本の商標制度#商標権の効力]]・[[日本の商標制度#商標登録の要件]]・[[日本の商標制度#商標登録の取消しおよび無効]]も参照のこと。
20,813

回編集