講義資料

Download Report

Transcript 講義資料

オペレーティングシステム
#11
計算機工学III
オペレーティングシステム
#12 主記憶管理:ページ置き換え方式
2006/07/07
津邑 公暁
オペレーティングシステム
#11
■
■
主記憶アクセスの特徴 = 局所性
空間的局所性

■
復習:主記憶アクセスの局所性
for(i=0; i<n; i++){
sum += a[i];
}
あるアドレス・ページにアクセスが発生した場合,
次はその近くのアドレス・ページにアクセスされる
可能性が高い
時間的局所性

あるアドレス・ページにアクセスが発生した場合,
近いうちには同じアドレス・ページにアクセスされる
可能性が高い
復習:仮想記憶処理の実装
オペレーティングシステム
#11
■
仮想記憶処理のオーバヘッド削減

ページフォルトの発生回数を減らしたい
➔
プリページング
-
必要となりそうなページを前もってスワップイン
最近アクセスされたページの
近くにあるページ

空間的局所性
から
ページフォルトの発生回数を減らしたい
➔
スワップアウト対象ページの効率的選択
-
この先,最も参照されなさそうなページをスワップアウト
最近アクセスされていない
(Least Recently Usedな)ページ
時間的局所性
から
今日の内容
オペレーティングシステム
#11
■
仮想記憶処理のオーバヘッド削減

ページフォルトの発生回数を減らしたい
➔
プリページング
-
必要となりそうなページを前もってスワップイン
最近アクセスされたページの
近くにあるページ

ページの置き換え方式に
ついてより詳しく
ページフォルトの発生回数を減らしたい
➔
スワップアウト対象ページの効率的選択
-
この先,最も参照されなさそうなページをスワップアウト
最近アクセスされていない
(Least Recently Usedな)ページ
オペレーティングシステム
#11
12.1
静的ページ置き換え方式
例
オペレーティングシステム
#11
■
これ以降,以下の例を使って説明


ページフレーム数
(物理空間):3 (0~2)
0x00000
ページ数
(仮想空間):8 (00~07)
0x00FFF
0x01000
0x01FFF
0x02000
0x02FFF
0x03000
物理空間
0x0000
0x0FFF
0x1000
0x1FFF
0x2000
0x2FFF
0
1
2
0x03FFF
0x04000
0x04FFF
0x05000
0x05FFF
0x06000
0x06FFF
0x07000
0x07FFF
00
01
02
03
04
05
06
07
オペレーティングシステム
#11
■
あるプロセスが,
以下の参照順でアクセスした場合

■
00 → 01 → 02 → 03 →
00 → 01 → 04 → 00 →
01 → 02 → 03 → 04
さまざまなアルゴリズムにおける
ページフォルト発生回数を見る
例
オペレーティングシステム
#11
静的ページ置き換え方式
■
最適アルゴリズム
■
LRU (Least Recently Used)
■
LFU (Least Frequently Used)
■
FIFO (First In First Out)
オペレーティングシステム
#11
静的ページ置き換え方式
■
最適アルゴリズム
■
LRU (Least Recently Used)
■
LFU (Least Frequently Used)
■
FIFO (First In First Out)
オペレーティングシステム
#11
■
参照順

■
00 → 01 → 02 → 03 →
00 → 01 → 04 → 00 →
01 → 02 → 03 → 04
最適アルゴリズム
前もって参照列が分かっていると仮定
ページフォルト
回数
0 1
0
7
6
5
4
3
2
ページの変遷
0 00 00 00 00 00 00 00 00 02
02 03
00
00 03
1 01
1 01 01 01 01 01 01 01 01 01 01
2 2 02
2 02
03 03 03 04
03 04 04 04 04 04
時刻
オペレーティングシステム
#11
静的ページ置き換え方式
■
最適アルゴリズム
■
LRU (Least Recently Used)
■
LFU (Least Frequently Used)
■
FIFO (First In First Out)
オペレーティングシステム
#11
■
参照順

