pafuイーランスクール 学んでできる

メニューへ戻る

ジョブ管理・タスク管理(コンピュータシステム)

学習のポイント

ジョブとタスクについて把握し、ジョブ管理、タスク管理の仕組みを理解し、マルチプログラミングの仕組みを理解しましょう。

1. ジョブとタスク
ジョブとタスク
ジョブ」とは人間から見た仕事の単位(利用者からみた仕事の単位で、単一のプログラムや連続的な一連のプログラム群のこと)。
タスク」とはコンピュータから見た仕事の単位(OSの下で実行される内部処理の単位)。
ジョブは、バッチ処理の場合、ユーザが「JCL(ジョブ制御言語)」で記述して、コンピュータに指示を与えます。ジョブ管理がこれを受取り、「ジョブステップ」という単位に分割します。その後、「タスク管理」がジョブステップごとに「タスク」を作成してコンピュータが実行できるようにします。つまり、タスクは、プログラムの処理を細分化した処理単位です

※「プロセス」これは、実行中のプログラムを指しタスクと同じ意味で使用されます。プロセスは、UNIXで使用されていた用語です。
※「スレッド」マルチスレッドOSにおけるプログラム実行の単位のことを言います。マルチスレッドOSでは、プログラム(プロセス)の中で複数のスレッドを実行することが出来ます。
2. ジョブ管理
ジョブ管理
ジョブ管理の中の「ジョブスケジューラ」というプログラムはコンピュータに導入された複数のジョブをスケジュール管理し、効率的に実行させています。
ジョブ管理プログラム」は以下の流れがあります。
1.リーダ ジョブの読み込み
2.ジョブスケジューラ ジョブの優先順位によるスケジューリング
   2_1.ジョブイニシエータ ジョブの開始
   2_2.ジョブターミネータ ジョブの終了
3.マスタスケジューラ ユーザとジョブスケジューラとのやり取り
4.ライタ ジョブの出力
その他として「スプーリング」があります。これは、ジョブの入出力をプログラムとは独立させて行う機能です。プリンタ出力などは、スプールファイルへ格納されて、プログラムの終了後、プリンタへ出力されます。
3. タスク管理
タスク管理
ジョブ管理で生成されたジョブステップはタスク管理に渡されて、タスクが生成されます。タスクには以下の通り生成から消滅まで3つの状態で遷移します。
実行状態
CPUの使用権が与えられ実行できる状態のタスク
実行可能状態
実行可能であるがCPUの空きを待っている状態のタスク
待ち状態
入出力処理などの事象待ちで、その終了を待っている状態のタスク
上記の図では、タスクは待機状態から実行状態へは遷移しません
ディスパッチャ…実行可能状態のタスクから優先順位の高いタスクを実行状態にしたり、実行状態のタスクを中断させたり、CPUの割り当ての切り替えを行うプログラムです。
スーパバイザ(SV)…不定期に発生するプログラム上の割込みの監視を行うプログラムを言います。
実際の実行の流れ

1. 生成されたタスクは、実行可能待ち行列に加えられ、実行可能状態となって、実行を待ちます。
2. CPUが割り当てられたタスクは、「ディスパッチャ」により、実行状態へ遷移します。(ディスパッチング)
3. 実行状態のタスクは、自分に割り当てられたCPU時間の終了や優先度の高いタスクにより強制的に実行を中断させられて、実行可能状態へ遷移します。(プリエンプション:CPUが奪われることをいいます)
4. 入出力処理の発生により、CPUの使用権を放棄して、待機状態へ遷移したタスクは、入出力の完了を待ちます。
5. 待機状態のタスクは、待機の原因となった事象が完了すると、実行可能状態へ遷移します。
6. タスクの実行が完了したら、タスクは消滅します。使用していたすべての資源は解放され、他のタスクが使用できるようになります。

4. マルチプログラミング
マルチプログラミング
入出力などの無駄な時間(アイドルタイム)を利用して複数のプログラムを見かけ上同時に実行させ、スループットの向上を図るものです。実際は、アイドルタイムを利用して他のプログラムにCPUを割り当てます。これにより実現されています。
割込み
現在実行中のプログラムに別の要求が発生した場合、一時中断して要求に応じた別のプログラムを実行させることを言います。上記のマルチプログラミングでも割込み機能が働いています。割込みには以下の2種類があります。
1. 内部割込み
プログラム上から生じる割込みです。
プログラム割込み…プログラムの実行中に異常が発生した場合の割込み。
SVC…プログラムから入出力が必要になった時に生じる割込み。
2. 外部割込み
プログラム以外の原因で生じる割込みです。
入出力割込み…入出力処理の終了や誤動作が生じた時の割込み。
マシンチェック割込み…ハードウェアの異常、誤動作が生じた時の割込み。
コンソール割込み…オペレータが介入する時の割込み。
タイマ割込み…監視タイマで一定時間を経過した時に生じる割込み。
●マルチプログラミングの2種類の方法
1. プリエンプティブマルチタスク
プリエンプティブマルチタスクとは、一台のコンピュータで同時に複数の処理をこなすマルチタスク処理の実現方法のうち、CPUをOSが管理する方式。OSがCPUやシステム資源を管理し、CPU使用時間や優先度などによりタスクを実行状態や実行可能状態に切り替える方式。OSはハードウェアタイマーを参照しながら、実行待ち命令のあるアプリケーションソフトに短時間ずつCPUの実行権限を与える。これによって、一つのプログラムがCPUを独占することが無いように制御されます。
2. ノンプリエンプティブマルチタスク
OSがCPUを管理せずに、実行中の各アプリケーションソフトが、自分が処理を行わない「空き時間」を自発的に開放することによって、他のアプリケーションソフトと同時実行できるようにする方式。、CPU解放はそのプログラムに依存します。従って、1つのプログラムがCPU使用中は、他のプログラムのCPU割り当ては制限される。
5. タスクのスケジューリング
タスクの切り替えは、トリガ(引きがね)と優先順位の組み合わせによって以下の種類があります。
1. ノンプリエンプション方式
タスクに優先順位はなく、実行可能になった順番に実行される方式。タスク切り替えは、自主的なCPUの開放を前提としており、いつまでもCPUを解放しない「無限ループなどの」タスクが存在すると、他のタスクを実行できなくなります。
2. イベントドリブンプリエンプション方式
タスクの「状態の変更」をきっかけに、タスクの切り替えを行う方式で、実行可能状態のタスクの中から、最も「優先度 高い」タスクにCPUの使用権を与え、実行状態へ遷移させます。「状態の変更」とは。入出力の終了・外部からのコマンド入力などの割込みで通知されます。
3. ラウンドロビンスケジューリング方式
タスク順に一定時間(タイムクウォンタムといいます)ずつ実行させます。タイムスライス方式で、一定時間内に実行を終了しなかったタスクは、同じ優先順位内で最後に回されます。
メニューへ戻る

pafuイーランスクール

pafuイーランスクール 学んでできる