5-6...

26
5-6 プロセス管理とCPUスケジューリング 1

Upload: others

Post on 17-May-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 5-6 プロセス管理とCPUスケジューリングfukuda/HijyoukinH25/kitakyushu/...最小残り時間優先方式(Shortest-Remaining-Time-First)とも言う. 例 ガント図

5-6 プロセス管理とCPUスケジューリング

1

Page 2: 5-6 プロセス管理とCPUスケジューリングfukuda/HijyoukinH25/kitakyushu/...最小残り時間優先方式(Shortest-Remaining-Time-First)とも言う. 例 ガント図

多重プログラミングの概念

CPUを無駄なく使いたい

開始 遊休状態: 入力

ジョブA 遊休状態: 入力

開始 遊休状態: 入力

ジョブB 遊休状態: 入力

図4.1 二つの上部A,Bの実行

停止

停止

2

Page 3: 5-6 プロセス管理とCPUスケジューリングfukuda/HijyoukinH25/kitakyushu/...最小残り時間優先方式(Shortest-Remaining-Time-First)とも言う. 例 ガント図

図4.2 多重プログラミング機構のない場合のジョブ実行

開始 遊休状態: 入力

ジョブA 遊休状態: 入力

停止

開始 遊休状態: 入力

ジョブB 遊休状態: 入力

停止 待 ち

多重プログラミングの概念

開始 遊休状態: 入力

ジョブA

遊休状態: 入力 停止

開始 遊休状態: 入力

ジョブB 遊休状態: 入力

停止

図4.3 多重プログラミング機構のある場合のジョブ実行

3

Page 4: 5-6 プロセス管理とCPUスケジューリングfukuda/HijyoukinH25/kitakyushu/...最小残り時間優先方式(Shortest-Remaining-Time-First)とも言う. 例 ガント図

プロセスとは?

厳密な概念はない! 定義は困難

あえて言うと,プロセスとは下記の2つの定義?あり

1)実行しているプログラム 2)疑似プロセッサ プログラムを実行するための器 その他,ユーザの代理という概念?もあり. OSが管理するための単位 プロセスのことをタスクとも言う.

4

Page 5: 5-6 プロセス管理とCPUスケジューリングfukuda/HijyoukinH25/kitakyushu/...最小残り時間優先方式(Shortest-Remaining-Time-First)とも言う. 例 ガント図

プロセスの状態

活動中 新規

待機中

停止

図4.6 プロセス状態遷移図

実行中 新規

待機中

図4.7 プロセス状態遷移詳細図

実行待ち 停止

5

Page 6: 5-6 プロセス管理とCPUスケジューリングfukuda/HijyoukinH25/kitakyushu/...最小残り時間優先方式(Shortest-Remaining-Time-First)とも言う. 例 ガント図

プロセス制御ブロック(PCB: Process Control Block)

プロセスに関する情報を格納しておく器 必要な情報(詳細はOS,ハードウェアによって異なる)

プロセスの状態 新規,実行待ち,実行中,...

プログラムカウンタ レジスタの内容

レジスタの種類はプロセッサによって異なる.

メモリ管理情報 上限/下限レジスタ,ページ表(ページングシステム),..

課金情報 CPU使用時間,実使用時間,課金番号,ジョブ番号,..

入出力情報 未完了の入出力要求,割当てられている入出力装置,オープンされているファイル,..

CPUスケジューリング情報 プロセスの優先度,レディキューへのポインタ,...

プログラムカウンタ

レジスタ類

開かれたファイルのリスト

記憶範囲

プロセス番号

プロセス 状態

ポインタ

・ ・ ・

図4.8 プロセス制御ブロック 6

Page 7: 5-6 プロセス管理とCPUスケジューリングfukuda/HijyoukinH25/kitakyushu/...最小残り時間優先方式(Shortest-Remaining-Time-First)とも言う. 例 ガント図

コンテキスト(context)とは?

準備中

7

Page 8: 5-6 プロセス管理とCPUスケジューリングfukuda/HijyoukinH25/kitakyushu/...最小残り時間優先方式(Shortest-Remaining-Time-First)とも言う. 例 ガント図

コンテキストスイッチ:プログラムの切り替え

レジスタ退避

・ ・ ・

レジスタ復元

レジスタ退避

・ ・ ・

レジスタ復元

利用者プログラムA

オペレーティングシステム

利用者プログラムB 割込みまたはスーパバイザコール

