ゼロからの情報システム

  現代社会の情報インフラの仕組みをゼロから学べます.

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

情報社会に生きるアナタ.
自動車社会で自動車や高速道路や宅配便のこと知らないで生きていけますか.
情報社会では,スマホやパソコンやインターネットやウェブが,自動車や高速道路や宅配便に相当します.
このサイトは,パソコン使いのパソコン知らず,を対象に情報社会の基盤技術を説明します.

2.23 最高優先度のプロセスが次に実行される

OSは実行すべき多数のプロセスを抱えています.それらのプロセスの内,現に実行中のプロセスと交代に次に実行すべきものはどれかを決めるのが,T2の問題(2.21参照)です.

たくさんあるプロセスの中には,即時の対応が必要なもの,遅れても支障のないものというように,さまざまな緊急度のものがあります.

そこで,ウィンドウズのOSでは,各タスク,サービスに対して,処理の優先度を割り振っています.優先度32段階あります.

起動中のプロセスの中で最も優先度の高いタスクやサービスのものに対してCPUを優先的に割り当て,それらのタスクやサービスがCPUを必要としなくなったら,次の優先度のタスクやサービスにCPUを割り当てる,という方法をOSは採用しています.

優先度が最も高いタスクが複数ある場合には,割り当てたクオンタムずつそれらのタスクを順番に処理します.割り当てるクオンタムを,同じ優先度でもフォアグラウンドのタスクには多く,バックグランドのものには少なくすれば,CPUを使用する割合を変化させることができます.

優先度の高いタスク,サービスから処理する方法だと,優先度の低いプロセスはいつまでもCPUを割り当ててもらえないという状況が発生する可能性があります.そこで,長期間(例えば数分間)CPUが割り当てられないプロセスがあれば,その優先度を自動的に高めるという仕組みがOSには組み込まれています.

図11のタスクマネージャの「プロセス」タブの表示には,「CPU」欄があります.これはCPUの処理能力の何%が,そのプロセスによって消費されているかを示します.

   大部分のプロセスのCPU欄はゼロで,少数のプロセスにだけCPUが割り当てられているのが判ります.これはT3の問題への解答を示していますので,次項で説明します.

2.22 タスク切り替えの間隔は50分の1秒程度です

プリエンプティブ マルチタスクを実施するOSは,あらかじめ決めた短時間(これをタイムスライスと呼びます)が経過するごとに,タスクの切り替えが必要かどうかを判断します.タイムスライスは1015ミリ秒に相当するような短い時間です.

つまり,OSは,100分の1秒程度の時間が経過するごとにタスクを強制的に切り替えるチャンスを作ります.

OSは,タスク/プロセスを切り替えるとき,各プロセスがCPUを占有する時間の長さを,クオンタムという量を使って管理します.クオンタムquantumは「少量」を意味する英語です.

パソコンで私たちが個人的に利用しているアプリケーションの場合には,タイムスライス2つ分の大きさ(100分の1~3秒)のクォンタムを割り当てるのが普通です.

サーバと呼ばれる,人手による入出力作業のような,処理の遅れが利用者をイラつかせるアプリケーションがほとんど起動されないコンピュータの場合には,12タイムスライス程度の大きさ(10分の1~2秒)のクオンタムが割り当てられるのが普通です.

つまり,私たちのパソコンのOSでは,CPUが実行しているプロセスは,1秒間に50回位,別のプロセスに切り替えた方がよいかどうかが判定されます.もちろん,切り替えない方が良いとなれば,あらためてクオンタムの割り当てを受けて処理が継続されます.

このことから,1秒間に50回程度,タスク→OS→タスク→OS→・・・と言う具合に,切り替わっていることが判ります.OSを挟む前後のタスクは,OSの判断に応じて,同一であることも異なることもあります.

 このような短時間でタスクを切り替えるには,切り替えのスピードが問題になります.遅ければ処理時間が切り替えにばかり使われ,タスクの処理が実質的に進まない状況が発生しやすくなります.

そこで,各タスク/プロセスに対して,プログラム内の中断した位置,その時のCPUの状態(つまり,CPUが持っているデータの値)などを記憶装置に保存し,また,プロセスを維持(プロセスに対するプログラムやデータを記憶したRAMの領域を管理すること)します.

 そうすることで,次にこのタスク/プロセスを再開する時に,瞬時に中断前の状況を再現することができます.

2.21 タスク管理におけるタスク切り替えは横取り方式です

複数のプロセス(タスク)を利用者にとってストレスなく並行的に処理するために,タスク管理が解決すべき主要な問題は次の3つです.

T1)どのタイミングで実行するタスクの切り替えを行うか

T2)どのような方法で次に実行すべき1つのタスクを決定するか

T3)次に実行するタスクの候補とすべきタスクをどうやって選ぶか

本項では,T1の問題を取り上げます.

CPUは一度には1つのことしかできませんから,OSは実行するプロセスを適当な優先度や順番に従って切り替える必要があります.しかし切り替えは,前項で述べたように,各プロセスの実行の緊急度に合わせて行うことが求められます.

先方の都合に合わせる必要のある多数の仕事がある場合,あなたが極めて有能で,仕事の切り替えが瞬時にでき,細切れになってもそれをつなぎ合わせることができる.しかも,仕事の処理は極めて素早くて,連続的に1つの仕事を行う時には,非常な余裕を持って対応できる.そういう意味で十分な能力を持っているとします.

すると,一瞬ごとに,例えば,0.1秒とか0.2秒間隔で,意識を集中する仕事を次々切り替えて,いかにも,多数を同時こなしているように振る舞えるでしょう.

CPUがプロセスを処理する状況はまさに,このような十分な能力を持っている状況だと考えられます.

タスクの実行はプログラムの処理ですから,その実行を中断して,別のタスクを処理する間に,もとのタスクに必要なデータが消えてしまうということはありません.中断している間は関連するデータを一時的に記憶装置に保存しておくことが可能だからです.

つまり,CPUは極めて短時間で仕事の切り替えをしても混乱しないのです.

しかも,CPUの処理速度は,パソコンの利用者の日常的なスピードに較べれば,極めて大きいのです.このことはこれまでも何度も強調してきました.

上述の人の場合のように強制的なタスクの切り替え戦略に基づくマルチタスクを,プリエンプティブ マルチタスクと言います.

 OSがタスクを切り替えることが必要だと判定したら,強制的に別のタスクにCPUを「横取り(プリエンプション)」させるからです.
プロフィール

ヤッキー

カテゴリ別アーカイブ
タグクラウド
QRコード
QRコード
  • ライブドアブログ