■
LRU
00 → 01 → 02 → 03 →
00 → 01 → 04 → 00 →
01 → 02 → 03 → 04
ページフォルト
回数
0 1
1
0
9
8
7
6
5
4
3
2
ページの変遷
0 00 00 03
00
00 03 03 04
03 04 04 04
02 02 02
1 01
1 01 01 00
01 00 00 00 00 00 03
00 03
2 2 02
2 02 02 01
02 01 01 01 01 01 04
01
時刻
オペレーティングシステム
#11
静的ページ置き換え方式
■
最適アルゴリズム
■
LRU (Least Recently Used)
■
LFU (Least Frequently Used)
■
FIFO (First In First Out)
オペレーティングシステム
#11
■
参照順

■
LFU
00 → 01 → 02 → 03 →
00 → 01 → 04 → 00 →
01 → 02 → 03 → 04
ページフォルト
回数
0 1
0
8
7
6
5
4
3
2
ページの変遷
0 00 00 00 00 00 00 00 00 00 00 00
00
1 01
1 01 01 01 01 01 01 01 01 01 01
2 2 02
2 02
03 03 03 04
03 04 04 02
04 03
02 04
02
時刻
ランダム
選択
オペレーティングシステム
#11
静的ページ置き換え方式
■
最適アルゴリズム
■
LRU (Least Recently Used)
■
LFU (Least Frequently Used)
■
FIFO (First In First Out)
オペレーティングシステム
#11
■
参照順

■
FIFO
00 → 01 → 02 → 03 →
00 → 01 → 04 → 00 →
01 → 02 → 03 → 04
ページフォルト
回数
0 1
0
9
8
7
6
5
4
3
2
ページの変遷
0 00 00 03
00
00 03 03 04
03 04 04 04 04 04
1 01
1 01 01 00
01 00 00 00 00 00
02 02 02
2 2 02
2 02 02 01
02 01 01 01 01 01
03 03
時刻
オペレーティングシステム
#11
■
■
最適アルゴリズム

最小ページフォルト回数を確認するために紹介

実現不可能
LRU (Least Recently Used)

■
直近のアクセス時刻が最も過去のものを
スワップアウト
LFU (Least Frequently Used)

■
まとめ:静的ページ置き換え方式
スワップイン以降のアクセス頻度が最も低いものを
スワップアウト
FIFO (First In First Out)

スワップイン時刻が最も過去のものをスワップアウト
オペレーティングシステム
#11
12.2
Beladyの例外
オペレーティングシステム
#11
■
Beladyの例外
置き換えアルゴリズム

ページ参照列によっては得手・不得手はある

が,全てそれなりに「リクツ」の通ったアルゴリズム

なので,だいたいはうまくいきそう...
しかし

ページフレーム数が変化したとき
思わぬ性能変化を引き起こすアルゴリズムが...
オペレーティングシステム
#11
■
参照順

■
FIFO(ページフレーム数:4)
00 → 01 → 02 → 03 →
00 → 01 → 04 → 00 →
01 → 02 → 03 → 04
ページフォルト
回数
1
0 1
0
9
8
7
6
5
4
3
2
ページの変遷
0 00 00 00 00
00
1 01
1 01 01 01
2 2 02
2 02 02
3 03
3 3 3 03
時刻
00
01
02
03
04
00
01
02
03
04
01
00
02
03
04
00
02
01
03
04
00
01
03
02
04
03
00
01
02
03
00
04
01
02
オペレーティングシステム
#11
■
FIFOにおけるBeladyの例外
ページフレーム数:3
ページフォルト
回数
00 00 00 03 03 03 04 04 04 04 04 04
1 01 01 01 00 00 00 00 00 02 02 02
2 2 02 02 02 01 01 01 01 01 03 03
0 9
ページフレーム数を増やすことで
ページフォルト回数増加!
■
ページフレーム数:4
00 00 00 00 00
1 01 01 01 01
2 2 02 02 02
3 3 3 03 03
時刻
00
01
02
03
04
01
02
03
04
00
02
03
04
00
01
03
04
00
01
02
03
00
01
02
03
04
01
02
ページフォルト
回数
1 0
オペレーティングシステム
#11
■
参照順

