36
1 オオオオオオオオオオオオ #11 オオオオオ III オオオオオオオオオオオオ #12 オオオオオ オオオオオオオオオ 2006/07/07 オオ オオ

計算機工学 III オペレーティングシステム #12 主記憶管理:ページ置き換え方式 2006/07/07 津邑 公暁

Embed Size (px)

DESCRIPTION

計算機工学 III オペレーティングシステム #12 主記憶管理:ページ置き換え方式 2006/07/07 津邑 公暁. 復習:主記憶アクセスの局所性. 主記憶アクセスの特徴 = 局所性 空間的局所性 あるアドレス・ページにアクセスが発生した場合, 次は その近くの アドレス・ページにアクセスされる 可能性が高い 時間的局所性 あるアドレス・ページにアクセスが発生した場合, 近いうちには同じ アドレス・ページにアクセスされる 可能性が高い. for( i =0; i < n ; i ++){ sum += a[i] ; }. 復習:仮想記憶処理の実装. - PowerPoint PPT Presentation

Citation preview

Page 1: 計算機工学 III オペレーティングシステム #12  主記憶管理:ページ置き換え方式 2006/07/07 津邑 公暁

1

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

計算機工学 IIIオペレーティングシステム

#12 主記憶管理:ページ置き換え方式

2006/07/07

津邑 公暁

Page 2: 計算機工学 III オペレーティングシステム #12  主記憶管理:ページ置き換え方式 2006/07/07 津邑 公暁

2

オペレーティングシステム#11 復習:主記憶アクセスの局所性

■ 主記憶アクセスの特徴 = 局所性

■ 空間的局所性 あるアドレス・ページにアクセスが発生した場合,

次はその近くのアドレス・ページにアクセスされる可能性が高い

■ 時間的局所性 あるアドレス・ページにアクセスが発生した場合,

近いうちには同じアドレス・ページにアクセスされる可能性が高い

for(i=0; i<n; i++){sum += a[i];

}

Page 3: 計算機工学 III オペレーティングシステム #12  主記憶管理:ページ置き換え方式 2006/07/07 津邑 公暁

3

オペレーティングシステム#11 復習:仮想記憶処理の実装

■ 仮想記憶処理のオーバヘッド削減 ページフォルトの発生回数を減らしたい

➔ プリページング- 必要となりそうなページを前もってスワップイン

ページフォルトの発生回数を減らしたい➔ スワップアウト対象ページの効率的選択

- この先,最も参照されなさそうなページをスワップアウト

最近アクセスされたページの近くにあるページ

最近アクセスされていない(Least Recently Used な ) ページ

空間的局所性から

時間的局所性から

Page 4: 計算機工学 III オペレーティングシステム #12  主記憶管理:ページ置き換え方式 2006/07/07 津邑 公暁

4

オペレーティングシステム#11 今日の内容

■ 仮想記憶処理のオーバヘッド削減 ページフォルトの発生回数を減らしたい

➔ プリページング- 必要となりそうなページを前もってスワップイン

ページフォルトの発生回数を減らしたい➔ スワップアウト対象ページの効率的選択

- この先,最も参照されなさそうなページをスワップアウト

最近アクセスされたページの近くにあるページ

最近アクセスされていない(Least Recently Used な ) ページ

ページの置き換え方式についてより詳しく

Page 5: 計算機工学 III オペレーティングシステム #12  主記憶管理:ページ置き換え方式 2006/07/07 津邑 公暁

5

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

12.1静的ページ置き換え方式

Page 6: 計算機工学 III オペレーティングシステム #12  主記憶管理:ページ置き換え方式 2006/07/07 津邑 公暁

6

オペレーティングシステム#11 例

■ これ以降,以下の例を使って説明 ページフレーム数

(物理空間): 3 (0 ~ 2) ページ数

(仮想空間): 8 (00 ~ 07)00

01

02

03

04

05

06

07

0x00000

0x00FFF0x01000

0x01FFF0x02000

0x02FFF0x03000

0x03FFF0x04000

0x04FFF0x05000

0x05FFF0x06000

0x06FFF0x07000

