「メモリの容量が足りないとどうなる?」をシミュレーターで解説します!
前回記事で、ページングとは何かを説明しました。メモリが足りなくなるとどうなっていくかをシミュレーターを用いて解説していきます!
おさらい:メモリが足りない場合は、、、ストレージ上に保存!
メモリは↓のような区画で管理されます。
もし、この区画が足りなくなったらどうなるでしょうか?必要なデータ保存領域がなくて、コンピューターが動けなくなってしまいますよね。
そうならないためにも、コンピューターは↓のように「メモリが足りなくなったら、ページファイルと呼ばれるストレージ上のファイルに代替保存」を行います。
ストレージのほうが、圧倒的に保存できる容量が広いので、これが使えれば溢れることはないんですね!
しかし、ストレージは遅いという問題があります。コチラのシミュレーターでも示している通り、CPUやメモリと比べて動画がめちゃくちゃ遅いんです!
そのため、「できる限りストレージにあるページファイルにアクセスしないよう、メモリを有効活用する」ことが重要なのです!
メモリ管理は通常LRUで行われる
メモリを有効活用するために、↓LRUというアルゴリズムを使うのが通常です。
LRU = Least Recently Used
メモリのページ(区画)の中で、もっとも最近使われていないページ区画を選択して、ストレージに追いやる
「最近使われていないページ区画」とは、「一番使った時間が古いページ区画」です。もし、ページ区画が足りなくなったら、各ページで使った時間を記録していて、一番古いページ区画を見つけて追いやるんです!
「メモリ容量とメモリ使用量の関係」をシミュレーターで確認してみよう!
それでは、シミュレーターを用いてメモリ使用量が足りなくなっていくと、コンピューターがどう遅くなっていくかを確認してみましょう!
少しややこしいので前提から説明します!
前提1:各データは使う頻度に差があり。その頻度の差を「数字」で示してます
実際のコンピューターでもそうですが、メモリにあるデータが全て平等にアクセスされることは稀です。大概は、1割のデータに9割のアクセスが集中するようなことが多いです。
このため、今回のシミュレーターは「書いてある数字に比例して呼ばれる頻度が高い」ようにしています。今回の場合、↓のように1~50の数字が書かれていますが、「1のデータは、50のデータの1/50の確率でしか呼ばれない」という設定です。「数字が高いほど頻繁にアクセスされる=追い出されにくい」状態になっています。
前提2:直近でアクセスされたデータほど赤く表示。古いデータほど白く表示
シミュレーターでも↑で示したLRU方式で、どのデータを追い出すか決めます。これがわかりやすいように、「直近でアクセスされたデータほど赤く」「触られていないデータほど白く」表示するようにしてます。
↓の絵だと、「15」が一番白っぽく、追い出される候補になることを示しています。
前提3:メモリ容量は40区画固定で、メモリ使用量をシミュレーターで変更できます
今回は↑の絵のようにメモリに40区画のデータがおける状況でシミュレートします。この状況で、メモリ使用量が40より少ない場合、それ以上となった場合でどうなるか確認してみましょう!
「ページング方式(ページイン/ページアウト)」シミュレーター
- ↓でメモリ使用量を指定し、実行ボタンを押すとページングシミュレーターが開始します
- 各メモリ/ページファイルのデータにランダムアクセスをしていきます。アクセスされたメモリは赤くなります
- ページファイル内のデータにアクセスされると、ページイン/ページアウト(交換)が起きます
- ↓のメモリ使用量を変えてみて、使用量がメモリ容量の40より少ない場合や多い場合にどのような動きになるか確認してみましょう!
シミュレーターの要点解説
「メモリ容量>メモリ使用量」の場合
この場合は単純です。すべてメモリの中で納まるので、高速に処理が行えます!逆にいうと、「メモリ容量がどれだけ大きくても、使用量を超えていなければ速度は同じ」なんです!
無暗に使用する以上にメモリ容量を大きくしても意味がないのです。
「メモリ容量<メモリ使用量(少し)」の場合
この場合は↓のようになります。少しメモリ使用量がメモリ容量を超えても、そこまで遅くはなりません。LRUのアルゴリズムにより、使用頻度が少ないデータ(↓の絵だと1,2,3)が追い出されるため、ページファイルにアクセスする頻度はものすごく低いです。
「メモリ容量<<メモリ使用量(大量)」の場合
メモリ使用量を増やしていくと、↓のようになり、2~3回に一回はページファイルにアクセスしているような状況になります。メモリに入りきらないので、アクセス頻度の高い大きな数もページファイルに押し込まれてしまうんです。メモリアクセスより、ページファイルアクセスのほうが圧倒的に遅いため、ほぼページファイル(ストレージ)アクセスしてる時間が大半になってしまうんです><
このような、ページング(メモリとページファイルのデータ交換)が多発して状態をスラッシングといいます。
- メモリが足りなくなった場合、ページファイルというストレージ領域に保管される
- 「メモリ使用量<メモリ容量」の場合は、高速に処理ができる。逆に言うと、どれだけ容量が多くても速度は変わらない
- 「メモリ使用量>メモリ容量」になると、少しずつページファイルへのアクセスが多くなり、最終的にはページファイルのアクセス時間が大半になってしまう
⇒「主記憶管理」カテゴリ記事一覧
その他関連カテゴリ