アクセスログ機能を化 - I-O DataLAN DISK Access Log Viewerは、本パッケージにより、専用フォルダーに保存された膨大なアクセスログから必要な記録
8-9 仮想記憶fukuda/HijyoukinH25/kitakyushu/...デマンドページング(Demand...
Transcript of 8-9 仮想記憶fukuda/HijyoukinH25/kitakyushu/...デマンドページング(Demand...
![Page 1: 8-9 仮想記憶fukuda/HijyoukinH25/kitakyushu/...デマンドページング(Demand paging,要求ページング) ページングを用いる. プログラム実行時に必要になったら,そのページを2次記億(ディスク)からメモリに](https://reader034.fdocuments.in/reader034/viewer/2022042023/5e7bc63187afca55890776a8/html5/thumbnails/1.jpg)
8-9 仮想記憶 (Virtual Memory)
1
![Page 2: 8-9 仮想記憶fukuda/HijyoukinH25/kitakyushu/...デマンドページング(Demand paging,要求ページング) ページングを用いる. プログラム実行時に必要になったら,そのページを2次記億(ディスク)からメモリに](https://reader034.fdocuments.in/reader034/viewer/2022042023/5e7bc63187afca55890776a8/html5/thumbnails/2.jpg)
仮想記憶とは?
ユーザから見えるメモリをハードウェアとは独立させて,プログラムを実行させる技術
空間の大きさについて
今までの話 プロセス全体はメモリ上になければならなかった.
仮想記憶では 必ずしもメモリ上に全部ある必要なし.
2
![Page 3: 8-9 仮想記憶fukuda/HijyoukinH25/kitakyushu/...デマンドページング(Demand paging,要求ページング) ページングを用いる. プログラム実行時に必要になったら,そのページを2次記億(ディスク)からメモリに](https://reader034.fdocuments.in/reader034/viewer/2022042023/5e7bc63187afca55890776a8/html5/thumbnails/3.jpg)
デマンドページング(Demand paging,要求ページング) ページングを用いる.
プログラム実行時に必要になったら,そのページを2次記億(ディスク)からメモリにもってくる(格納する).
3
3
7
11
15
19
23
0
4
8
12
16
20
1
5
9
13
17
21
2
6
10
14
18
22
二次記憶(ディスク)
スワップアウト
スワップイン
プログラム A
プログラム B
主記憶
図6.2 連続ディスク領域に対するページ記憶のスワッピング
![Page 4: 8-9 仮想記憶fukuda/HijyoukinH25/kitakyushu/...デマンドページング(Demand paging,要求ページング) ページングを用いる. プログラム実行時に必要になったら,そのページを2次記億(ディスク)からメモリに](https://reader034.fdocuments.in/reader034/viewer/2022042023/5e7bc63187afca55890776a8/html5/thumbnails/4.jpg)
ページがメモリにないときの処理 ページ表エントリ内の有効/無効ビット
(Valid/Invali bit)で判断
有効/無効ビット:1ビットで,そのページがメモリにあるかないを示す.
有効/無効ビットの値: メモリにあれば,V(Valid),無ければ,
i(Invalid)と表記する.
実際は,0,1なのだが,どちらが0か,1か,混同して分かりにくいため..
4
A
B
C
D
E
F
G
H
D
A
E
B
F
C
3
7
11
15
19
23
0
4
8
12
16
20
1
5
9
13
17
21
2
6
10
14
18
22
二次記憶(ディスク) 主記憶(メモリ,物理記憶)
図6.3 ページがメモリ上にないときのページ表の値
0
1
2
3
4
5
6
7
0 4 V
1 i
2 6 V
3 i
4 i
5 9 V
6 i
0
1
2
3
4 A
5
6 C
7
8
9 F
10
11
12
13
14 論理記憶
(論理アドレス空間)) ページ表
ページ枠番号 (ページフレーム)
有効/無効ビット
論理ページ番号
論理ページ番号
![Page 5: 8-9 仮想記憶fukuda/HijyoukinH25/kitakyushu/...デマンドページング(Demand paging,要求ページング) ページングを用いる. プログラム実行時に必要になったら,そのページを2次記億(ディスク)からメモリに](https://reader034.fdocuments.in/reader034/viewer/2022042023/5e7bc63187afca55890776a8/html5/thumbnails/5.jpg)
ページフォールト処理
5
i
図6.4 ページフォールト処理の手順
主記憶(メモリ,物理記憶)
①参照
プログラム
オペレーティングシステム
ページ表
②割出し
③ページは 二次記憶に存在
二次記億(ディスク)
④主記億に ないページの読込み ⑤ページ表の
再設定
⑥命令 再開
![Page 6: 8-9 仮想記憶fukuda/HijyoukinH25/kitakyushu/...デマンドページング(Demand paging,要求ページング) ページングを用いる. プログラム実行時に必要になったら,そのページを2次記億(ディスク)からメモリに](https://reader034.fdocuments.in/reader034/viewer/2022042023/5e7bc63187afca55890776a8/html5/thumbnails/6.jpg)
ページ置き換え(Page Replacement)
ページが必要となった.
ページをメモリにロードする必要あり.
メモリに空きページフレーム(page frame,ページ枠)がある場合:そのどれかの空きぺージフレームに入れる.ない場合は,下記.
空きページフレームがない場合,メモリ上のどれかのページを追い出して,空きページフレームを作る.
6
![Page 7: 8-9 仮想記憶fukuda/HijyoukinH25/kitakyushu/...デマンドページング(Demand paging,要求ページング) ページングを用いる. プログラム実行時に必要になったら,そのページを2次記億(ディスク)からメモリに](https://reader034.fdocuments.in/reader034/viewer/2022042023/5e7bc63187afca55890776a8/html5/thumbnails/7.jpg)
ページフォールトの処理
1. 要求されたページの二次記憶(ディスク)内の格納場所を見つける.
2. メモリ内に空きページを見つける. a. 空きページフレームがあれば,それを用いる. b. なければ,ページ置き換え(page replacement)アルゴリズムを用いて,犠牲(victim)とするページ)(犠牲ページ,victim page)フレームを見つける.
c. 犠牲ページを二次記憶に書き出し,その情報を反映するようにページ表の内容を変更する.
3. 要求されたページを(新しい)空きページフレームに読み込み,ページ表の内容を変更する.
4. ユーザプロセスの実行を開始する.
7
![Page 8: 8-9 仮想記憶fukuda/HijyoukinH25/kitakyushu/...デマンドページング(Demand paging,要求ページング) ページングを用いる. プログラム実行時に必要になったら,そのページを2次記億(ディスク)からメモリに](https://reader034.fdocuments.in/reader034/viewer/2022042023/5e7bc63187afca55890776a8/html5/thumbnails/8.jpg)
空きページフレームがない場合の処理
8 図6.6 ページ置き換え
主記憶(メモリ,物理記憶) ページ表
①犠牲ページの スワップアウト
二次記億(ディスク)
有効/無効ビット
F → 0 V → i
F V
ページ枠 (ページフレーム)
F
メモリ ←→ 二次記億:2回のページ転送が必要 1回:犠牲ページ → 二次記憶へ 1回:要求されたページ → メモリへ
犠牲ページ → 二次記憶 の転送
もともと二次記憶にあるページとメモリにあるページが一致していれば,二次記憶に書き出す必要なし. → ページ表のダーティビット(dirty bit)(修正ビット(modified bit),とも言う,)で判断.
③所望ページ のスワップイン
②無効に 変える
④新規ページのためにページ表の再設定
![Page 9: 8-9 仮想記憶fukuda/HijyoukinH25/kitakyushu/...デマンドページング(Demand paging,要求ページング) ページングを用いる. プログラム実行時に必要になったら,そのページを2次記億(ディスク)からメモリに](https://reader034.fdocuments.in/reader034/viewer/2022042023/5e7bc63187afca55890776a8/html5/thumbnails/9.jpg)
ページ表のエントリ内の情報 ページ表エントリとは?
1つのページに関するページ表内の項目 ページ表エントリの情報
有効/無効ビット:そのページがメモリにあるかないかを示す.1ビット
ページフレーム番号:メモリにそのページがある場合,そのページが格納されているページフレーム番号
参照ビット(Reference bit):そのページにアクセスがあるとオンになるビット.ハードウェアが行う.通常,1ビット
修正ビット(Modified bit,汚れビット,更新ビットとも言う):そのページに書き込みアクセスがあると,オンになるビット.ハードウェアが行う.通常,1ビット.
保護ビット:次の3種類のアクセスを区別. リードオンリ,読み書き可能,実行可能 上記の3種類を区別するため,通常,2ビット
9
ページフレーム番号
有効/無効ビット
参照ビット
修正ビット
保護ビット
図 ページ表エントリ
ページ表エントリ
ページ表
![Page 10: 8-9 仮想記憶fukuda/HijyoukinH25/kitakyushu/...デマンドページング(Demand paging,要求ページング) ページングを用いる. プログラム実行時に必要になったら,そのページを2次記億(ディスク)からメモリに](https://reader034.fdocuments.in/reader034/viewer/2022042023/5e7bc63187afca55890776a8/html5/thumbnails/10.jpg)
仮想記憶の概念
ユーザからみえるメモリ
物理メモリ
ユーザからみえるメモリの大きさ > 物理メモリの大きさ
10
ページ0
ページ1
ページ2
ページn
3
7
11
15
19
23
0
4
8
12
16
20
1
5
9
13
17
21
2
6
10
14
18
22
二次記憶(ディスク) 主記憶(メモリ,物理記憶)
図6.7 物理記憶より大きくできる仮想記憶
論理記憶(仮想記憶) (論理アドレス空間))
記憶写像表
独立
![Page 11: 8-9 仮想記憶fukuda/HijyoukinH25/kitakyushu/...デマンドページング(Demand paging,要求ページング) ページングを用いる. プログラム実行時に必要になったら,そのページを2次記億(ディスク)からメモリに](https://reader034.fdocuments.in/reader034/viewer/2022042023/5e7bc63187afca55890776a8/html5/thumbnails/11.jpg)
ページ置き換えアルゴリズム (Page Replacement Algorithm)
犠牲ページをどうやって選ぶか?
アルゴリズム
1)FIFO(First In First Out,先入れ先だし)
2)最適(Optimal)置き換え(OPT)
3)LRU(Least Recently Used)
11
![Page 12: 8-9 仮想記憶fukuda/HijyoukinH25/kitakyushu/...デマンドページング(Demand paging,要求ページング) ページングを用いる. プログラム実行時に必要になったら,そのページを2次記億(ディスク)からメモリに](https://reader034.fdocuments.in/reader034/viewer/2022042023/5e7bc63187afca55890776a8/html5/thumbnails/12.jpg)
FIFO(First In First Out)アルゴリズム
メモリにロードされた順に追い出す.
例:図6.9 ぺージフォールト数=15回
12
7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1
2
3
0
0
1
3
0
1
2
7
1
2
7
0
2
7
0
1
0
2
3
4
3
0
4
2
0
4
2
3
7 7
0
7
0
1
2
0
1
図6.9 FIFOページ置き換え
2
3
1
例:参照列(ページ単位) → 時間
![Page 13: 8-9 仮想記憶fukuda/HijyoukinH25/kitakyushu/...デマンドページング(Demand paging,要求ページング) ページングを用いる. プログラム実行時に必要になったら,そのページを2次記億(ディスク)からメモリに](https://reader034.fdocuments.in/reader034/viewer/2022042023/5e7bc63187afca55890776a8/html5/thumbnails/13.jpg)
Beladyの異常振る舞い(Belady’s anomaly)
直感! ページフレーム数 → 大
↓ ページフォールト数 → 小
事実 ページフレーム数 → 大
↓ ページフォールト数 → 大
になることがある!
13 図6.10 参照列に対するFIFOページ置き換えのページフォールト曲線
7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1
例:参照列(ページ単位) → 時間
ページ枠(フレーム)数
ページフォールト数
![Page 14: 8-9 仮想記憶fukuda/HijyoukinH25/kitakyushu/...デマンドページング(Demand paging,要求ページング) ページングを用いる. プログラム実行時に必要になったら,そのページを2次記億(ディスク)からメモリに](https://reader034.fdocuments.in/reader034/viewer/2022042023/5e7bc63187afca55890776a8/html5/thumbnails/14.jpg)
OPT(最適置き換え)アルゴリズム
将来最も長い間使用されないページを置き換える. ページフォールト率が最小(理論的) 例:図6.11 ぺージフォールト数=9回(最小)
14
7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1
2
0
3
2
0
1
7
0
1
2
0
3
2
4
3
7 7
0
7
0
1
2
0
1
図6.11 最適ページ置き換え
致命的 将来の情報を必要とする!
例:参照列(ページ単位) → 時間
![Page 15: 8-9 仮想記憶fukuda/HijyoukinH25/kitakyushu/...デマンドページング(Demand paging,要求ページング) ページングを用いる. プログラム実行時に必要になったら,そのページを2次記億(ディスク)からメモリに](https://reader034.fdocuments.in/reader034/viewer/2022042023/5e7bc63187afca55890776a8/html5/thumbnails/15.jpg)
LRU(Least Recently Used)アルゴリズム
OPTの近似 OPT:将来最も使用されないページ LRU:最も最近使用されないページ 例:図6.12 ぺージフォールト数=12回
15
7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1
2
0
3
1
3
2
1
0
2
1
0
7
0
3
2
4
0
3
4
0
2
4
3
2
7 7
0
7
0
1
2
0
1
図6.12 最長未使用(LRU)ページ置き換え
例:参照列(ページ単位) → 時間
![Page 16: 8-9 仮想記憶fukuda/HijyoukinH25/kitakyushu/...デマンドページング(Demand paging,要求ページング) ページングを用いる. プログラム実行時に必要になったら,そのページを2次記億(ディスク)からメモリに](https://reader034.fdocuments.in/reader034/viewer/2022042023/5e7bc63187afca55890776a8/html5/thumbnails/16.jpg)
LRUの実現方法
1)カウンタを用いる方法 2)スタックを用いる方法 1)カウンタを用いる方法 ページ参照ごとに時刻(カウンタ)を記入する. ページごとに. 2)スタックを用いる方法 ページ参照ごとに参照されたページをスタックにおく. スタックの上(トップ):最近参照されたページ スタックの底(ボトム):最も古く参照されたページ
16
図6.13 最近ページ参照を記録するためのスタックの使用(準備中)
![Page 17: 8-9 仮想記憶fukuda/HijyoukinH25/kitakyushu/...デマンドページング(Demand paging,要求ページング) ページングを用いる. プログラム実行時に必要になったら,そのページを2次記億(ディスク)からメモリに](https://reader034.fdocuments.in/reader034/viewer/2022042023/5e7bc63187afca55890776a8/html5/thumbnails/17.jpg)
LRUの近似アルゴリズム
LRUの欠点 参照ごとにアクションをとる必要あり. ↓ オーバヘッドが大 ハードウェアのサポートを必要とする.
通常のハードウェア 参照ビット(reference bit)を持っている. 参照ビット:ページ対応にある.
ページが参照されると(通常,ハードウェアによって)当該ビットがオンになる.
付加的参照ビット ハードウェアの参照ビットを用いて,ソフトウェアで実現する.
17
ハードウェア(参照ビット) ソフトウェア
1ビット (例えば)8ビット
1単位時間 8単位時間
![Page 18: 8-9 仮想記憶fukuda/HijyoukinH25/kitakyushu/...デマンドページング(Demand paging,要求ページング) ページングを用いる. プログラム実行時に必要になったら,そのページを2次記億(ディスク)からメモリに](https://reader034.fdocuments.in/reader034/viewer/2022042023/5e7bc63187afca55890776a8/html5/thumbnails/18.jpg)
Second Chance Replacement(二度目の機会ページ置き換え)
ポインタ:今度見るページを指している. ポインタを動かしながら,
ページが参照されていなければ(0),そのページを犠牲ページとして選択する.
参照されていれば(1),クリア(0)して次に進む.
18
図6.14 二度目の機会ページ置き換え(準備中)
![Page 19: 8-9 仮想記憶fukuda/HijyoukinH25/kitakyushu/...デマンドページング(Demand paging,要求ページング) ページングを用いる. プログラム実行時に必要になったら,そのページを2次記億(ディスク)からメモリに](https://reader034.fdocuments.in/reader034/viewer/2022042023/5e7bc63187afca55890776a8/html5/thumbnails/19.jpg)
最小使用頻度ページ置き換え(LFU:Least Frequently Used)
どのページを犠牲ページに選ぶか?
参照回数の最も尐ないページを犠牲ページに選ぶ..
発想
参照回数の多いページは,また参照されるだろう(本当?)
参照回数が,将来の使用頻度を反映しているか?
(例) 参照頻度にむらがあればダメ:最初に参照頻度が偏るプログラム
19
![Page 20: 8-9 仮想記憶fukuda/HijyoukinH25/kitakyushu/...デマンドページング(Demand paging,要求ページング) ページングを用いる. プログラム実行時に必要になったら,そのページを2次記億(ディスク)からメモリに](https://reader034.fdocuments.in/reader034/viewer/2022042023/5e7bc63187afca55890776a8/html5/thumbnails/20.jpg)
最大使用頻度ページ置き換え(MFU:Most Frequently Used)
どのページを犠牲ページに選ぶか?
参照回数が最大であるページを犠牲ページに選ぶ.
発想
参照回数の小さいページは,メモリにロードされたばかりであろうから,これから参照されるに違いない(本当?)
LFU,MFUとも,実際あまり用いられない.
20
![Page 21: 8-9 仮想記憶fukuda/HijyoukinH25/kitakyushu/...デマンドページング(Demand paging,要求ページング) ページングを用いる. プログラム実行時に必要になったら,そのページを2次記億(ディスク)からメモリに](https://reader034.fdocuments.in/reader034/viewer/2022042023/5e7bc63187afca55890776a8/html5/thumbnails/21.jpg)
その他のページ置き換えアルゴリズム
ページクラスを導入する方法
(参照ビット,修正ビット)
クラス0:(0,0) 参照なし&変更なし
クラス1:(0,1) (最近)参照なし&変更あり
クラス0:(1,0) 参照あり&変更なし
クラス0:(1,1) 参照あり&変更あり
犠牲ページ
クラス0から順に選ぶ.
21
![Page 22: 8-9 仮想記憶fukuda/HijyoukinH25/kitakyushu/...デマンドページング(Demand paging,要求ページング) ページングを用いる. プログラム実行時に必要になったら,そのページを2次記億(ディスク)からメモリに](https://reader034.fdocuments.in/reader034/viewer/2022042023/5e7bc63187afca55890776a8/html5/thumbnails/22.jpg)
シングルプログラミング環境の場合 ー1つのプログラムしか走らせない場合ー
基本 プログラムを走らせるとき
まず,全て空きページフレームにしておく. デマンドページングでページをロード
変形(種々あり) 1.必ず常時空きページフレームを確保しておく. 2.ページフォールト発生 3.デマンドページを空きページフレームにロード(DMAを用いる) 4.犠牲ページを選択(CPUが行う) (上記3,4の2つは,並列実行できる) 5.ページがロードされると実行再開(CPU) 6.犠牲ページをディスクに格納(DMAを用いる) (上記5,6の2つは,並列実行できる.)
マルチプログラミング環境では,どのようにしてプログラムにメモリを割り当てるか?
22
![Page 23: 8-9 仮想記憶fukuda/HijyoukinH25/kitakyushu/...デマンドページング(Demand paging,要求ページング) ページングを用いる. プログラム実行時に必要になったら,そのページを2次記億(ディスク)からメモリに](https://reader034.fdocuments.in/reader034/viewer/2022042023/5e7bc63187afca55890776a8/html5/thumbnails/23.jpg)
マルチプログラミング環境の場合 ー複数のプログラムを走らせる場合ー
プロセスへのページフレームの割り当てをどうするか?
大域割当(Global replacement)
ユーザ全体に割当てられてページフレームから選択
選択:ページ置き換えアルゴリズム
局所割当(Local replacement)
プロセス毎にページフレーム(数)を固定
当該プロセスに割当てられているページフレームから選択
23
![Page 24: 8-9 仮想記憶fukuda/HijyoukinH25/kitakyushu/...デマンドページング(Demand paging,要求ページング) ページングを用いる. プログラム実行時に必要になったら,そのページを2次記億(ディスク)からメモリに](https://reader034.fdocuments.in/reader034/viewer/2022042023/5e7bc63187afca55890776a8/html5/thumbnails/24.jpg)
スラッシング
準備中
24
![Page 25: 8-9 仮想記憶fukuda/HijyoukinH25/kitakyushu/...デマンドページング(Demand paging,要求ページング) ページングを用いる. プログラム実行時に必要になったら,そのページを2次記億(ディスク)からメモリに](https://reader034.fdocuments.in/reader034/viewer/2022042023/5e7bc63187afca55890776a8/html5/thumbnails/25.jpg)
以上
25