0x07FFF

0

1

2

0x0000

0x0FFF0x1000

0x1FFF0x2000

0x2FFF

物理空間

Page 7: 計算機工学 III オペレーティングシステム #12  主記憶管理:ページ置き換え方式 2006/07/07 津邑 公暁

7

オペレーティングシステム#11 例

■ あるプロセスが,以下の参照順でアクセスした場合

00 → 01 → 02 → 03 → 00 → 01 → 04 → 00 → 01 → 02 → 03 → 04

■ さまざまなアルゴリズムにおけるページフォルト発生回数を見る

Page 8: 計算機工学 III オペレーティングシステム #12  主記憶管理:ページ置き換え方式 2006/07/07 津邑 公暁

8

オペレーティングシステム#11 静的ページ置き換え方式

■ 最適アルゴリズム

■ LRU (Least Recently Used)

■ LFU (Least Frequently Used)

■ FIFO (First In First Out)

Page 9: 計算機工学 III オペレーティングシステム #12  主記憶管理:ページ置き換え方式 2006/07/07 津邑 公暁

9

オペレーティングシステム#11 静的ページ置き換え方式

■ 最適アルゴリズム

■ LRU (Least Recently Used)

■ LFU (Least Frequently Used)

■ FIFO (First In First Out)

Page 10: 計算機工学 III オペレーティングシステム #12  主記憶管理:ページ置き換え方式 2006/07/07 津邑 公暁

10

オペレーティングシステム#11 最適アルゴリズム

■ 参照順 00 → 01 → 02 → 03 →

00 → 01 → 04 → 00 → 01 → 02 → 03 → 04

■ ページの変遷

ページフォルト回数

00 1234567

012

12

00 0001

2

000102

000102

時刻

030103

0000

03

000101

00010304

0104

00

04

0001

000104

020104

0203

04

0301

0001

04

前もって参照列が分かっていると仮定

Page 11: 計算機工学 III オペレーティングシステム #12  主記憶管理:ページ置き換え方式 2006/07/07 津邑 公暁

11

オペレーティングシステム#11 静的ページ置き換え方式

■ 最適アルゴリズム

■ LRU (Least Recently Used)

■ LFU (Least Frequently Used)

■ FIFO (First In First Out)

Page 12: 計算機工学 III オペレーティングシステム #12  主記憶管理:ページ置き換え方式 2006/07/07 津邑 公暁

12

オペレーティングシステム#11 LRU

■ 参照順 00 → 01 → 02 → 03 →

00 → 01 → 04 → 00 → 01 → 02 → 03 → 04

■ ページの変遷

ページフォルト回数

00 1234567891

012

12

00 0001

2

000102

000102

時刻

030102

0300

02

030001

030001

040001

04

01

0400

040001

020001

0203

01

020300

01 04

Page 13: 計算機工学 III オペレーティングシステム #12  主記憶管理:ページ置き換え方式 2006/07/07 津邑 公暁

13

オペレーティングシステム#11 静的ページ置き換え方式

■ 最適アルゴリズム

■ LRU (Least Recently Used)

■ LFU (Least Frequently Used)

■ FIFO (First In First Out)

Page 14: 計算機工学 III オペレーティングシステム #12  主記憶管理:ページ置き換え方式 2006/07/07 津邑 公暁

14

オペレーティングシステム#11 LFU

■ 参照順 00 → 01 → 02 → 03 →

00 → 01 → 04 → 00 → 01 → 02 → 03 → 04

■ ページの変遷

ページフォルト回数

00 12345678

012

12

00 0001

2

000102

000102

時刻

030103

0000

03

000101

00010304

0104

00

04

0001

00010402

0102

00

03 02

0001

0001

04

ランダム選択

Page 15: 計算機工学 III オペレーティングシステム #12  主記憶管理:ページ置き換え方式 2006/07/07 津邑 公暁

15

オペレーティングシステム#11 静的ページ置き換え方式

■ 最適アルゴリズム

■ LRU (Least Recently Used)

■ LFU (Least Frequently Used)

■ FIFO (First In First Out)

