VOS3:タスクスケジューリング(ディスパッチング制御)

By 岡田 - Posted: 2013/09/06 Last updated: 2013/09/17 - Leave a Comment
印刷用ページの表示 印刷用ページの表示
お待たせ致しました。
タスクスケジューリングの核心であるディスパッチング制御です

入力では、高速道路のような車線が複数あるところを同じ属性のタスク(車)が同じイニシエータ(車線)を使って料金所(演算装置=CPU)に向かうところまでお話しました

この複数同時に料金所に着たタスクをどのようにCPUに割り当てるかというところを書きます

最初に、主題にも書きました「ディスパッチング制御」の意味について整理致します

ディスパッチング制御とは、ある条件下で複数のタスクに対して優先順位(プライオリティ)を設定して、優先順位の高いタスクを優先的にCPUを割り当てて計算をさせる事です。システムが稼働している間は延々とこれを繰り返します。

ここで、図を紹介します(時々情報処理試験に出てきます)
スクリーンショット 2013-09-06 3.08.31

これは、タスクひとつひとつが持つ4つの状態とディスパッチング制御について纏めたものです
内容についてご説明します。

1)RUN・・・・処理装置を用いて実行中
2)READY・・実行可能状態
3)WAIT・・・IO待ちなどで事象の発生を待っている状態
4)NON D・・ディスパッチング禁止状態

情報処理試験などでは、上記1から3までは必ず出ますが、システム的には4も行っていますので、記載致しました

それぞれの矢印(状態遷移)について説明します
ア)RUN→READY :本タスクより実行優先順位が高いタスクがWAITからREADYになったため、RUNをREADYに落として制御を渡す
イ)READY→RUN :本タスクより実行優先順位が高いタスクがWAIT状態になりREADYの中から一番実行優先順位が高いタスクがRUNに移る
ウ)RUN→WAIT  :処理を続行するために事象の発生が必要となったため、事象の発生を待つためWAITに落とす
エ)WAIT→READY:処理を続行するための事象が発生した
オ)NON?Dの矢印  :ディスパッチング制御を禁止したいタスクがある場合、専用マクロを発行して禁止属性を与える。解除時にはREADYとなる

ディスパッチング制御の説明で”ある条件下で”とお話ししました。
この”条件下”についての説明をします。

メインフレーム(大型汎用機)ではさまざまな用途のシステムが稼働します。したがって、用途に応じてディスパッチング制御したい条件が異なってきます。

オンライン主体なのか、バッチ主体なのか、TSS主体なのかで全然違ってきます。

このようにさまざまなニーズに答えるため、多くの制御方法を用意しています。

以下の内容はVOS3の知識をベースに説明致します。不明点がありましたら、投稿下さい

1)ダイナミックディスパッチング制御
タスクがCPU待ちになるまでのタスクCPU時間の平均を算出して、IOバウンド(IO主体のタスク)なのか、CPUバウンド(CPU主体のタスク)なのかを判断。IOバウンドのタスクには優先順位を高く設定する。

*IOバウンドのタスクに高い優先順位を与える理由
入出力処理をしている間に別タスクをCPUに使わせる事でIOとCPUの並行処理を行う(効率向上)の他に、入出力処理時間は明らかにCPU処理時間より大きい(長い)ため、ターナラウンドタイムの短縮を促す

2)拡張ダイナミックディスパッチング
1)で説明した制御に「サービス比率」を加味す方法。サービス比率はCPUのその時の使用率により、あらかじめ決めておいた各グループ言のサービス比をサービス関数から求めて、サービス比率の高いタスクに対しては高い優先順位を与えるというもの。緊急度の高いタスクやOS自身(マスタスケジューラなど)にはサービス比が高く維持されるように設定する

3)CPU評価型ディスパッチング
各タスクのタスクCPU時間を比較して、割り当てCPU時間が少ないタスクに高い優先順位を与え、CPUを割り当てて沈み込みを防ぐ

4)タイムスライスディスパッチング
特定の時間単位で高い優先順位(高位)と低い優先順位(低位)を設定しておき、タイムスライス時間を基本に高位と低位を交互に入れ替える

5)ローテーションディスパッチング
同じ優先順位グループに属する複数タスクについて、持ち回りで優先順位を割り当てる方法

6)空間優先ディスパッチング
DBバッチなど優先順位を下げたくないタスクがある場合、特定時間が経過した時点でCPUが割り当てられていない場合、強制的にCPUを割り当てる

<オプション機能>
7)CPU使用率制限機能
優先順位が低くてもよいタスクについてはCPU使用率を低く抑えることで、他のタスクに優先的にCPUを割り当てる

上記1)から7)については主にバッチ、STCについての制御です

TSSの場合、バッチ、STCと異なりタスクの返答先は画面の前の人間なので、早い結果(レスポンス)が求められます。バッチと異なった制御や高い優先順位を与えるのが普通です

8)初期優先権指定機能
TSSの稼働時間(処理サービス量)に応じて、優先度を複数の段階に設定することで、すぐに終了するTSSについては高い優先順位を、長時間使うTSSには低い値を設定する

1)から8)のうち、、
1)から3)については背反関係にあります(択一です)
また、1)と2)についてはOSの負荷が高いため、タスクが多いシステムについてはOSが高負荷となることで、システム能力を十分に発揮できなくなる可能性がありますので、3)以降の制御を使うことになります
Posted in アドミニストレーター編 • • Top Of Page