レッスン
理論 — ページ置換:FIFO・LRU・最適置換
メモリを等しい大きさのフレームに分け、プログラムのデータも同じ大きさのページに分けます。どのページも、どのフレームにでも格納できます。プログラムが参照するページを順に並べたものが参照列です。メモリにないページを参照すると、ページフォールトが起きて、そのページを読み込みます。空きフレームがなければ、置換方式に従って取り除くページを選びます。ある参照列で、FフレームよりF + 1フレームのほうがフォールト数が多くなる現象を、ベラディの異常といいます。
各記号の意味
F- フレーム数
n- 循環参照に含まれるページ数(例題)
r- 循環参照の繰り返し回数
- 前提
- 要求時ページングを仮定します。ページは要求されたときだけ読み込み、最初のメモリは空です。そのため、各ページの初回参照は、どの方式でもフォールトになります。この教材のOPTでは、今後使わないページが複数ある場合、ページ番号が最も小さいものを取り除きます。各参照の対象はひとつのページです。読み出しと書き込みは区別せず、ページを取り除くためのコストも考えません。LRUを厳密に実現するには、すべてのメモリアクセスの時点を記録する必要があります。記録の負担が大きいため、実際のカーネルでは各ページの参照ビットなどを使って近似します。代表的な方法がクロックアルゴリズムです。
全プロセスの詳細解説
-
LRUがすべての参照でフォールトする場合 5 ステップ
循環参照、OPTを押して、7回のフォールトがどのステップで起きるか確かめてください。次に、100ページを占める配列を1,000回繰り返し走査して合計を求めるプログラムを考えます。フレームは99個です。LRUとOPTでは、それぞれ何回フォールトするでしょう。フレームを100個にすると、何回になるでしょうか。
-
画面の例では、最初の5回の参照でフォールトが起きます。4回で空のフレームが埋まり、5回目でページ置換が必要になります。その後のフォールトはステップ9と13。4回の参照ごとに起きるので、合計は5 + 2 = 7回です。
-
n個のページを循環参照し、フレームがn − 1個あるとき、メモリにないページは常にひとつです。フォールトが起きた時点で、次の参照が最も遠いのは直前に参照したページ。再び参照されるのはn − 1回後です。ただし、最後の周回では、もう参照されないページをOPTが選ぶこともあります。このページを取り除いても、次のn − 2回で参照するページはすべてメモリに残っています。したがって、次のフォールトはn − 1回後に起きます。
-
99フレームのLRUでページpのフォールトが起きたとき、メモリにはそれ以外のすべてのページがあります。最後に使ってから最も時間がたったのはp + 1、つまり次に参照するページです。よって100 × 1,000 = 100,000回の参照すべてでフォールトが起きます。画面の例で15回すべてがフォールトしたのと同じです。FIFOも同じページを取り除きます。
-
OPTでは、最初の99回の参照でフレームが埋まります。100回目からは99回の参照ごとにフォールトが起き、参照回数でいうと100、199、298、…回目です。この部分のフォールト数は1 + ⌊(100,000 − 100) / 99⌋ = 1 + 1,009 = 1,010回。合計は99 + 1,010 = 1,109回です。一般式n + ⌊n(r − 1)/(n − 1)⌋に、n = 100、r = 1,000を代入した値になります。
-
フレームを100個にすると、配列全体がメモリに収まります。どの方式でもフォールトは100回。各ページの初回参照でだけ起き、最初の周回が終われば、それ以降は起きません。
解答
LRUは100,000回、OPTは1,109回。フレームをひとつ増やすと、どちらも100回です。フレーム数よりページ数がひとつ多い循環参照は、LRUにとって最悪の条件です。そのひとつを追加するだけで、LRUのフォールト数に1,000倍の差が生まれます。
-
学習の道すじ
データ構造が得意なこと
参考文献 (1)
- The first insight's date and attribution: the anomaly, and its formal treatment for FIFO: L. A. Belady, R. A. Nelson and G. S. Shedler, "An anomaly in space-time characteristics of certain programs running in a paging machine," Communications of the ACM 12(6), 349–353, June 1969.