仮想記憶管理〜基本情報技術者合格のための学習法〜

Ruby基本情報

仮想記憶管理

仮想記憶は、補助記憶や主記憶を利用して実際の主記憶装置よりもはるかに大きな

仮想記憶(仮想空間)
補助記憶装置を利用した仮想記憶領域です。このアドレスを「仮想アドレス(論理アドレス)」と呼びます。

を扱えるようにする仕組みです。

ページング方式

CPUはプログラムを実行するときにはプログラムを主記憶にロードしなければ
プログラムを認識することができません。
なので補助記憶(ハードディスク)からプログラムを主記憶にロードしてからプログラムを実行して
いました
そうすると主記憶装置の容量より大きいプログラムは、主記憶にロードすることができなくなってしまいます。

そこで仮想記憶管理では実際の子記憶の容量より大きな仮想の記憶空間を創り出し、
主記憶の容量に制限されることなくプログラムを実行することが可能です。
仮想記憶管理はOS が提供する機能でアプリケーションは子記憶の容量制限を意識
することなく使用することができます。
仮想記憶管理では仮想記憶に対して比較する意味で
主記憶を

実記憶
実記憶(実空間):実際の主記憶領域。このアドレスを「実アドレス(物理アドレス)」と呼びます。

と呼ぶことがあります

仮想記憶に分割して配置されたプログラムは必要になった時点で実記憶に割り当てられる「動的再配置」が行われます。この際、仮想アドレスから実アドレスへの変換処理は、メモリ変換ユニット(MMU:Memory Management Unit)というハードウェアが担当します。この仕組みを動的アドレス変換機構(DAT:Dynamic Address TRanslator)と呼びます。

仮想記憶管理を実現する方法として
ページング方式と
セグメント方式の2種類があります。

ページング方式

主記憶とハードディスクをページという単位で区切って使用します。
仮想記憶領域では、マッピングテーブル(ページテーブル)を使用して主記憶のページとハードディスクのページの対応付けを行います。
目的のページが実記憶上にないと判明したら、ハードディスクから実記憶へとそのページが呼び込まれます。
フラグは、データが主記憶上にあれば1、ハードディスクにある場合は0となります。

ページングとスワッピングの違い

広域のスワッピングは、ハードディスクと主記憶装置とでデータを出し入れ全般を指し示すので、両者に違いはありません。
しかし、基本情報技術者試験内では狭義のスワッピングを採用しており、「プロセス単位で領域の出し入れを行うことがスワッピング」としてページングと区別しています。

スワッピング

プロセス単位で領域の出し入れをおこないます

ページング

 

ページ単位で領域の出し入れをおこないます。

ページフォールト

実記憶上に必要なページが存在しない時、発生する割り込みです。

ページイン

ハードディスクのページを実記憶にページを読み込みます。

ページインをしようとしたら主記憶がいっぱいの場合は主記憶に空き領域を作る必要があります。
実記憶のいずれかのページをハードディスクに移して空き領域を作ることをページアウトと呼びます。

ページイン

ページアウト

実記憶のいずれかのページをハードディスクに追い出します。

実記憶の容量が少ないとページの置き換えする頻度が高くなり、システムの実行効率(スループット)が極端に低下することがあります。この現象をスラッシングと呼びます。

ページアウト

ページ置き換えアルゴリズム

ページアウトが発生する際に主記憶のどのページをハードディスクに戻すかを決める方法をページ置き換えアルゴリズムと呼びます。

ページ置き換えアルゴリズムにはいくつかの種類があります。

FIFO方式(First In First Out)

最初に入ったページを一番先にページアウトします。

LIFO方式(Last In First Out)

最後に入ったページを一番先にページアウトします。

LAU方式(Last Recently Used)

最も長い間使用されなかったページをページアウトします。

LFU方式(Last Frequently Used)

最も参照回数の少ないページをページアウトします。

セグメント方式

ページング方式とほぼ同様ですが、単純に一定の大きさに分けるのではなく、処理やデータに都合のよい区切りで分割するのが、「セグメント方式」です。

内容にかかわらず固定サイズで分割するのが「ページング方式」です。

処理形態は同様です。
但し、ページイン/ページアウトのことを「ロールイン/ロールアウト」と言います。

コメント

タイトルとURLをコピーしました