「ページング方式(ページイン/ページアウト)」をシミュレーターで理解しよう!
目次
「ページング方式(ページイン/ページアウト)」をシミュレーターで体感しよう!
前回記事に続いて、メモリ管理について解説します!今回は「ページング方式(ページイン/ページアウト)」についてです!
おさらい:メモリはページという区画ごとに管理される
コンピューターは↓のようにページという区画で管理します。区画は4KBなどある程度の大きさを持っています。
このように区画単位で管理するほうが、1バイト1バイト管理するよりも楽なんですね。この区画をページと呼びます。
メモリが足りない場合は、、、ストレージ上に保存!
↑のようにメモリは区画で管理されます。
もし、この区画が足りなくなったらどうなるでしょうか?必要なデータ保存領域がなくて、コンピューターが動けなくなってしまいますよね。
そうならないためにも、コンピューターは↓のように「メモリが足りなくなったら、ページファイルと呼ばれるストレージ上のファイルに代替保存」を行います。
ストレージのほうが、圧倒的に保存できる容量が広いので、これが使えれば溢れることはないんですね!
しかし、ストレージは遅いという問題があります。コチラのシミュレーターでも示している通り、CPUやメモリと比べて動画がめちゃくちゃ遅いんです!
そのため、「できる限りストレージにあるページファイルにアクセスしないよう、メモリを有効活用する」ことが重要なのです!
メモリ管理は通常LRUで行われる
メモリを有効活用するために、↓LRUというアルゴリズムを使うのが通常です。
LRU = Least Recently Used
メモリのページ(区画)の中で、もっとも最近使われていないページ区画を選択して、ストレージに追いやる
「最近使われていないページ区画」とは、「一番使った時間が古いページ区画」です。もし、ページ区画が足りなくなったら、各ページで使った時間を記録していて、一番古いページ区画を見つけて追いやるんです!
実際には、「ページファイルに退避してあるデータにアクセスした時=ページ区画が足りなくなった時=一番古いデータを追い出す時」です。ページファイルにあるデータが必要になったときに、メモリとストレージで交換が走るんですね。
このメモリとページファイルのデータの交換をページングといいます!また、↓のように各方向のデータのやり取りをページイン,ページアウトと呼びます。
ページング = メモリとページファイルのデータ交換が起こること
ページアウト = メモリからページファイルへの追い出し(out)
ページイン = ページファイルからメモリへの読み込み(in)
実際にこの動きをシミュレーターで確認してみましょう!
「ページング方式(ページイン/ページアウト)」をシミュレーターで確認してみよう!
それではシミュレーターで実際のページングの動きを確認してみましょう!
少しややこしいので前提から説明します!
前提1:各データは使う頻度に差があり。その頻度の差を「数字」で示してます
実際のコンピューターでもそうですが、メモリにあるデータが全て平等にアクセスされることは稀です。大概は、1割のデータに9割のアクセスが集中するようなことが多いです。
このため、今回のシミュレーターは「書いてある数字に比例して呼ばれる頻度が高い」ようにしています。今回の場合、↓のように1~50の数字が書かれていますが、「1のデータは、50のデータの1/50の確率でしか呼ばれない」という設定です。「数字が高いほど頻繁にアクセスされる=追い出されにくい」状態になっています。
前提2:直近でアクセスされたデータほど赤く表示。古いデータほど白く表示
シミュレーターでも↑で示したLRU方式で、どのデータを追い出すか決めます。これがわかりやすいように、「直近でアクセスされたデータほど赤く」「触られていないデータほど白く」表示するようにしてます。
↓の絵だと、「15」が一番白っぽく、追い出される候補になることを示しています。
「ページング方式(ページイン/ページアウト)」シミュレーター
- 実行ボタンを押すとページングシミュレーターが開始します
- 各メモリ/ページファイルのデータにランダムアクセスをしていきます。アクセスされたメモリは赤くなります
- ページファイル内のデータにアクセスされると、ページイン/ページアウト(交換)が起きます
- どのようなデータが追い出され、どのような動きをするのか観察してみましょう!
「ページング方式(ページイン/ページアウト)」シミュレーターの要点解説
アクセス頻度が低いデータほど、ページファイルに追いやられる
シミュレーターを観察していると「高い数字のデータは頻繁にアクセスされるのでメモリに残りやすい」「低い数字のデータはなかなかアクセスがないのでページファイルに追い出されやすい」ことがわかると思います。
最終的には↓のように、低い数字のデータが多くページファイルに残る状況になります。ただ、頻度は低いだけで、低い数字もメモリには戻されることもあるというのがキーポイントです!
メモリとページファイルとのデータ交換(ページング)はかなりの時間がかかる!
今回のシミュレーターで、メモリとページファイルとのデータ交換(ページング)が起こるとかなり時間がとられているのがわかると思います。
しかし、本当はこの100倍ぐらい時間かかるんですね!コチラのシミュレーターで示しているとおり、それぐらいストレージアクセスは遅いんです!
だからこそ、「余計なページングをなくす」ことが非常に重要なんです!
- メモリが足りなくなった場合、ページファイルというストレージ領域に保管される
- メモリは「LRU=もっとも使われていないデータ選択」方式で管理して、どれをページファイルに追いやるか決めている
- メモリとページファイルとのデータ交換をページングという。これはメモリアクセスと比べると、非常に長い時間がかかる
⇒「主記憶管理」カテゴリ記事一覧
その他関連カテゴリ