この記事での学習内容 基本情報 応用情報
- タスクとジョブステップ,スレッドとの関係,タスクの生成から実行,消滅までの状態遷移,ディスパッチャの役割を理解する。
- 多重(マルチ)プログラミングの考え方,タスクのスケジューリングの代表的な方式について,スケジューリングの方法,特徴,スケジューリングにおけるトリガと優先順位の役割,同期制御・排他制御の必要性,実現方法を理解する。また,タスクとタスクの同期,タスク間でのデータの受け渡し,マルチスレッドの考え方,並列処理などを理解する。
用語例:軽量プロセス,実行可能状態,実行状態,待ち状態,プロセス,スレッド、プリエンプティブ方式,ノンプリエンプティブ方式,タイムスライス方式,イベントドリブン方式,フィードバック待ち行列方式,処理時間順方式,優先順,静的優先順位方式,動的優先順位方式,ラウンドロビン,SJF(Short Job First),最短時間順,割込み禁止,マルチCPU,排他制御,FCFS(First Come First Served),タイムクウォンタム,リソーススタベーション,SVC(Super Visor Call)割込み,入出力終了割込み,ディスパッチ
タスクとジョブステップ
ジョブステップは一つのプログラムの実行に相当し、一つのプログラムはいくつかの小さなタスクに分解されて、CPUや入出力チャネルなどのハードウェアで実行されます。
ジョブステップの実行順序は、ユーザがジョブ制御分によって指定することができます。これは人間の作業の日程計画に相当します。
一方、タスクの実行順序はユーザが指定するというよりも、前のタスクの実行終了によるCPUや入出力チャネルの空き具合に応じて、臨機応変に決定されます。
スレッド
タスクと似た仕事の単位には、プロセスやスレッドがあります。これらはオペレーティングシステムの種類によって用語の異なる同義語であることがあります。あるいはハードウェアの並列処理の細かさによる階層関係であることもあります。
典型的には、一つのタスクが幾つかのプロセスで構成され、一つのプロセスが幾つかのスレッドで構成されます。それらが並行処理の単位になり、ハードウェアを有効利用して、性能を向上させます。
タスクの生成から実行
タスクは、ハードウェアで実行される小さな作業単位であり、次のように状態遷移をして処理されます。
タスクが生成されると「実行可能状態」になります。ディスパッチャによって実行可能状態から「実行状態」になります。
タスクの消滅までの状態遷移(実行可能状態、実行状態、待ち状態)
実行状態のタスクは、入出力処理の間は待ち状態になります。入出力処理が終わると実行可能状態になります。
実行状態のタスクは、割り込みがあると実行状態から実行可能状態になります。
どちらの場合も実行可能状態のタスクはディスパッチャによる実行再開を待ちます。
タスクの実行が完了すると、使用した資源が開放され、タスクは消滅します。
ディスパッチャ
ディスパッチャとは並行処理されている複数のタスクやプロセスに、次々とCPUへ割り振るプログラムです。CPUの処理は極めて短時間なので、人間がジョブ制御文で実行順序を計画するよりも、ディスパッチャに実行制御を任せるほうが効率的です。
優先度順方式
スケジューリングの一種である優先度準方式は、各タスクに優先度を設定して、優先度の順に実行する方式です。
即時処理すべき業務と、それ以外の業務を区別することなどに役立ちます。優先度に低いタスクは、待ち時間が長引く可能性があります。
ラウンドロビン方式
スケジューリングの一種であるラウンドロビン方式は、中断されたタスクが待ち行列の最後に並ぶことによって、グルグル回るように順番が来るという単純な方式です。
多重プログラミング(マルチプログラミング)
多重プログラミングとは、1台のコンピュータで複数のプログラムを見かけ上並行処理する方式です。タスク管理などによってCPUと入出力チャネルを並行処理させることによって、ハードウェア資源を有効に利用し、処理能力を向上させます。
多重プログラミングにおけるタスクのスケジューリング方式には以下のような種類があります。
プリエンプティブ方式
プリエンプティブ方式は、本格的なタイムスライス方式です。オペレーティングシステムがハードウェアタイマを用いて、もれなく制御する方式です。
タイムスライス方式
スケジューリングの一種であるタイムスライス方式は、ハードウェア大麻によるクロック割込みによって、一定時間(タイムクォンタム)で次のタスクに切り替える方式です。長時間を要するタスクの終了を、他のタスクが待つ必要がなくなります。
タイムクォンタム
タイムクォンタムとは、タイムスライス方式においてタスクを切り替える一定時間のことです。タイムクォンタムを短くするほど、タスクの待ち時間が減る可能性が高まります。
タイムクォンタムと切替回数は反比例するので、タイムクォンタムを短くするほど、切替処理のオーバーヘッドが増える欠点があります。
ノンプリエンプティブ方式
ノンプリエンプティブ方式とは、簡易的なタイムスライス方式です。オペレーティングシステムの管理のもとに実行されるプログラムの側が、自発的に空き時間を開放する方式です。
オペレーティングシステムの処理が完結になりますが、何らかの理由で空き時間の開放がなされないと、ハードウェア資源の利用効率が落ちるという欠点があります。
マルチタスク(プログラミング)の実行イメージ
以下の2つのプログラムを並行処理させた場合のイメージは以下のようになります。
- プログラムA:CPU(20ms)→I/O(30ms)→CPU(20ms)→I/O(40ms)→CPU(10ms)
- プログラムB:CPU(10ms)→I/O(30ms)→CPU(20ms)→I/O(20ms)→CPU(20ms)