第6回 仮想記憶とページング

Download Report

Transcript 第6回 仮想記憶とページング

第6回 仮想記憶とページング
ページング
 ページ取り出し方式
 ページ置き換え方式
 中間テスト(40分)

ページング





仮想アドレス空間、物理アドレス空間ともにページとよば
れる固定区画に分割される
仮想ページ番号 … 仮想アドレス空間内のページに付け
られる番号
物理ページ番号 … 物理アドレス空間内のページにつけ
られる番号
ページ枠 … 物理ページ
仮想アドレス(L) = ページ番号(P)+ページ内変位(O)
−
−
P = L / N
O = L mod N
※ Nはページサイズ
ページング(図解)
物理ページ番号
(ページ枠番号) 0
存在ビット
物理ページ番号
仮想ページ番号
0
1
2
3
A
0
1
1
0
2
4
1
B
2
C
2
1
3
D
3
0
7
4
E
4
0
8
5
1
11
9
6
1
5
10
5
F
6
G
仮想記憶
A
5
7
ページテーブル
G
6
11
C
A
B
C
D
E
F
G
F
12
補助記憶
13
14
主記憶
ページングにおけるアドレス変換

物理アドレス = 物理ページ番号+ページ内変位
ページテーブル
ベースレジスタ
仮想アドレス
b
仮想ページ番号 ページ内変位
p
+
d
b
p
物理アドレス
存在ビット
修正ビット
アクセス保護情報
p'
ページテーブル
参照ビット
p’
d’
ページに対するアクセスと、ページフォルト





セグメンテーションと同様の手順で、仮想アドレスから物理ア
ドレスを変換
ページフォルト... 仮想アドレスから物理アドレスへの変換時
に、主記憶上にページが不在
ページフォルト割込み... ページフォルトが発生すると割り込
みによって主記憶上に空きページ枠を探し、そこに補助記憶
のページを読み込む
ページの置き換え... ページフォルト割込み時に、空きペー
ジ枠が存在しないときに、主記憶上のぺーじ1つを掃き出し
てページ枠を確保する
ページ枠テーブル... ページ枠の番号(物理ページ番号)を
インデックスとして、あいているかどうかを示す存在ビットを
記載したテーブル
ページフォルトの手順
ページフォルト発生
ページを補助記憶から
取り出す
ページフォルト割込みで
割り込みハンドラへ
空きページ枠に読み込む
空きページの検索
あり
空きページは?
ページテーブルの存在
ビットを 0 から1に書き換える
なし
ページ置き換えに
よりページを掃き出す
空きページを確保
ページ枠テーブルの
空きビットをクリアする
割込み処理から復帰
処理の再開
ページの取り出し方式

デマンドページング
−
−
−

ページが参照され、ページフォルトが発生したときに主記憶にページ
を読み込む
ページ転送に無駄がない
ページアクセスのオーバヘッドが大きい
プリページング
−
−
−
−
−
−
ページが参照される前に、予めページを主記憶に読み込んでおく
ページアクセスによるオーバヘッドが小さい
使用されるページ予想が難しい
無駄なページ転送が生じる
実際には、デマンドページングと併用して用いられ、ページフォルトが
発生した場合に、仮想アドレス空間の連続したページを一緒に読み
込む
プログラム実行開始時にまとめて数ページ読み込んでおく
ページの置き換え方式


ページ置き換えアルゴリズム...ページフォルト率を下げること
が目標
LRU(Least Recently Used)
−
−
ページ参照の時間的局所性(locality)
LRU近似アルゴリズム



ワーキングセット法
−
−


クロックアルゴリズム ... FINUFO(first in not used first out)
大域LRU ⇔ 局所LRU
ワーキングセット... 過去一定時間T内に参照されたページ集合
ウィンドウサイズ(T)
PFF法(page fault frequency strategy)
スラッシング... どのプログラムに対しても十分なページ枠が
与えられないほどページ枠が不足することによって、頻繁に
ページ置き換えが起きる現象
ページングに使われる技巧

多段ページング
−
−

仮想アドレス全体空間全体がフルに使用されることはな
いため必要な部分だけページテーブルを持たせる
ページテーブルの共用が可能となり、記憶領域が節約で
き、ページ置換時にエントリの変更がスムーズになる
アドレス変換の高速化
−
−
TLB(translation look-aside buffer) or ATB(address
translation buffer)
最近アドレス変換したページのページテーブルを高速な
バッファに格納しておく