5-6 プロセス管理とCPUスケジューリング
1
多重プログラミングの概念
CPUを無駄なく使いたい
開始 遊休状態: 入力
ジョブA 遊休状態: 入力
開始 遊休状態: 入力
ジョブB 遊休状態: 入力
図4.1 二つの上部A,Bの実行
停止
停止
2
図4.2 多重プログラミング機構のない場合のジョブ実行
開始 遊休状態: 入力
ジョブA 遊休状態: 入力
停止
開始 遊休状態: 入力
ジョブB 遊休状態: 入力
停止 待 ち
多重プログラミングの概念
開始 遊休状態: 入力
ジョブA
遊休状態: 入力 停止
開始 遊休状態: 入力
ジョブB 遊休状態: 入力
停止
図4.3 多重プログラミング機構のある場合のジョブ実行
3
プロセスとは?
厳密な概念はない! 定義は困難
あえて言うと,プロセスとは下記の2つの定義?あり
1)実行しているプログラム 2)疑似プロセッサ プログラムを実行するための器 その他,ユーザの代理という概念?もあり. OSが管理するための単位 プロセスのことをタスクとも言う.
4
プロセスの状態
活動中 新規
待機中
停止
図4.6 プロセス状態遷移図
実行中 新規
待機中
図4.7 プロセス状態遷移詳細図
実行待ち 停止
5
プロセス制御ブロック(PCB: Process Control Block)
プロセスに関する情報を格納しておく器 必要な情報(詳細はOS,ハードウェアによって異なる)
プロセスの状態 新規,実行待ち,実行中,...
プログラムカウンタ レジスタの内容
レジスタの種類はプロセッサによって異なる.
メモリ管理情報 上限/下限レジスタ,ページ表(ページングシステム),..
課金情報 CPU使用時間,実使用時間,課金番号,ジョブ番号,..
入出力情報 未完了の入出力要求,割当てられている入出力装置,オープンされているファイル,..
CPUスケジューリング情報 プロセスの優先度,レディキューへのポインタ,...
プログラムカウンタ
レジスタ類
開かれたファイルのリスト
記憶範囲
プロセス番号
プロセス 状態
ポインタ
・ ・ ・
図4.8 プロセス制御ブロック 6
コンテキスト(context)とは?
準備中
7
コンテキストスイッチ:プログラムの切り替え
レジスタ退避
・ ・ ・
レジスタ復元
レジスタ退避
・ ・ ・
レジスタ復元
利用者プログラムA
オペレーティングシステム
利用者プログラムB 割込みまたはスーパバイザコール
割込みまたはスーパバイザコール
実行状態
実行状態
実行状態
遊休状態
遊休 状態
遊休 状態
図4.9 利用者間でのCPUの切り替え 8
スケジューリングのためのキュー(1/2)
レディキュー(Ready queue,実行待ち列)
実行可能状態のプロセスをつないでおくキュー
デバイスのためのキュー(デバイスキュー,装置待ち列)
装置が空くのを待っているプロセスのキュー
図4.10 実行待ち列と種々の入出力装置待ち列(図:準備中)
9
スケジューリングのためのキュー(2/2)
図4.12 単純化した待ち列図式(図:準備中)
図4.11 CPUスケジューリングの待ち列図式表現(図:準備中)
10
スケジューラ ースケジューラの種類ー
長期スケジューラ(Long term scheduler, ジョブスケジューラ)
システムで処理すべきジョブを選択 複数(多重度)のジョブを選択
メモリにロード
短期スケジューラ(short term scheduler,CPUスケジューラ)
実際にCPUに割当てるジョブを選択 選択するのは1つのみ
中期スケジューラ(medium term scheduler)(ないOSもある)
多重度の制御 プロセスをシステムから取り除く.
図4.13 中期スケジューリングを加えた待ち列図式(図:準備中)
11
ディスパッチャ(dispatcher)
CPUスケジューラで選択されたプロセスにCPUを実際に割当てるプログラムのこと.OSの一部.
仕事
プログラムカウンタの設定,レジスタ内容のロード,ユーザモードへの切り替え,...
12
スケジューリングアルゴリズム
評価基準: 何を目標にするか? CPU使用率 スループット(throughput)
単位時間当りに完了したジョブ数
ターンアラウンド時間(turnaround time) ジョブ投入からジョブ完了までにかかった時間
待ち時間(waiting time) レディキューにいる時間
応答時間(response time) 会話型システム:コマンド投入からプロンプトが帰ってくるまでの時間
理想 CPU使用率,スループット → 最大 ターンアラウンド時間,待ち時間,応答時間 → 最小
最小値,最大値,平均値か?
13
スケジューリングアルゴリズムの分類
横取りのない(non-preemptive)アルゴリズム
先着順サービス方式(FCFS, First-Come-First-Served)
最短ジョブ優先方式
優先度方式
横取りのある(preemtive)アルゴリズム
ラウンドロビン(Round-Robin,巡回方式)
多重レベル待ち列(Multi-queue scheduling)
多重レベルフィードバック列(Multi-level feedback queue)
14
横取りのない(non-preemptive)アルゴリズム
先着順サービス方式(FCFS, First-Come-First-Served)
最短ジョブ優先方式
優先度方式
15
先着順サービス方式(FCFS, First-Come-First-Served)
ジョブ バースト時間
1 24
2 3
3 3
到着した順番に実行する. 例
ジョブ2 ジョブ1 ジョブ3
0 24 27 30
ガント図
時刻0でほとんど同時にジョブ1,2,3が到着したが, ジョブ1,ジョブ2,ジョブ3の順で到着した場合:
ジョブ2 ジョブ1 ジョブ3
0 3 6 30
時刻0でほとんど同時にジョブ1,2,3が到着したが, ジョブ2,ジョブ3,ジョブ1の順で到着した場合:
平均ターンアラウンド時間=(24+27+30)/3 = 27
平均ターンアラウンド時間=(30+3+6)/3 = 13
ガント図
16
最短ジョブ優先方式
ジョブ バースト時間
1 6
2 3
3 8
4 7
実行時間の短い順に実行する.
理論的に最小の待ち時間を与える.
仮定:横取りがない. 例
ガント図
時刻0でほとんど同時にジョブ1,2,3,4が到着した場合.
ジョブ2 ジョブ3 ジョブ1
0 3 9 24
平均ターンアラウンド時間=(9+3+24+16)/4 = 13
16
ジョブ4
17
優先度方式(priority scheduling)
プロセスに優先度を付けて,優先度順に実行する.
18
横取りのある(preemtive)アルゴリズム
横取りのある最短ジョブ優先方式
ラウンドロビン(Round-Robin,巡回方式)
多重レベル待ち列(Multi-queue scheduling)
多重レベルフィードバック列(Multi-level feedback queue)
19
横取りのある最短ジョブ優先方式
ジョブ 到着時刻 バースト時間
1 0 8
2 1 4
3 2 9
4 3 5
最小残り時間優先方式(Shortest-Remaining-Time-First)とも言う.
例
ガント図 ジョブ2 ジョブ3 ジョブ1
0 1 5 26
平均ターンアラウンド時間 =((17-0)+(5-1)+(26-2)+(10-3))/4 = 13
10
ジョブ4
17
横取り
ジョブ1
横取りのない最短ジョブ優先方式の場合:
平均ターンアラウンド時間 = 57/4 = 14.25
20
ラウンドロビン(Round-Robin,巡回スケジューリング)(1/3)
ジョブ バースト時間
1 24
2 3
3 3
一定時間CPUを割り当てる.
一定時間: タイムスライス(time-slice,量子時間)
終了しなければ,次に回す(レディキューの最後尾につなぐ)
例
ジョブ2 ジョブ1 ジョブ3
0 26 30
ガント図
平均ターンアラウンド時間=47/3 = 16
22 10 14 4 7 18
ジョブ1 ジョブ1 ジョブ1 ジョブ1 ジョブ1
下記は,タイムスライス=4の場合のガント図
仮定:時刻0で,ジョブ1,2,3の順で到着
タイムスライスについて
タイムスライス → ∞ : FCFS(先着順サービス)
→ 0: Processor scharing(プロセッサシェアアリング,プロセッサ共有)
21
ラウンドロビン(Round-Robin,巡回スケジューリング)(2/3)
ジョブ バースト時間
1 13
2 6
3 11
例の追加(右表)
例
ジョブ2 ジョブ1 ジョブ3
0 26 30
ガント図
平均ターンアラウンド時間=(30+18+29)/3 = 77/3
22 12 16 4 8 18
ジョブ3 ジョブ1 2 ジョブ1 ジョブ3
下記は,タイムスライス=4の場合のガント図
仮定:時刻0で,ジョブ1,2,3の順で到着
29
1
22
ラウンドロビン(Round-Robin,巡回スケジューリング)(3/3)
■タイムスライスの終了時の処理
プロセスの入れ替え: コンテキストスイッチング(Context switching)
コンテキストの入れ替え 古い(今実行していた)プロセスのレジスタ内容を退避
新しいプロセスのレジスタ内容をレジスタにロード
オーバヘッドが生じる
タイムスライスを短くするとコンテキストのオーバヘッドが大
図4.16 状態切換えを増加させるより小さな量子時間(タイムスライス)値(図:準備中)
23
多重レベル待ち列
タイプの異なるジョブ フォアグランドジョブ(foreground,会話的ジョブ等) バックグランドジョブ(background,バッチ等)
キュー毎に異なるスケジューリングアルゴリズム CPUの割当方法:優先度,時間配分
システムタスク
会話型
編集
バッチ
学生バッチ
最高優先度
最高優先度
図4.18 多重待ち列スケジューリング方式 24
多重レベルフィードバック列
キュー間の移動を許す. 自由度の高いスケジューリング パラメータ
キューの数 各キューのスケジューリングアルゴリズム 移動の決定方策 最初に入れるキューの決定方法
パラメータの決定が困難
キュー2
図4.19 多重レベルフィードバック列
キュー1
キュー0
タイムスライス=16
タイムスライス=8
FCFS
25
アルゴリズムの評価手法
解析的評価
決定性モデル
ジョブの振る舞いが決定的
確率的モデル
ジョブの振る舞いが確率的
待ち行列理論(Queueing theory)
シミュレーション
26