Page 16: 計算機工学 III オペレーティングシステム #12  主記憶管理:ページ置き換え方式 2006/07/07 津邑 公暁

16

オペレーティングシステム#11 FIFO

■ 参照順 00 → 01 → 02 → 03 →

00 → 01 → 04 → 00 → 01 → 02 → 03 → 04

■ ページの変遷

ページフォルト回数

00 123456789

012

12

00

2

0001

000102

時刻

0102

03

02

0300

030001

0001

04

01

0400

040001

0201

04

03

04020404

0000

0102

0300

01

0402

03

Page 17: 計算機工学 III オペレーティングシステム #12  主記憶管理:ページ置き換え方式 2006/07/07 津邑 公暁

17

オペレーティングシステム#11 まとめ:静的ページ置き換え方式

■ 最適アルゴリズム 最小ページフォルト回数を確認するために紹介 実現不可能

■ LRU (Least Recently Used) 直近のアクセス時刻が最も過去のものを

スワップアウト

■ LFU (Least Frequently Used) スワップイン以降のアクセス頻度が最も低いものを

スワップアウト

■ FIFO (First In First Out) スワップイン時刻が最も過去のものをスワップアウト

Page 18: 計算機工学 III オペレーティングシステム #12  主記憶管理:ページ置き換え方式 2006/07/07 津邑 公暁

18

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

12.2Belady の例外

Page 19: 計算機工学 III オペレーティングシステム #12  主記憶管理:ページ置き換え方式 2006/07/07 津邑 公暁

19

オペレーティングシステム#11 Belady の例外

■ 置き換えアルゴリズム ページ参照列によっては得手・不得手はある が,全てそれなりに「リクツ」の通ったアルゴリズム なので,だいたいはうまくいきそう ...

ページフレーム数が変化したとき思わぬ性能変化を引き起こすアルゴリズムが ...

しかし

Page 20: 計算機工学 III オペレーティングシステム #12  主記憶管理:ページ置き換え方式 2006/07/07 津邑 公暁

20

オペレーティングシステム#11 FIFO (ページフレーム数: 4 )

■ 参照順 00 → 01 → 02 → 03 →

00 → 01 → 04 → 00 → 01 → 02 → 03 → 04

■ ページの変遷

ページフォルト回数

00 123456789

012

12

00

2

0001

000102

時刻

010203

0203

00

03

0001 01

02

04

02

0400

040001

0001

04

01

0300

3 0302

3 3 3

00000101

03 03 03 02 02

1

0001

02

04 030400

0103 02

Page 21: 計算機工学 III オペレーティングシステム #12  主記憶管理:ページ置き換え方式 2006/07/07 津邑 公暁

21

オペレーティングシステム#11 FIFO における Belady の例外

■ ページフレーム数: 3

■ ページフレーム数: 4ページフォルト

回数

0

時刻

112 2

00 0001

000102

010203

0203

00

03

0102

04 0400

040001

0001 01

03

302

3 3

0001

03 03 02 02

0001

02

04 030400

0103 02

12 2

00 0001

000102

0102

03

02

0300

030001

0001

040001

04

01

0400

04

0102 02

04

03 03

04020404

00

ページフォルト回数

90

ページフレーム数を増やすことでページフォルト回数増加 !

Page 22: 計算機工学 III オペレーティングシステム #12  主記憶管理:ページ置き換え方式 2006/07/07 津邑 公暁

22

オペレーティングシステム#11 LRU (ページフレーム数: 4 )

■ 参照順 00 → 01 → 02 → 03 →

00 → 01 → 04 → 00 → 01 → 02 → 03 → 04

■ ページの変遷

ページフォルト回数

00 12345678

012

12

00

2

0001

000102

時刻

010203

0203

00

03

0001 01

04

00

04

0001

000104

0104

00

03

0001

3 0302

3 3 3

00000101

03 03 03 02 02

0001

02 04 03

040001

03 02

Page 23: 計算機工学 III オペレーティングシステム #12  主記憶管理:ページ置き換え方式 2006/07/07 津邑 公暁

23

オペレーティングシステム#11 LRU の場合

■ ページフレーム数: 3

