プリエンプティブマルチタスクとは? わかりやすく解説

Weblio 辞書 > 同じ種類の言葉 > 情報 > コンピュータ > マルチタスク > プリエンプティブマルチタスクの意味・解説 

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

別名:非協調的マルチタスク
【英】preemptive multitasking

プリエンプティブマルチタスクとは、OSマルチタスク機能実現方法1つである。

プリエンプティブマルチタスクでは、プログラムへのCPU割り当て時分割行われるCPU割り当て時間経過すると、CPU強制的に他のプログラム割り当てられる。これによって、一つプログラムCPU独占することが無いように制御される

プリエンプティブマルチタスクのOSとしては、Windows NTWindows 2000以降Windows系OS該当するWindows 95ではWindows 3.1との互換性のため、16ビットコード残されており、完全なプリエンプティブマルチタスクではない。

ソフトウェアのほかの用語一覧
OS:  DR-DOS  Gazelle  ブート  プリエンプティブマルチタスク  ブートストラップ  ブートアンロック  カーネル

プリエンプション

(プリエンプティブマルチタスク から転送)

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2023/08/22 04:48 UTC 版)

マルチタスク > プリエンプション

プリエンプション: preemption)は、マルチタスクコンピュータシステムが実行中のタスクを一時的に中断する動作であり、基本的にそのタスク自体の協力は不要で、後でそのタスクを再実行するという意味も含む。このような動作をコンテキストスイッチと呼ぶ。通常、保護されたタスクか、システムの一部であるプリエンプティブスケジューラが行う。それらは、システム内の他のタスクに割り込み、後でそれらタスクを再開させることができる。「プリエンプト」とは「先取りする、差し替える」の意。

ユーザーモードとカーネルモード

どんなシステム設計でも、プリエンプション不可能な操作が存在する。それは通常カーネルの機能や割り込み処理であり、それらを完了まで実行できるようにしておかないと、競合状態が発生しやすくなり、デッドロックを誘発する。タスクがカーネル機能を処理中は、スケジューラがプリエンプションできないようにすることで、システムの反応性を若干犠牲にするが、カーネル設計を簡略化することになる。システムの特権レベルを指定するCPUモード(ユーザモードとカーネルモード)も、タスクがプリエンプション可能かどうかを判断する基準のひとつとなる。

一部のシステムはプリエンプティブ・カーネル[1]であり、カーネルモードのタスクであってもプリエンプション可能となっている。例えば、Linuxカーネル 2.6 や一部のBSD系がある。

別のシステムは、マイクロカーネル設計で反応性を向上させ、場合によってはプロセスのプリエンプションの必要性そのものを実質的に削減している。実装例としてMach 3.0をリアルタイムに対応させたRT-Machがある。

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

プリエンプティブ・マルチタスク[2]とは、協調的マルチタスクとプリエンプション可能なマルチタスクを区別するための用語である。協調的マルチタスクは、各タスクがシステムリソースを必要としないときにそれを自発的に解放するようプログラムされている方式である。

簡単に言えば、プリエンプティブ・マルチタスクは、割り込み機構を使って現在実行中のプロセスを中断させ、スケジューラを呼び出して次に実行すべきプロセスを決定させる。それによってある一定時間内で、CPU時間は全てのプロセスに(配分はどうであれ)分配される。

プリエンプティブ・マルチタスクでは、オペレーティングシステムカーネルは優先順位に従ったスケジューリングがなされるようにコンテキストスイッチを自発的に行うこともでき、それが実行中タスクのプリエンプションとなる。高い優先順位のタスクが実行されるように現在実行中のタスクから権限を奪うのが、プリエンプティブ・スケジューリングである。

プリエンプティブ・マルチタスクは、各プロセスに処理時間の「スライス」が割り当てられることをより確実に保証することができる。また新たに重要なデータが到着して、即座にそれを処理するプロセスに通知しなければならないような場合に素早く対応できる。

