こんにちは😀
今回は、仮想記憶管理に関して簡単にまとめます。
仮想記憶は、主記憶や補助記憶の存在を隠蔽することで、広大なメモリ空間を自由に扱えるようにできます。
主記憶装置の物理的な制約に影響を受けることなく、仮想的にメモリを設定できます。
仮想記憶とは
まず、実体のあるメモリである実記憶はバイト単位で仕切られた空間にあり、この空間も仕切りも固定になっています。
これに対して、仮想記憶とは、物理的な実体がないので、範囲内の好きな場所に領域を作成できます。
ただし、実際のデータは実記憶上にあります。
仮想記憶は、その実記憶の中の空いている隙間に領域を対応付けするのが特徴です。
さらに、仮想記憶では、補助記憶装置もメモリの一部と見なすので、実記憶の容量よりも大きなサイズの空間を確保できます。
なお、仮想アドレスから実アドレスへの変換処理は、メモリ変換ユニット(MMU:Memory Management Unit)というハードウェアが行います。
次からは、仮想記憶の仕組みの1つであるページング方式をまとめます。
ページング方式
仮想アドレス空間を固定長の領域に区切って管理する方式をページング方式と言います。
この方式では、プログラムを「ページ」という単位に分割して管理します。
そのページを、仮想記憶のアドレス空間をページで分割した領域にセットします。
デマンドページングという実行に必要なページだけを補助記憶から実記憶に読み込ませる方法があります。
仮想記憶と実記憶の対応付けは、ページテーブルという表によって管理されます。
この表によって、仮装ページ番号が実記憶上のページと結びついている場所を特定できます。
対象のページが実記憶にない場合は、補助記憶から実記憶へとページが読み込まれます。
ページイン
補助記憶から実記憶へのページ読み込みをページインと言います。
ページインするときに、実記憶の空き領域がない場合、いずれかのページを補助記憶に移す必要があります。
ページアウト
実記憶から補助記憶へとページを追い出すことをページアウトと言います。
こうすることで、実記憶に空き領域ができます。
スラッシング
実記憶の領域が少ない場合は、ページの置き換えの頻度が高くなりシステムの処理効率が極端に低下することをスラッシングと言います。
ページの置き換えアルゴリズム
ページアウトさせて空き領域を作る場合、何をページアウトするかの判断を決定するための置き換えアルゴリズムがいくつかあります。
FIFO(First In First Out)方式
最初にページインしたページを追い出し対象にします。
LIFO(Last In First Out)方式
最後にページインしたページを追い出し対象にします。
LRU(Least Recently Used)方式
もっとも長い間参照されていないページを追い出し対象にします。
LFU(Least Frequently Used)方式
もっとも参照回数の少ないページを追い出し対象にします。
今回はここまで🤚
では、また次回。
↓WindowsとMacからみてみました。
コメント