■ ページフレーム数: 4ページフォルト

回数

8

時刻

0

ページフォルト回数

01

ページフレーム数を増やすことでちゃんとページフォルト回数減少

12 2

00 0001

000102

010203

0203

00

03

0001 01

04 04

00 000104

0100

0301

3 033 3

0001

03 03 02 02

0001

02 04 03

040001

03 02

12 2

00 0001

000102

0102

03

02

0300

030001

0001

04

01

04 0400 00

01

02

01

0203

020300

01 04

Page 24: 計算機工学 III オペレーティングシステム #12  主記憶管理:ページ置き換え方式 2006/07/07 津邑 公暁

24

オペレーティングシステム#11 Belady の例外の原因

■ ページフォルトが増えるということは ... フレーム数 3 のときには発生しなかった

ページフォルトがフレーム数 4 のときに発生している

12 2

00 0001

000102

010203

0203

00

03

0102

04 0400

040001

0001 01

03

302

3 3

0001

03 03 02 02

0001

02

04 030400

0103 02

12 2

00 0001

000102

0102

03

02

0300

030001

0001

040001

04

01

0400

04

0102 02

04

03 03

04020404

00

なぜ ?

Page 25: 計算機工学 III オペレーティングシステム #12  主記憶管理:ページ置き換え方式 2006/07/07 津邑 公暁

25

オペレーティングシステム#11 ページの「あたらしさ」の変化

■ ページを新しい順に並べてみる

12 2

00 0001

000102

010203

0203

00

03

0102

04 0400

040001

0001 01

03

302

3 3

0001

03 03 02 02

0001

02

04 030400

0103 02

12 2

00 0001

000102

0102

03

02

0300

030001

0001

040001

04

01

0400

04

0102 02

04

03 03

04020404

00

000001

000102

010203

020300

030001

000104

000104

0104

000401

020204

03 03

0402

04新

000001

000102

010203

0203

00

03

01 02

040400

040001

0001

01

0302

0001 03

03

0202

00 01 02 04 03 0400 0103 02新

置き換えパターンが変化してしまっている

Page 26: 計算機工学 III オペレーティングシステム #12  主記憶管理:ページ置き換え方式 2006/07/07 津邑 公暁

26

オペレーティングシステム#11 参考: LRU の場合

■ ページを新しい順に並べてみる

12 2

00 0001

000102

010203

0203

00

03

0104

00 0001

000104

0103 03

04

304

3 3

0001

03 03 02 02

0001

02

00 000101

0403 02

000001

000102

010203

020300

030001

000104

010404

0001

040100

020201

03 04

0203

00新

000001

000102

020300

0001

02

01

03 03

040400

040001

0001

01

0300

0103 01

03

0202

00 01 02 04 03 0400 0103 02新

12 2

00 0001

000102

0102

03

02

0300

030001

0001

040001

04

01

0400 00

01

02

01

0203

04

04030204

00

置き換えパターンは変化しない

スタックアルゴリズム

Page 27: 計算機工学 III オペレーティングシステム #12  主記憶管理:ページ置き換え方式 2006/07/07 津邑 公暁

27

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

12.2.1スラッシング

12.3動的ページ置き換え方式

Page 28: 計算機工学 III オペレーティングシステム #12  主記憶管理:ページ置き換え方式 2006/07/07 津邑 公暁

28

オペレーティングシステム#11 実行プロセス数と実効処理能力

同時実行されるプロセス数

CPU

の実効使用率

スラッシング(Thrashing)

少プロセスでは効率低(入力待ちなど)

プロセス増加により100% に漸近

更なるプロセス増加により

スワップ増加

Page 29: 計算機工学 III オペレーティングシステム #12  主記憶管理:ページ置き換え方式 2006/07/07 津邑 公暁

29

オペレーティングシステム#11 スラッシング( Thrashing )

■ 定義 物理ページへの大量の要求により,

CPU がページアウト /インのための処理に終始し,プロセスの動作を妨げている状態

■ 原因 非常に多くのプロセスを並行動作させようとした 非常に大きな記憶領域を要求するプロセスを

動作させようとした

