プロセス(タスク)管理

プロセス(タスク)管理
目的:プロセス(プログラム)の効率的な実行
• 複数のプログラムを連続して実行させる
• 複数のプログラムを同時に実行させる
仕事の進め方
仕事1:報告書作成
仕事4:伝票集計
仕事2:報告書印刷
仕事5:企画作成
仕事3:報告書郵送
(1) 単一処理
印刷ができるまで待つ
仕事の内容
報告書作成
郵送
伝票集計
企画作成
印刷
印刷機
(2) 多重処理(マルチプログラミング,マルチタスク)
仕事の内容
印刷機
報告書作成
企画作成
伝票集計
印刷
郵送
郵送の仕事は待たせておく
1
プログラムとプロセス
■ プログラム : 処理手順の静的な記述
■ プロセス : データを伴ったプログラムの動的な実行の実体
主記憶
静的な実体(プログラム)
は同じでも動的な実体
は異なる
プロセスP1 プログラムAの実行の実体
プログラムA
プロセスP2
プログラムBの実行の実体
プロセスP3
プログラムBの実行の実体
プログラムB
ディスク装置
プロセス実行のイメージ
プロセスP1,P2,P3は
時間的に切り替えら
れながら実行される
主記憶
仮想CPU
PSW
レジスタ
PC
SP
プロセスP1
物理CPU
PSW
レジスタ
PC
SP
プロセスP2
プログラムB
PSW
レジスタ
PC
SP
プログラムA
PSW
ディスク装置
レジスタ
PC
SP
プロセスP3
2
プロセスの状態
■ 実行状態(run)
: プロセッサによりプロセスが実行されている状態
■ 待ち状態(wait)
: プロセスが入出力などを要求し,入出力動作の
完了を待っている状態
( = プロセスの実行は中断される)
■ 実行可能状態(ready)
: 資源としてのプロセッサが割り当てられれば,
中断しているプロセスをいつでも再開できる状態
入出力要求
プロセスP1
実行状態
入出力完了(割込み)
待ち状態
実行可能状態
入出力要求
P2
入出力要求
P3
P4
P5
実行状態
待ち状態
実行可能状態
3
コンテキストスイッチ
プロセスの状態と遷移
プロセスの消滅
終了
• タイムアウト
• 優先度の高いプロ
セスの実行要求
実行状態
(run)
ディスパッチ
プロセスの生成
実行可能状態
(ready)
事象発生
事象待ち(入出力要求など)
待ち状態
(wait)
(入出力の完了など)
P1 P2 P3 P4 P5
ready queue(待ち行列)
(1) 実行状態 : プロセスが実行されている状態
(2) 待ち状態 : 事象(入出力の動作の完了など)待ちの状態
(3) 実行可能状態 : プロセッサの割当を待っている状態
プロセスの切替え要因
◆ イベントドリブン(event driven;事象駆動)
事象(イベント;システムの状態の変化)が発生したのを契機に,プロセスのスケ
ジューリングを実行する方式。マルチプログラミングの実現に必要。
事象が発生するタイミングの例
• 入出力の要求,完了
• マウスのクリック,キーボード入力
◆ タイムスライス(time slice;時分割 / time sharing)
システムの状態変化とは無関係に,設定した短い時間(クオンタム)の周期でプ
ロセスを切り替える方式。一定時間ごとに割込みを発生させるインターバルタイ
マが必要。
4
プロセスの切替え方式
◆ ノンプリエンプション(non-preemption)
実行中のプロセスが入出力を要求する場合など,CPUの使用権をプロセ
ス自身が自主的にOSに戻す。(Windows95,MacOS 9)
プロセス実行中
にエラーが発生
すると,システム
全体が停止して
しまう可能性が
ある
プロセスP1
プロセスP2
プロセスP3
プロセスが自主的に
CPUの使用権を戻す
◆ プリエンプション(preemption)
OSが実行中のプロセスを強制的に取り上げることにより,プロセス
を中断させる。(WindowsXP,UNIX系OS,MacOS X)
プロセスP1
プロセスP2
プロセスP3
プロセスの管理
• スケジューラ (scheduler) / ディスパッチャ(dispatcher)
• プロセスの状態(run,wait,ready)の管理
• 実行可能状態にあるプロセスの選択
→ スケジューリングアルゴリズム
• 選択したプロセスを実行させる
• プロセスはプロセス制御ブロック(PCB:Process Control Block)
と呼ばれるデータ構造によって管理される
•
•
•
•
•
プロセス番号
プロセスの優先度
現在のプロセスの状態(実行状態 / 待ち状態 / 実行可能状態)
PC, レジスタ
PSW
OSの管理領域(主記憶内)中
など
にプロセスごとに格納される
5
スケジューリングアルゴリズム
◆ 実行可能状態にあるプロセスのどれを実行させるか
を決定する
1. 到着順(FCFS:First Come First Served)
2. 処理時間順(SPTF:Shortest Processing Time First)
3. 優先度順(PS:Priority Scheduling)
4. ラウンドロビン(Round Robin)
5. 多重レベルスケジューリング
6. 多重レベルフィードバックスケジューリング
6
1. 到着順
z
先に到着したプロセスから順に処理を行う
(FCFS : First Come First Served)
待ち行列
(queue)
終了
プロセッサ
・・・
到着順に並ぶ
選ばれたプロセスは完了
するまで実行される
利点:単純,公平
欠点:長時間実行するプロセスがあると,その後に並ぶプロセス
は長時間待たされる(ターンアラウンドタイムTATが大きくなる)
例:処理時間 P1:1秒,P2:1秒,P3:1秒,P4:100秒
P1-P2-P3-P4の順にほぼ同時に到着したときの平均TAT: 27.25秒
P4-P3-P2-P1の順にほぼ同時に到着したときの平均TAT:101.5秒
到着順
プロセス
到着時刻
CPU 時間
A
B
C
D
E
0
5
10
10
20
10
5
20
15
10
10
到着 A B C,D
20
30
C
P ■-A-B-C-D-E
U
40
50
60
ターンアラウンドタイム
E
A
B
C
D
E
10
10
25
40
40
7
平均 25
2. 処理時間順
z
CPU使用時間の短いプロセスから順に処理を行う
到着
待ち行列(queue)
終了
プロセッサ
・・・
処理時間順に並ぶ
利点:ターンアラウンドタイムの平均時間が最小になる
欠点:実現が困難(あらかじめプロセスの実行時間を知ること
は困難)
⇒ あらかじめユーザに実行時間を登録させる
処理時間順
プロセス
到着時刻
CPU 時間
A
B
C
D
E
0
5
10
10
20
10
5
20
15
10
10
到着 A B C,D
20
30
C
P ■-A-B-D-E-C
U
40
50
60
ターンアラウンドタイム
E
A
B
C
D
E
10
10
50
20
20
8
平均 22
ソフトウェア開発技術者試験問題(平成18年度秋期)
問:五つのプロセスA~Eに対して,プロセスの多重度が1で,
処理時間順方式のスケジューリングを適用した場合,
ジョブBのターンアラウンドタイムは何秒か。ここで,OSの
オーバヘッドは考慮しないものとする。
プロセス 到着時間 単独実行時の処理時間
0
1
A
0
2
B
1
4
C
2
3
D
3
2
E
4
1
2
3
4
5
6
7
8
9
10
11 12
A
B
C
D
E
Bのターンアラウンドタイム:11秒
(到着時刻 1, 終了時刻 11)
9
3. 優先度順
z
プロセスごとに実行の優先度をあらかじめ与える
到着
待ち行列(queue)
終了
プロセッサ
・・・
優先度順に並ぶ
優先度の高いプロセスが実行可能となると,実行中
のプロセスが中断される。(プリエンプションの場合)
利点:実行効率がよい
欠点:優先度の低いプロセスは待たされる(飢餓状態)
→時効果(aging):待ち時間の長さによって優先度を上げる
優先度順(ノンプリエンプションの場合)
z 一つのプロセスの実行が終了するまでCPUを割り当てる
プロセス
到着時刻
CPU 時間
優先度
A
B
C
D
E
0
5
10
10
20
10
5
20
15
10
3
2
3
2
1
C
P
U
1 ■-E
2 ■-B-D
3 ■-A-C
※ 優先度は小さい値ほ
ど優先度が高いとする
10
到着 A B C,D
20
30
40
50
60
ターンアラウンドタイム
E
A
B
C
D
E
10
10
50
20
20 平均 22
10
優先度順(プリエンプションの場合)
z 優先度の高いプロセスが到着したら,優先度の高いプ
ロセスにCPUを割り当てる
プロセス
到着時刻
CPU 時間
優先度
A
B
C
D
E
0
5
10
10
20
10
5
20
15
10
3
2
3
2
1
C
P
U
1 ■-E
2 ■-B-D
3 ■-A-C
※ 優先度は小さい値ほ
ど優先度が高いとする
10
到着 A B C,D
20
30
40
50
60
ターンアラウンドタイム
E
A
B
C
D
E
40
5
50
25
10
11
平均 26
4. ラウンドロビン
z
プロセスを順番に一定時間(クオンタム)ごとに
切り替えて実行する
待ち行列(queue)
到着
終了
プロセッサ
・・・
クオンタム内に終了しないプロセスは待ち
行列の末尾に回される。
利点:どのプロセスも公平に実行される
欠点:実行切替えが頻繁になると,
オーバーヘッド(overhead:本来の処理以外のために
費やされるコスト(時間))が大きい
ラウンドロビン
プロセス
到着時刻
CPU 時間
A
B
C
D
E
0
5
10
10
20
10
5
20
15
10
C
P ■-A-B-C-D-E
U
クオンタム=5とした場合
10
到着 A B C,D
20
30
40
50
60
ターンアラウンドタイム
E
A
B
C
D
E
30
5
50
45
25
12
平均 31
5. 多重レベルスケジューリング
z
プロセスの種類をグループに分類し,グループごとに
優先度やスケジューリングアルゴリズムを設定する
待ち行列1
到着
プロセッサ
・・
・待ち行列2
・・
・
終了
・・
・
待ち行列n
・・
・
優先度によって
振分け
各待ち行列でスケ
ジューリングを行う
多重レベルスケジューリング
グループ
優先度
プロセス
到着時間
CPU時間
アルゴリズム
A
1
A1
10
10
B
2
B1
B2
40
5
5
10
優先度が同じ場合は
ラウンドロビン
(クオンタム=5)
C
3
C1
C2
0
20
15
20
10
20
到着 C1 B2 A1
C2
30
40
50
到着順
60
ターンアラウンドタイム
B1
A1
B1
B2
C1
C2
10
5
20
35
40
13
平均 22
6. 多重レベルフィードバックスケジューリング
•
到着
ある待ち行列で一定のプロセッサ時間を使用したプロ
セスをより優先度の低い待ち行列に移す
プロセッサ
・・
・
・・
・
終了
・・
・
・・
・
各待ち行列で一定時間内に終了しないプロセスは
次のレベルの待ち行列の末尾に回される
14
プロセスとスレッド
■ プロセス :OSから見た処理の実行単位
■ スレッド(軽量プロセス) :プロセスを細分化した実行単位
ブラウザソフトでの例
z画像ファイルの受信
z音楽の再生
zユーザ入力の処理
並列に実行される
など…
それぞれの処理が一つのスレッドに対応する
プロセスとスレッド
■ プロセス :プロセスごとに独立した主記憶を占める
■ スレッド(軽量プロセス) :プログラム部は主記憶を共有する
主記憶
プロセスP1
プログラムA
プロセスP2
プログラムA
プロセスごと
のデータ
プロセスP3
主記憶
スレッドS1
スレッドごと
のデータ
プログラムA
15
プログラムA
スレッドS2
スレッドS3
スレッドのイメージ
主記憶
仮想CPU
OS
PSW
レジスタ
PC
SP
プロセスA
スレッド
スレッド
PSW
一つのプロセスが複数の
スレッドをもつ場合もあれ
ば(マルチスレッド),
レジスタ
PC
SP
PSW
レジスタ
PC
SP
プロセスC
スレッド
一つのプロセスが一つ
のスレッドに対応する
場合もある(シングル
スレッド)
基本情報技術者試験問題(平成17年度秋期,平成18年度春期)
問:並行処理の単位として,プロセスのほかに,プロセス内に
複数存在するスレッドを用いることがある。一つのプロセ
ス内のすべてのスレッドが共有するものはどれか。
ア 主記憶空間
イ スタック
ウ プログラムカウンタの値
エ レジスタセットの値
基本情報技術者試験問題(平成15年度春期)
問:スレッドとは,プロセス内部に含まれている論理的な並列処
理の単位である。スレッドごとに用意されるものはどれか。
ア
イ
ウ
エ
主記憶空間
開いているファイル識別子
プロセス間の通信ポート
レジスタ群の退避域
16
演習問題 4
1. プロセスは,実行可能状態(ready),実行状態(run),待ち状態(wait)を遷移しながら実行され
る。プロセスの状態遷移に関して,適切な記述はどれか。
(基本情報技術者試験問題)
ア CPU 処理と入出力処理が交互に現れるプロセスを複数個同時に実行させると,各プ
ロセスは実行状態と待ち状態の二つの状態間だけを遷移する。
イ 実行可能状態とは,CPU の割当てを待っている状態をいう。実行可能状態のプロセ
スは一般に複数個存在し,これらは待ち行列を形成する.
ウ 時分割処理を行っているシステム(タイムシェアリングシステム)では,実行状態
のプロセスは,一定時間が経過すると,待ち状態に遷移する。
エ 実行状態のプロセスは,自分に割り当てられた CPU 時間が終了すると待ち状態にお
かれる。
2. プロセスが実行状態,実行可能状態,待ち状態のいずれかの状態をとるとき,実行状態のプ
ロセスがプリエンプションによってほかのプロセスに実行を中断され,再び実行状態となるまで
の状態の変化として適切なものはどれか。(基本情報技術者試験問題)
ア
イ
ウ
エ
オ
実行状態
実行状態
実行状態
実行状態
実行状態
→
→
→
→
→
実行可能状態 → 実行状態
実行可能状態 → 待ち状態 → 実行状態
待ち状態 → 実行可能状態 → 実行状態
待ち状態 → 実行状態
実行可能状態 →待ち状態 → 実行状態
3. プロセスは実行状態,実行可能状態,待ち状態のいずれかの状態をとる。次の事象が発生し
た場合,そのプロセスはどの状態になるか。(基本情報技術者試験問題(改編))
(1)
(2)
(3)
(4)
自分より優先順位の高いプロセスが実行可能状態となった。
スケジューラによりプロセスが生成された。
入出力動作が完了した。
プロセスが入出力動作を要求した。
4. 表 1 のプロセスの集合に対し,到着順,処理時間順,プリエンプションのある処理時間順(残
り時間の最小のものを優先),定時間(クオンタム)が 2 のラウンドロビン(到着順に適用し,終
了したら即座に次のプロセスを実行する)の各アルゴリズムを適用したときのターンアラウンド
時間の平均値を求めよ。プロセス切替えに要するオーバヘッドは無視できるものとする。
表 1 プロセスの集合
プロセス
A
B
C
D
到着時間
0
1
3
5
処理時間
2
10
7
3
答
17
到着順 11.5
処理時間順 10.5
プリエンプションのある処理時間順
ラウンドロビン 12.5
9
5. OS におけるプロセスのスケジューリングに関する記述として,適切なものはどれか。(ソフ
トウェア開発技術者試験問題)
ア 到着順方式では,プロセスが生成された順に高い優先順位を付けて CPU 時間を割り
当てる。これは先に開始されたプロセスを優先させて,早く終了させることを目的
としているからである。
イ 優先順方式では,CPU の利用状況の低いプロセスの優先順位を順次高くし,逆に
CPU を多く利用したプロセスの優先順位を低くするので,システム全体の処理効率
を高めるのに適している。
ウ ラウンドロビン方式は,要求された順番に CPU 時間を割り当て,割り当てられた時
間を使い切った後は,待ち行列の末尾に回す方式である。
エ 多重レベルフィードバック方式は,割当て要求のあったプロセスに対して最初に低
い優先順位と長い CPU 時間を割り当て,その後は優先度を高くし,CPU 時間を徐々
に短くする方式である。
6. コンピュータシステムにおけるジョブスケジューリングの説明として,適切なものはどれか。
(ソフトウェア開発技術者試験問題)
ア 到着順方式のスケジューリングは,ジョブ間に CPU を公平に割当てるので,スルー
プットや応答時間の保証が可能である。
イ タイムスライスを利用してプリエンプションを行うと,タイマ割込みが多発するの
で,スループットが低下する。
ウ 対話型とバッチ処理が混在するコンピュータシステムでは,対話型ジョブの優先度
を高くすることによって応答性能の向上が期待できる。
エ 入出力を多用するジョブよりも CPU を多用するジョブの処理優先度を上げた方が,
スループットの向上に寄与する。
18