プロセスは任意の時点で、2つに分類できる。1つは入出力を待っているプロセス(I/Oバウンドと呼ぶ)とCPUを使い続けているプロセス(CPUバウンド)である。初期のシステムでは、プロセスは入力を待っている際にビジーウェイトしていた。その間、プロセスは生産的な作業は全くしていないが、CPUを使い続けていた。割り込みとプリエンプティブ・マルチタスクの発明で、そのようなI/Oバウンドなプロセスはデータが到着するまで「ブロック」または中断/ペンディングされ、他のプロセスがその間CPUを使えるようになった。データが到着すると割り込みが発生し、ブロックされていたプロセス群が即座に実行可能状態に戻される。

メインフレームからシングルユーザーのパーソナルコンピュータ、さらにはユーザーのいない制御システムまで、マルチタスクは様々な理由で便利であるため、オペレーティングシステムの機能として採用されている。マルチタスクは、シングルユーザーにとっては複数のアプリケーションを同時に実行可能とする。

タイムスライス

「タイムスライス(time slice)」とは、プリエンプティブ・マルチタスクのシステムでプロセスが一度に実行される期間(時間)を意味する。スケジューラはタイムスライス間隔で起動され、次に実行すべきプロセスを選択する。タイムスライスが短すぎると、スケジューラが消費する時間の割合が大きくなるが、逆にタイムスライスが長すぎると、外部イベントに即座に反応できなくなる。

タイムスライスが経過したタイミングでプロセス間の切り替えを行うため、カーネルタイマーまたはクロック割り込みをスケジュールする。これによって、プロセッサの時間が複数のタスク間で共有分配され、それらが同時並行的に実行されているかのように見せる。このような設計のオペレーティングシステムをマルチタスクOSと呼ぶ。

プリエンプティブ・マルチタスクをサポートしたシステム

プリエンプティブなオペレーティングシステムとしては、AmigaOSNEXTSTEPWindows NT系(XPVistaを含む)、Windows CELinuxBSD系macOSiOSを含む)、BeOS、Windows 95/98(32ビットアプリケーションのみ[3])がある。UNIXやその系統のシステム、VMSなどの科学技術計算用や大規模ビジネス用のシステムも古くからプリエンプティブ・マルチタスクをサポートしていたが、高価なライセンス料やハードウェアが必要であったため、一般ユーザーの手に届くものではなかった。また、それらはユーザモードで実行中のスレッドをプリエンプトすることは可能だったが、カーネルモードのスレッドに対するプリエンプトは困難だった。

ノンプリエンプティブ(協調的)オペレーティングシステムの例としては、Windows 1.x, 2.x, 3.x、Windows 95/98(16ビットアプリケーションの場合)、NetWareMac OS(System 5.0 以降)がある。マルチタスクでないオペレーティングシステムとしては、古い Mac OS、MS-DOSコモドール64のOSがあり、一度に1つのプログラムしか実行できない。

AmigaOSは、TRIPOSというプリエンプティブ・マルチタスクシステムに基づいており、一般ユーザー向けに広く利用可能となった初期のプリエンプティブ・マルチタスクシステムであった(1985年)。68000ベースのAmiga上で動作し、仮想記憶ではなかったため、再配置可能なコードブロックによる動的ロード機能を使い、全プロセスを単一のフラットなアドレス空間に置いていた。

初期の IBM PC 用オペレーティングシステムであるMS-DOSDR-DOSはマルチタスクを全くサポートしていなかった。NetWareWindowsOS/2がPCに協調的マルチタスクを導入したが、プリエンプティブ・マルチタスクはサポートしていなかった。PCの場合、採用が遅れたのは過去のソフトウェア資産(Intel 8086ベースのPC向けソフトウェア)との互換性を維持する必要があったためである。しかし、Amigaは当初からマルチタスクを考慮して設計されていた。