割込みまたはスーパバイザコール

実行状態

実行状態

実行状態

遊休状態

遊休 状態

遊休 状態

図4.9 利用者間でのCPUの切り替え 8

Page 9: 5-6 プロセス管理とCPUスケジューリングfukuda/HijyoukinH25/kitakyushu/...最小残り時間優先方式(Shortest-Remaining-Time-First)とも言う. 例 ガント図

スケジューリングのためのキュー(1/2)

レディキュー(Ready queue,実行待ち列)

実行可能状態のプロセスをつないでおくキュー

デバイスのためのキュー(デバイスキュー,装置待ち列)

装置が空くのを待っているプロセスのキュー

図4.10 実行待ち列と種々の入出力装置待ち列(図:準備中)

9

Page 10: 5-6 プロセス管理とCPUスケジューリングfukuda/HijyoukinH25/kitakyushu/...最小残り時間優先方式(Shortest-Remaining-Time-First)とも言う. 例 ガント図

スケジューリングのためのキュー(2/2)

図4.12 単純化した待ち列図式(図:準備中)

図4.11 CPUスケジューリングの待ち列図式表現(図:準備中)

10

Page 11: 5-6 プロセス管理とCPUスケジューリングfukuda/HijyoukinH25/kitakyushu/...最小残り時間優先方式(Shortest-Remaining-Time-First)とも言う. 例 ガント図

スケジューラ ースケジューラの種類ー

長期スケジューラ(Long term scheduler, ジョブスケジューラ)

システムで処理すべきジョブを選択 複数(多重度)のジョブを選択

メモリにロード

短期スケジューラ(short term scheduler,CPUスケジューラ)

実際にCPUに割当てるジョブを選択 選択するのは1つのみ

中期スケジューラ(medium term scheduler)(ないOSもある)

多重度の制御 プロセスをシステムから取り除く.

図4.13 中期スケジューリングを加えた待ち列図式(図:準備中)

11

Page 12: 5-6 プロセス管理とCPUスケジューリングfukuda/HijyoukinH25/kitakyushu/...最小残り時間優先方式(Shortest-Remaining-Time-First)とも言う. 例 ガント図

ディスパッチャ(dispatcher)

CPUスケジューラで選択されたプロセスにCPUを実際に割当てるプログラムのこと.OSの一部.

仕事

プログラムカウンタの設定,レジスタ内容のロード,ユーザモードへの切り替え,...

12

Page 13: 5-6 プロセス管理とCPUスケジューリングfukuda/HijyoukinH25/kitakyushu/...最小残り時間優先方式(Shortest-Remaining-Time-First)とも言う. 例 ガント図

スケジューリングアルゴリズム

評価基準: 何を目標にするか? CPU使用率 スループット(throughput)

単位時間当りに完了したジョブ数

ターンアラウンド時間(turnaround time) ジョブ投入からジョブ完了までにかかった時間

待ち時間(waiting time) レディキューにいる時間

応答時間(response time) 会話型システム:コマンド投入からプロンプトが帰ってくるまでの時間

理想 CPU使用率,スループット → 最大 ターンアラウンド時間,待ち時間,応答時間 → 最小

最小値,最大値,平均値か?

13

Page 14: 5-6 プロセス管理とCPUスケジューリングfukuda/HijyoukinH25/kitakyushu/...最小残り時間優先方式(Shortest-Remaining-Time-First)とも言う. 例 ガント図

スケジューリングアルゴリズムの分類

横取りのない(non-preemptive)アルゴリズム

先着順サービス方式(FCFS, First-Come-First-Served)

最短ジョブ優先方式

優先度方式

横取りのある(preemtive)アルゴリズム

ラウンドロビン(Round-Robin,巡回方式)

多重レベル待ち列(Multi-queue scheduling)

多重レベルフィードバック列(Multi-level feedback queue)

14

Page 15: 5-6 プロセス管理とCPUスケジューリングfukuda/HijyoukinH25/kitakyushu/...最小残り時間優先方式(Shortest-Remaining-Time-First)とも言う. 例 ガント図

横取りのない(non-preemptive)アルゴリズム

先着順サービス方式(FCFS, First-Come-First-Served)

最短ジョブ優先方式

優先度方式

15

Page 16: 5-6 プロセス管理とCPUスケジューリングfukuda/HijyoukinH25/kitakyushu/...最小残り時間優先方式(Shortest-Remaining-Time-First)とも言う. 例 ガント図