■
LRU(ページフレーム数:4)
00 → 01 → 02 → 03 →
00 → 01 → 04 → 00 →
01 → 02 → 03 → 04
ページフォルト
回数
0 1
0
8
7
6
5
4
3
2
ページの変遷
0 00 00 00 00
00
1 01
1 01 01 01
2 2 02
2 02 02
3 03
3 3 3 03
時刻
00
01
02
03
00
01
02
04
03
00
01
04
03
00
01
04
03
00
01
04
03
02
00
01
04
03
02
00
04
01
03
02
オペレーティングシステム
#11
■
LRUの場合
ページフレーム数:3
ページフォルト
回数
00 00 00 03 03 03 04 04 04 02 02 02
1 01 01 01 00 00 00 00 00 00 03 03
2 2 02 02 02 01 01 01 01 01 01 04
1 0
ページフレーム数を増やすことで
ちゃんとページフォルト回数減少
■
ページフレーム数:4
00 00 00 00 00
1 01 01 01 01
2 2 02 02 02
3 3 3 03 03
時刻
00
01
02
03
00
01
04
03
00
01
04
03
00
01
04
03
00
01
04
02
00
01
03
02
04
01
03
02
ページフォルト
回数
0 8
オペレーティングシステム
#11
■
Beladyの例外の原因
ページフォルトが増えるということは...

フレーム数3のときには発生しなかった
ページフォルトがフレーム数4のときに発生している
なぜ?
00 00 00 03 03 03 04 04 04 04 04 04
1 01 01 01 00 00 00 00 00 02 02 02
2 2 02 02 02 01 01 01 01 01 03 03
00 00 00 00 00
1 01 01 01 01
2 2 02 02 02
3 3 3 03 03
00
01
02
03
04
01
02
03
04
00
02
03
04
00
01
03
04
00
01
02
03
00
01
02
03
04
01
02
オペレーティングシステム
#11
■
ページの「あたらしさ」の変化
ページを新しい順に並べてみる
00 00 00 03 03 03 04 04 04 04 04 04
1 01 01 01 00 00 00 00 00 02 02 02
2 2 02 02 02 01 01 01 01 01 03 03
00 01 02 03
新 00 01
00 02
01 03
02
00 01
00 02
01
00 01
旧
00
03
00
02
03
01
02
00
03
01
02
00
01
03
00
04 00 01 02 03 04
04
04
03置き換えパターンが
04 04
00 02
01 03
02 03
03
01
01
変化してしまっている
02
03 01
04 04
00 02
01 02
02
00
01 00
02 00
03 01
04 04
00 04
01
00 00 00 00 00
1 01 01 01 01
2 2 02 02 02
3 3 3 03 03
00
01
02
03
04
01
02
03
04
00
02
03
04
00
01
03
04
00
01
02
03
00
01
02
03
04
01
02
参考:LRUの場合
オペレーティングシステム
#11
■
ページを新しい順に並べてみる
00 00 00 03 03 03 04 04 04 02 02 04
02
1 01 01 01 00 00 00 00 00 00 03 03
2 2 02 02 02 01 01 01 01 01 01 04
00 01 02 03
新 00 01
00 02
01 03
02
00 01
00 02
01
00 01
旧
00
00
00
03
03
02
02
01
01
01
00
00
03
03
02
04 00 01 02 03 04
04
04
00
01置き換えパターンは
04 01
00 02
01 03
02 04
03
01
00
00 04
01変化しない
04 01
00 02
01 03
02
00
03 01
03 04
03 00
04 01
00 02
01
00 00 00 00 00
1 01 01 01 01
2 2 02 02 02
3 3 3 03 03
00
01
02
03
00
01
04
03
00
01
04
03
00
01
04
03
00
01
04
02
00
01
03
02
04
01
03
02
スタック
アルゴリズム
オペレーティングシステム
#11
12.2.1
スラッシング
12.3
動的ページ置き換え方式
オペレーティングシステム
#11
C
P
U
の
実
効
使
用
率
実行プロセス数と実効処理能力
プロセス増加により
100%に漸近
更なる
プロセス増加により
スワップ増加
スラッシング
(Thrashing)
少プロセスでは効率低
(入力待ちなど)
同時実行されるプロセス数
オペレーティングシステム
#11
■
定義