Windowsで最初に限定的なプリエンプティブ・マルチタスクをサポートしたのはWindows 2.1xでのIntel 80386仮想86モードを使ったものである。これは、DOSボックスまたは仮想DOSマシン (VDM) と呼ばれる仮想8086マシン上でアプリケーションを動作させるもので、その仮想8086マシンがプリエンプション可能であった。Windows 95とその後継であるWindows 98およびWindows Meでは、32ビットアプリケーションはそれぞれ個別のアドレス空間で実行され、プリエンプション可能だったが、16ビットのアプリケーションは協調的マルチタスクのままだった[3]Windows NT では最初からプロセスを32ビットアドレス空間で実行し、常にプリエンプティブ・マルチタスクをサポートしていた。これはNT系列のWindowsに引き継がれている(Windows 2000Windows XPWindows Vista)。

Classic Mac OSでは、協調的マルチタスクをプリエンプティブ・マルチタスクに改良する計画があったが、Mac OS Xへの移行によって立ち消えとなった。Mac OS XはBSDの流れを汲むDarwinカーネルに基づいており、前身のNEXTSTEPの時代から完全なプリエンプティブ・マルチタスクをサポートしている。

OS/2 Warpは、IBMがマイクロソフトと共同開発したOS/2を改良したもので、386システムをターゲットとして、ネイティブアプリケーションにはプリエンプティブ・マルチタスクをサポートしていた。また、複数のウィンドウセッションをプリエンプティブに実行可能であった。

UNIX系OSでは、Solarisが初めて本格的なプリエンプティブ・カーネルを実現した。その元となったSVR4ではカーネル内に限定的なプリエンプション・ポイントを実装していたが、Solarisではミューテックスなどの軽量なロック機構を用いてカーネル内のデータを保護することにより、カーネルのほぼ全域にてプリエンプションが可能となった。併せて、リアルタイム性が必要なスレッドに対し、(リアルタイム性が不要な)一般のスレッドよりも高い優先度を割り当てるようになった。これらの変更により、リアルタイム性が必要なスレッドはユーザモードでの実行を含め、一般スレッドをカーネルモードにいる場合も含めてプリエンプトできるようになり、応答遅延の改善に貢献した。後に、これらの変更の多くはLinuxや一部のBSD系OSにも実装されている。

RTOSは応答遅延の保証が本来の目的であることから、データ保護などのための最小限の排他制御を除き、カーネル内も含めていつでもタスクをプリエンプトでき、優先度の通りにタスクがスケジュールされるように設計および実装している。目的の都合上、汎用OSとしては制限が厳しい仕様となる場合もある。

脚注

  1. ^ : preemptive kernel
  2. ^ : preemptive multitask
  3. ^ a b How 16-Bit and 32-Bit Programs Multitask in Windows 95 (Q117567)

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

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/03/25 00:22 UTC 版)

OS-9」の記事における「プリエンプティブ・マルチタスク」の解説

OS-9は、プリエンプティブ・マルチタスク(詳細プリエンプション参照のこと)をおこなうRTOSである。

※この「プリエンプティブ・マルチタスク」の解説は、「OS-9」の解説の一部です。
「プリエンプティブ・マルチタスク」を含む「OS-9」の記事については、「OS-9」の概要を参照ください。


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

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2017/02/24 14:33 UTC 版)

プリエンプション」の記事における「プリエンプティブ・マルチタスク」の解説

プリエンプティブ・マルチタスクとは、協調的マルチタスクプリエンプション可能なマルチタスク区別するための用語である。協調的マルチタスクは、各タスクシステムリソースを必要としないときにそれを自発的に解放するようプログラムされている方式である。 簡単に言えば、プリエンプティブ・マルチタスクは、割り込み機構使って現在実行中のプロセス中断させ、スケジューラ呼び出して次に実行すべきプロセス決定させる。それによってある一定時間内で、CPU時間全てのプロセスに(配分はどうであれ)分配される。 プリエンプティブ・マルチタスクでは、オペレーティングシステムカーネル優先順位従ったスケジューリングなされるようにコンテキストスイッチ自発的に行うこともでき、それが実行タスクプリエンプションとなる。高い優先順位タスク実行されるように現在実行中のタスクから権限を奪うのが、プリエンプティブ・スケジューリングである。 プリエンプティブ・マルチタスクは、各プロセス処理時間の「スライス」が割り当てられることをより確実に保証することができる。また新たに重要なデータ到着して即座にそれを処理するプロセス通知しなければならないような場合素早く対応できるプロセス任意の時点で、2つ分類できる1つ入出力待っているプロセスI/Oバウンドと呼ぶ)とCPU使い続けているプロセスCPUバウンド)である。初期のシステムでは、プロセス入力待っている際にビジーウェイトしていた。その間プロセス生産的な作業は全くしていないが、CPU使い続けていた。割り込みとプリエンプティブ・マルチタスクの発明で、そのようなI/Oバウンドプロセスデータ到着するまで「ブロック」または中断/ペンディングされ、他のプロセスその間CPU使えるようになったデータ到着する割り込み発生しブロックされていたプロセス群即座に実行可能状態に戻されるメインフレームからシングルユーザーパーソナルコンピュータさらにはユーザーのいない制御システムまで、マルチタスク様々な理由で便利であるため、オペレーティングシステムの機能として採用されている。マルチタスクは、シングルユーザーにとっては複数アプリケーション同時に実行可能とする。

