会津大学 - operating system 2016...
TRANSCRIPT
オペレーティングシステム
114.
4ページ置
き換
えアル
ゴリズム
4.5ペ
ージ置
き換
えアル
ゴリズムの
モデル
化
4.4
Page
Rep
lace
men
t Alg
orith
ms
ページフォル
トをするとページ選
択を行
う必
要が
ある
取り除くページの選択
取込むページのスペース確保
変
更され
たページの
保存
ディスクへ保存
変更がなければ(例えばプログラムコード)書き戻さないで良い
修正(modified,dirty)ビットによる判断
利
用頻
度が
高いページを追
い出
すと
おそらくすぐにページが
呼び戻
され
ることになる
それはオーバーヘッドになる
ページ置
き換
えアル
ゴリズムの
応用
キャッシュメモリ
ウェブサーバー
Operating System
201
62
前提
一
度でも書
き込
みが
あると修
正(m
odifi
ed,d
irty
)ビットを1
にする
リセットされない
参
照され
ると参
照ビットを1にする
定
期的
に、又
はページフォル
ト時
にOSへ
の割
込み
が起
こり、参
照ビットは0に戻される
Operating System
201
63
4.4.
1 O
ptim
al p
age
Rep
lace
men
t Alg
orith
m(最
適ページ置
き換
えアル
ゴリズム
)
最
も遠
い将
来に参
照され
るページを追
い出
す
「遠い」は実行される命令個数
最適しかし実装不可能
擬
似的
な方
法…
一度実行してプロセスのページ参照の履歴を記録
これ
は非
実用
的であるが
…他のアルゴリズムと最適解との比較の際に利用出来る
Operating System
201
64
4.4.
2 N
ot R
ecen
tly U
sed
Page
R
epla
cem
ent A
lgor
ithm
(NR
U)
各
ページは
参照
ビット
R、修
正ビット
Mを装
備
ページが参照(R)ま
たは
修正(M
)され
るとセットする
Rは
クロック割
込み
ごとにリセットする→最
近の
状況
を記
録
R、
Mビットに応
じてクラス化
:OSが
R、Mを初
期設
定
クラス0:参照も修正もされない
クラス1:参照なし、修正あり
クラス2:参照あり、修正なし
クラス3:参照、修正あり
最
下位
のクラス(クラス0か
ら)か
らランダムにページ
を削
除
頻繁
に使
用され
るページより、最
近参
照され
ず、修
正され
ないページ
を追
い出
す
Operating System
201
65
4.4.
3 Fi
rst-I
n Fi
rst-O
ut A
lgor
ithm
(先入
れ先
出しページ置
き換
えアル
ゴリズム
)
Operating System
201
66
ページが
ロードされ
た順
に並
んでいるリスト(キュー)を用
意し、
ページフォル
トの
際は
キューの
先頭
(一
番古
い)か
ら追
い出
す。
=最
初に置
き換
え対
象となる
数字
は来
た時
刻
最後尾から追加
4.4.
4 Se
cond
Cha
nce
Page
Rep
lace
men
t Alg
orith
m(セ
カンドチャンス置
き換
えアル
ゴリズム
)
Operating System
201
67
頻繁
に使
用され
るページを追
い出
さないように
FIFO
を修
正。古
いペー
ジのビット
Rを調
べR
=1ならクリアし、その
ページをページリストの
最後
尾に連
結、メモリ内
にロードされ
た時
刻を現
在時
刻に更
新する。その
後検
索を続
行。
R=0
なら
リプレース
R=0
, M=1
(ダー
ディ
)ならディスク
書き出
しR
=1なら
R=0
にして最後尾に連結
このアルゴリズムは前回のクロックで参照されなかったページを探し追い出す。もし1周
すべてを探して全て
R=1
の場合、
AはR
=0なのでリプレースされる。
4.4.
5 Th
e C
lock
Pag
e R
epla
cem
ent A
lgor
ithm
(クロックページ置
き換
えアル
ゴリズム
)
Operating System
201
68
セカンドチャンス置
き換
えアル
ゴリズムは
、絶
えずリスト上
でページを移
動させ
るの
で、
非効率である。
クロック置き換えでは環状リストを用い、ページフォルト発生時に最も古いページを調べ
る→
セカンドチャンスと考え方は同じだが、リストの移動がない
R=0
、M
=0なら
単に置き換え
R=0
、M
=1(ダ
ーディ
)ならディスク
書出
し、置
き換
え
R=1
なら
R=0
にして針を進める
4.4.
6 Le
ast R
ecen
tly U
sed(
LRU
)ページ置
き換
えアル
ゴリズム
最近
使用
され
ないページは
今後
も使
用され
ないと予
想
最
も長
い間
使用
され
なか
ったページを追
い出
す
全
ページの
リストを管
理する必
要が
ある(次
ページ)
先頭は最近使用したページ、末尾は最後に使用
考
え方
としては
一番
簡単
だが
。。。
メモリ参照の度にリスト更新が必要
Operating System
201
69
途中
から抜
き取
り出
来るキューによる
LRU
Operating System
201
610
ページが
ロードされ
た順
に並
んでいるリスト(キュー)を用
意して、
アクセスが来た場合:
キューにない:キューの
先頭
(一
番古
い)の
ページを追
い出
す。
キューにある:キューか
ら抜
き取
り、最
後尾
(一
番新
しい)に付
ける
AB
CD
BC
DE
BD
EC
古い
新しい
A,B,C,Dの順にアクセス
Eをアクセス、A追
い出
し
Cをアクセス、最
後尾
に
追い出し
新規
LRUページ置
き換
えアル
ゴリズム
特殊なハードを用いてLRUを実現
1命令実行毎に+1されるカウンタ(時計と思うと良い)
メモリ参照時にカウンタの値をページテーブルエントリに保存
ページフォルト時に各ページエントリのカウンタ値を調べる
最も小さいカウンタ値(最も古い)のページを選択し、リプレース
Operating System
201
611
C:5
D:6
①A,B,C,Dの順にアクセス
②Eをアクセス、
A追い出
し、
その
場所
にEを追
加
③Cをアクセス、時
刻更
新
(ページの
後の
数字
が時
刻)
A:2
B:4
E:7
C:5
D:6
E:7
B:4
C:9
D:6
E:7
B:4
①②
③
A:2
LRU
ページ置
き換
えアル
ゴリズム
Operating System
201
612
nxn
ビット行
列:
1.kペ
ージ参
照でk行
をすべ
て1(青
)、k列
をすべ
て0(茶
)2.
各行
の1の
数を調
べ、最
も小
さい値
の行
が最
も過
去に参
照され
たページとなる 1 0 2 3
リプレース
例:ページ参照列
0123210323
--と来て次に4が来た時にどのページを置換えるか
01
23
2
10
32
3
前頁
とは
違うハ
ードウェアで実
現
4.4.
7 LR
Uの
ソフトウェアによるシミュレーション
Operating System
201
613
NFU
アルゴリズムを修正すると
LRUをソフトウェアでシミュレート出来る
→ エ
ージング
・参照ビットはクロックティック(例
20m
sec)
毎にリセットされ、参照で1がセットされる
・参照ビット
Rの加算の前にカウンタを右1
bitシ
フト
・ビット
Rをカウンタの最左端に加算
最近参照されないページはカウンタの上位にゼロが並び値は小さい(ページ3リプレース)
0,2,4,5ペー
ジが
参照
され
た0,1,4ページ
が参照された
0,1,3,5ペー
ジが
参照
され
た0,4ページが
参照された
1,2ページが
参照された
0001
0000
教科
書間
違い
リプレース
4.4.
8 ワーキングセットページ置
き換
えアル
ゴリズム
Operating System
201
614
プロセスが使用中のページセットを
”ワーキングセット
”と呼ぶ。ワーキングセットのページ
を常にメモリに維持できれば、参
照の
局所
性(時
間、場
所)からページフォルトを削減出
来る。
逆にワーキングセットをメモリに持ちきれないと頻繁にページフォルトが発生する(スラッ
シング)
「ワーキングセットモデル
」はプロセスのワーキングセットを記録し、実行前のプリページ
ング(ページフォルトになる前に予めページを持って来る)、実行中のページ置き換えに
利用する方式である。
時
刻tに
おいて、最近k回
の参照で使用された全ページのセットw(k,t)が存在する。wのk
に対する漸近的挙動によりワーキングセットの内容はkに対して穏やかに変化するの
で、プロセスの再開時に参照するページを推定できる。
つまり、ページフォル
トが
発生
すると、その
プロセスの
ワーキングセットに属
さないペー
ジを追
い出
す!
w(k
,t)は
単調
非減
少関
数
ページ数は有限なので
kが増加しても
w(k
,t)は
有限
k
kの
決定
Operating System
201
615
このアルゴリズムを適用するには
kの値を前もって決定し
なければならない
⇒近
似によるkの
決定
:
ワーキングセットの
定義
変更
•「最
近、ある時
間内
に参
照され
たページの
セット」
•回数
(k) ⇒
実行時間(プロセス毎の)
カレント仮想時間:
•プロセスが
開始
後に実
際に使
用したCPU時
間最
終的
なワーキングセットの
定義
。。。
•「最近のτ仮
想時間に参照されたページのセット」
ワーキングセットページ置
き換
えアル
ゴリズム
Operating System
201
616
ワーキングセットにないページを発見し、追い出す。
ページフォルト時にページテーブルを探査し,追い出すページを決定する.
例(1)R
=0:最
近参
照され
ない
k1=
2204
-162
0>
τなら追い出し候補
k1 =
220
4-16
20 <
τ な
ら候補外
(2)R
=0:最
近参
照され
ない
k2 =
220
4-12
13 >
τ な
ら追い出し候補
k2 =
220
4-12
13 <
τ な
ら候
補外
年齢
k1<k
2から
(2)が
追い出される
前提
条件
:・R
,Mビットはハードウェアでセット
・クロック割
り込
みが
周期
的に発
生,R
=0
(1)
(2)
カレント仮
想時
間⇒
最後に使用された時間が「年齢」
となり、年
齢の
大きな物
が追
い出
し候
補となる
このクロックティック中に参照されたページは
R=1
し、
カレント仮想時間を最後に使用された時間にセット
4.4.
9 W
SClo
ckページ置
き換
えアル
ゴリズム
(1)
Operating System
201
617
ワーキングセット・ア
ルゴリズムの
欠点
:毎回
テーブル
全体
の走
査が
必要
環状
リストと時
計を利
用:
•最初、リストは空
•ページロードでリストに追加
•クロックティック毎に全ページのRを0に
セット
•ページフォル
ト発
生時
に矢印のページを
まず調
べる
●R=1の場合、クロックティック間に参照があっ
たの
で、この
ページは
理想
的な追
い出
し候
補には
ならない
(a)(b
)⇒
カレント仮
想時
間を書
き込
み、R=
0に
●R=
0の
場合
(c)
○22
04-1
213
>τなら候補
M=0
なら
(d)へ
M=1
ならページをディスクに書
き戻
す予定
をし
て次へ
○22
04-1
213
<τなら保留
(d)新
たなページをロード
2204
ワーキングセットページ置
き換
えアル
ゴリズム
(2)
Operating System
201
618
一周
後の
結果
(2つの
場合
がある)と処
置
少なくともひとつの書き戻しが予定された
書き戻し候補を書き出しクリーンにする
書
き戻
しは
予定
され
ない、つまり全
ページが
ワーキン
グセットに含
まれ
る。
任意のクリーンページを要求
ページ置
き換
えアル
ゴリズムの
まとめ
4.4.
10 R
evie
w o
f Pag
e R
epla
cem
ent
Alg
orith
ms
Operating System
201
619
P13
P17
4.5 ページ置
き換
えアル
ゴリズムの
モデル
化4.
5.1
Bela
dyの
異常
振る舞
い
Operating System
201
620
FIFO
では
ページフレームの
増加
でもページフォル
トは
減少
しない場
合が
ある
ページ参
照系
列:
01
23
01
40
12
34の
例
3ページフレーム
4ページフレーム
4.5.
2 スタックアル
ゴリズム
概
念的
には
プロセスの
メモリアクセスは
仮想
ページ番
号の
リスト
((メモリ)参照列)で特徴付け出来る。
ページングシステムは
以下
の3項
目で特
徴付
け出
来る
実
行中
プロセスの
メモリ参
照列
ページ置き換えアルゴリズム
メモリ内
の利
用可
能なページ数
:m
配列
Mは全仮想ページ数
n個の
エントリを持
つ
上位
m個が実ページフレームに存在するページ
下
位n-
m個
は1回
参照
され
たが
、ページアウトされ
、現
在メモリにないページ
手順 参
照列
を順
に見
て行
く
参照
したページ番
号を最
上位
に移
動(なけれ
ば最
上位
に挿
入)
あとは適宜下にシフト
これ
は正
確な
LRUアル
ゴリズムを表
す(「途
中か
ら抜
き取
り出
来る
キューによる
LRU」と同じ)
M[n
]
配列M[n]
mページフレーム数
n-m
一回
参照後
ページアウト
時系
列
メモリ状
態を記
録する内
部配
列M
Operating System
201
622
LRUなどでの
特徴
的性
質:
M(m
,r)⊆
M(m
+1,r)
ページフレーム数
mの
メモリで
r回の参照後に
Mの
上位
部分
に含
まれ
るページ集
合は
、また、ページフ
レーム
m+1
のメモリの
それ
に必
ず含
まれ
る→
この
性質
を持
つアル
ゴリズムをスタックアル
ゴリズムと言
う(最
適ページ置
き換えや
LRUなど。)
Bela
dyの異常な振る舞いが起きない。
FIFOにはこのような性質がない。
4.5.
3 距
離列
Operating System
201
623
より抽象的な参照列の表現として
参照
列を「距
離」で表
す
距離
とは
:参照されたページのある
場所
とスタックの
最上
位との
距離
前頁
最後
の場
合(参
照は
1)だと一
つ前
の状
態を見
て3と
なる。
Mにない場
合は
∞と
なる。
ページフレー
ム数
kでページ
フォル
トは
ほと
んど起きない
仮想空間分だけペー
ジフレームを増やさな
いとページフォル
トが
減らない
4 3 1 7 5 6 2 0
確率
密度
関数
:参
照距
離dの
エン
トリに関
して
3
4.5.
4 ページフォル
ト率
の予
測
Operating System
201
624
ページフォル
ト率
の予
測参
照列
におけるページフレーム数
mの
ときに生
じるページフォル
トの
回数
を与
える
ベクトルCd:dは
参照
距離
距離
別出
現頻
度
CC
Fn m
kk
m
1
20
3 3 3 1 0
14 11 9 8XXXX
X X X XX
X
ベクトルFm
:mページフレーム数
ページフレーム数
mの
ページフォル
ト回
数
順次減少する
02468101214161820
12
34
56
7∞
Fm