先着順サービス方式(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

Page 17: 5-6 プロセス管理とCPUスケジューリングfukuda/HijyoukinH25/kitakyushu/...最小残り時間優先方式(Shortest-Remaining-Time-First)とも言う. 例 ガント図

最短ジョブ優先方式

ジョブ バースト時間

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

Page 18: 5-6 プロセス管理とCPUスケジューリングfukuda/HijyoukinH25/kitakyushu/...最小残り時間優先方式(Shortest-Remaining-Time-First)とも言う. 例 ガント図

優先度方式(priority scheduling)

プロセスに優先度を付けて,優先度順に実行する.

18

Page 19: 5-6 プロセス管理とCPUスケジューリングfukuda/HijyoukinH25/kitakyushu/...最小残り時間優先方式(Shortest-Remaining-Time-First)とも言う. 例 ガント図

横取りのある(preemtive)アルゴリズム

横取りのある最短ジョブ優先方式

ラウンドロビン(Round-Robin,巡回方式)

多重レベル待ち列(Multi-queue scheduling)

多重レベルフィードバック列(Multi-level feedback queue)

19

Page 20: 5-6 プロセス管理とCPUスケジューリングfukuda/HijyoukinH25/kitakyushu/...最小残り時間優先方式(Shortest-Remaining-Time-First)とも言う. 例 ガント図

横取りのある最短ジョブ優先方式

ジョブ 到着時刻 バースト時間

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

Page 21: 5-6 プロセス管理とCPUスケジューリングfukuda/HijyoukinH25/kitakyushu/...最小残り時間優先方式(Shortest-Remaining-Time-First)とも言う. 例 ガント図

ラウンドロビン(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

Page 22: 5-6 プロセス管理とCPUスケジューリングfukuda/HijyoukinH25/kitakyushu/...最小残り時間優先方式(Shortest-Remaining-Time-First)とも言う. 例 ガント図

ラウンドロビン(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

22

Page 23: 5-6 プロセス管理とCPUスケジューリングfukuda/HijyoukinH25/kitakyushu/...最小残り時間優先方式(Shortest-Remaining-Time-First)とも言う. 例 ガント図

ラウンドロビン(Round-Robin,巡回スケジューリング)(3/3)

■タイムスライスの終了時の処理

プロセスの入れ替え: コンテキストスイッチング(Context switching)

コンテキストの入れ替え 古い(今実行していた)プロセスのレジスタ内容を退避

新しいプロセスのレジスタ内容をレジスタにロード

オーバヘッドが生じる

タイムスライスを短くするとコンテキストのオーバヘッドが大

図4.16 状態切換えを増加させるより小さな量子時間(タイムスライス)値(図:準備中)

23

Page 24: 5-6 プロセス管理とCPUスケジューリングfukuda/HijyoukinH25/kitakyushu/...最小残り時間優先方式(Shortest-Remaining-Time-First)とも言う. 例 ガント図

多重レベル待ち列

タイプの異なるジョブ フォアグランドジョブ(foreground,会話的ジョブ等) バックグランドジョブ(background,バッチ等)

キュー毎に異なるスケジューリングアルゴリズム CPUの割当方法:優先度,時間配分

システムタスク

会話型

編集

バッチ

学生バッチ

最高優先度

最高優先度

図4.18 多重待ち列スケジューリング方式 24

Page 25: 5-6 プロセス管理とCPUスケジューリングfukuda/HijyoukinH25/kitakyushu/...最小残り時間優先方式(Shortest-Remaining-Time-First)とも言う. 例 ガント図

多重レベルフィードバック列

キュー間の移動を許す. 自由度の高いスケジューリング パラメータ

キューの数 各キューのスケジューリングアルゴリズム 移動の決定方策 最初に入れるキューの決定方法

パラメータの決定が困難

キュー2

図4.19 多重レベルフィードバック列

キュー1

キュー0

タイムスライス=16

タイムスライス=8

FCFS

25

Page 26: 5-6 プロセス管理とCPUスケジューリングfukuda/HijyoukinH25/kitakyushu/...最小残り時間優先方式(Shortest-Remaining-Time-First)とも言う. 例 ガント図

アルゴリズムの評価手法

解析的評価

決定性モデル

ジョブの振る舞いが決定的

確率的モデル

ジョブの振る舞いが確率的

待ち行列理論(Queueing theory)

シミュレーション

26