※この「プリエンプティブ・マルチタスク」の解説は、「プリエンプション」の解説の一部です。
「プリエンプティブ・マルチタスク」を含む「プリエンプション」の記事については、「プリエンプション」の概要を参照ください。


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

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/02/25 14:30 UTC 版)

マルチタスク」の記事における「プリエンプティブ・マルチタスク」の解説

詳細は「プリエンプション」を参照 タスク切り替えにはハードウェアタイマ割り込み用いられることが多く、この場合割り込みによって一定時間内(タイムスライス)に強制的にオペレーティングシステム (以下、OS) に制御が移る。OSTSS場合一定の方式従い次のタイムスライス実行中のタスク・プロセス・スレッド(マルチスレッドOS場合)に割り当てるまた、OSシステムコール処理のタイミングにおいて、より優先度の高いタスク・プロセス・スレッドに CPU サイクル割り当てる。これらのことをプリエンプション (横取り) という。 この方式を特に指す場合プリエンプティブマルチタスクという。Unix系Linuxなど)のシステムや、パーソナルコンピューター商用OSでは、OS/2、Windows9x系NT系WindowsmacOSなどがある。企業向けシステムメインフレーム用OSタイムシェアリングシステム)などもほぼ全てこの方式である。一定時間内にOS制御が戻るため、システム全体堅牢性が高い。一方OSCPU時間管理する必要があり、また、一定時間毎にタスク切り替え処理が発生するため、処理にコストがかかるが、現在のCPU能力向上と共にそのコスト問題にならなくなっており、現在は、メリットの多いこちらの方式主流である。 タスクを切り替える間隔クオンタムと呼ぶ。この時間長ければ長い程、システム負荷が低い。しかし、一定期間内で同時に処理できる数はクオンタム反比例するこの為サーバ向けのOSではクオンタム短くして応答良くする様に調整される。 なお、OSによっては入出力割り込みシステムコール呼び出しによってプリエンプション発生させるものもある。マルチタスク最初に実現したオペレーティングシステムであるMVSは、入出力割り込み基本としている。

※この「プリエンプティブ・マルチタスク」の解説は、「マルチタスク」の解説の一部です。
「プリエンプティブ・マルチタスク」を含む「マルチタスク」の記事については、「マルチタスク」の概要を参照ください。

ウィキペディア小見出し辞書の「プリエンプティブマルチタスク」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ



プリエンプティブマルチタスクと同じ種類の言葉


英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「プリエンプティブマルチタスク」の関連用語

プリエンプティブマルチタスクのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



プリエンプティブマルチタスクのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
デジタル大辞泉デジタル大辞泉
(C)Shogakukan Inc.
株式会社 小学館
IT用語辞典バイナリIT用語辞典バイナリ
Copyright © 2005-2024 Weblio 辞書 IT用語辞典バイナリさくいん。 この記事は、IT用語辞典バイナリプリエンプティブマルチタスクの記事を利用しております。
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのプリエンプション (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、WikipediaのOS-9 (改訂履歴)、プリエンプション (改訂履歴)、マルチタスク (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2024 GRAS Group, Inc.RSS