■
スラッシング(Thrashing)
物理ページへの大量の要求により,
CPUがページアウト/インのための処理に終始し,
プロセスの動作を妨げている状態
原因


非常に多くのプロセスを並行動作させようとした
非常に大きな記憶領域を要求するプロセスを
動作させようとした
オペレーティングシステム
#11
■
■
スラッシングの軽減法
ワーキングセット

過去の単位時間にアクセスされたページの集合

if (ページフレーム数 < ワーキングセットの大きさ)
➔
頻繁なスワップイン・スワップアウトが発生
➔
スラッシング
ワーキングセット法

ページフレーム数が
ワーキングセットの大きさと
同じだけあればよい
ワーキングセットの大きさと同じだけの
ページフレームをプロセスに割り当てることで
スラッシングを回避
オペレーティングシステム
#11
■
■
ワーキングセット法の近似
ワーキングセットの大きさ
= プロセスに割り当てるページ数

ワーキングセットを調べるのはコスト膨大

なんらかの方法で近似
ページフォルト発生の平均間隔

大きい場合(頻度小)
➔

この情報を
静的置換えアルゴリズムに
加えて使う
プロセスに与えられているページフレームは比較的十分
小さい場合(頻度大)
➔
プロセスには十分なページフレームが与えられていない
オペレーティングシステム
#11
■
ページフォルト平均間隔 + LRU

ワーキングセット法の近似とLRUの組み合わせ

プロセスに割当てるページフレーム数を動的に変更
➔
■
ページフォルト平均間隔+LRU
プロセスのワーキングセットは実行に伴い変化するため
アルゴリズム

ページフォルトの平均間隔を計算

平均間隔が(ある値より)小さい(高頻度)場合
➔

プロセスに与えるページフレーム数を増やす
(次回ページフォルト時スワップアウトせずスワップイン)
平均間隔が(ある値より)大きい(低頻度)場合
➔
プロセスに与えるページフレーム数を減らす
(すぐにLRUに基づき強制的にスワップアウト)
オペレーティングシステム
#11
■
LRU (Least Recently Used)

■
直近のアクセス時刻が最も過去のものを
スワップアウト
LFU (Least Frequently Used)

■
まとめ:静的ページ置き換え方式
スワップイン以降のアクセス頻度が最も低いものを
スワップアウト
FIFO (First In First Out)

スワップイン時刻が最も過去のものをスワップアウト
オペレーティングシステム
#11
■
ページ置き換え方式

ページ参照列によっては得手・不得手がある
➔
■
特定の参照列における性能だけを見て,
一概にどれがよいとは言えない
Beladyの例外


ページフレーム数をふやしたとき
ページフォルトが増加してしまう現象
原因:
ページフレーム数により
置き換えパターンが変化してしまうアルゴリズム
➔
例)FIFO
まとめ
オペレーティングシステム
#11
■
スラッシング

スワップ処理が多発し,CPUの本来の仕事である
プロセス処理が妨げられる状態
➔
■
まとめ
CPUの実行利用率が激減
ワーキングセット法


スラッシングの緩和
過去の単位時間においてアクセスされたページ群
(ワーキングセット)のページ数と同じだけの
ページフレームをプロセスに割り当てる
オペレーティングシステム
#11
■
まとめ
ページフォルト平均間隔

近似的にワーキングセット法を実現する方法
➔
実行時にワーキングセットを知ることは困難であるため