Page 30: 計算機工学 III オペレーティングシステム #12  主記憶管理:ページ置き換え方式 2006/07/07 津邑 公暁

30

オペレーティングシステム#11 スラッシングの軽減法

■ ワーキングセット 過去の単位時間にアクセスされたページの集合 if ( ページフレーム数 < ワーキングセットの大きさ )

➔ 頻繁なスワップイン・スワップアウトが発生➔ スラッシング

■ ワーキングセット法 ワーキングセットの大きさと同じだけの

ページフレームをプロセスに割り当てることでスラッシングを回避

ページフレーム数がワーキングセットの大きさと

同じだけあればよい

Page 31: 計算機工学 III オペレーティングシステム #12  主記憶管理:ページ置き換え方式 2006/07/07 津邑 公暁

31

オペレーティングシステム#11 ワーキングセット法の近似

■ ワーキングセットの大きさ= プロセスに割り当てるページ数

ワーキングセットを調べるのはコスト膨大 なんらかの方法で近似

■ ページフォルト発生の平均間隔 大きい場合(頻度小)

➔ プロセスに与えられているページフレームは比較的十分 小さい場合(頻度大)

➔ プロセスには十分なページフレームが与えられていない

この情報を静的置換えアルゴリズムに

加えて使う

Page 32: 計算機工学 III オペレーティングシステム #12  主記憶管理:ページ置き換え方式 2006/07/07 津邑 公暁

32

オペレーティングシステム#11 ページフォルト平均間隔+ LRU

■ ページフォルト平均間隔 + LRU ワーキングセット法の近似と LRU の組み合わせ プロセスに割当てるページフレーム数を動的に変更

➔ プロセスのワーキングセットは実行に伴い変化するため

■ アルゴリズム ページフォルトの平均間隔を計算 平均間隔が(ある値より)小さい(高頻度)場合

➔ プロセスに与えるページフレーム数を増やす(次回ページフォルト時スワップアウトせずスワップイン)

平均間隔が(ある値より)大きい(低頻度)場合➔ プロセスに与えるページフレーム数を減らす

(すぐに LRU に基づき強制的にスワップアウト)

Page 33: 計算機工学 III オペレーティングシステム #12  主記憶管理:ページ置き換え方式 2006/07/07 津邑 公暁

33

オペレーティングシステム#11 まとめ:静的ページ置き換え方式

■ LRU (Least Recently Used) 直近のアクセス時刻が最も過去のものを

スワップアウト

■ LFU (Least Frequently Used) スワップイン以降のアクセス頻度が最も低いものを

スワップアウト

■ FIFO (First In First Out) スワップイン時刻が最も過去のものをスワップアウト

Page 34: 計算機工学 III オペレーティングシステム #12  主記憶管理:ページ置き換え方式 2006/07/07 津邑 公暁

34

オペレーティングシステム#11 まとめ

■ ページ置き換え方式 ページ参照列によっては得手・不得手がある

➔ 特定の参照列における性能だけを見て,一概にどれがよいとは言えない

■ Belady の例外 ページフレーム数をふやしたとき

ページフォルトが増加してしまう現象 原因:

ページフレーム数により置き換えパターンが変化してしまうアルゴリズム

➔ 例) FIFO

Page 35: 計算機工学 III オペレーティングシステム #12  主記憶管理:ページ置き換え方式 2006/07/07 津邑 公暁

35

オペレーティングシステム#11 まとめ

■ スラッシング スワップ処理が多発し, CPU の本来の仕事である

プロセス処理が妨げられる状態➔ CPU の実行利 用率が 激減

■ ワーキングセット法 スラッシングの緩和 過去の単位時間においてアクセスされたページ群

(ワーキングセット)のページ数と同じだけのページフレームをプロセスに割り当てる

Page 36: 計算機工学 III オペレーティングシステム #12  主記憶管理:ページ置き換え方式 2006/07/07 津邑 公暁

36

オペレーティングシステム#11 まとめ

■ ページフォルト平均間隔 近似的にワーキングセット法を実現する方法

➔ 実行時にワーキングセットを知ることは困難であるため