仮想記憶

読み:かそうきおく / 英語表記:virtual memory

磁気ディスクなどの外部記憶装置を補助として使い、主記憶の物理的な容量を超える大きさのメモリ空間を、プログラムから使えるようにする仕組み。

イマシルちゃんの解説

机(主記憶)が小さくて、教科書やノートが全部は広げられないとき、どうするかな?
今使っているものだけを机に出して、使わないものは本棚(ディスク)にしまっておくよね。
必要になったら、本棚から取ってきて、代わりに使わないものをしまう。

仮想記憶は、コンピュータがこれを自動でやってくれる仕組みなんだ。
プログラムからは、まるで大きな机があるように見えるんだよ!

より深い解説

定義

仮想記憶は、プログラムが使うアドレス(仮想アドレス、論理アドレス)と、主記憶の実際のアドレス(実アドレス)を分け、OSとハードウェア(MMU:メモリ管理ユニット)がその対応を管理する仕組みである。主記憶に入りきらない部分は、ディスク上の領域(スワップ領域、ページファイル)に置いておき、必要になったときに主記憶へ読み込む。

ページング方式

現在の多くのOSは、メモリを固定長のページ(4Kバイトなど)に区切って管理するページング方式を使う。

用語内容
ページテーブル仮想アドレスのページと、実アドレスのページの対応表
ページフォールトアクセスしたページが主記憶にないときに起こる割込み。OSがディスクからページを読み込む(ページイン)
ページアウト主記憶の空きを作るため、ページをディスクに書き出す
TLBページテーブルの対応を一時的に保存する高速なキャッシュ

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

主記憶に空きがないとき、どのページを追い出すかを決める方式である。

方式追い出すページ
FIFO最も古く読み込んだページ
LRU(Least Recently Used)最後に参照されてから、最も長い時間が経ったページ
LFU(Least Frequently Used)参照された回数が最も少ないページ

スラッシング

主記憶の容量に対して、同時に実行するプログラムが多すぎたりすると、ページフォールトが頻発し、ページの入れ替えの処理(ディスクへのアクセス)ばかりに時間が使われて、システムの処理能力が極端に低下する。これをスラッシングという。主記憶の増設や、同時に実行するプログラム数(多重度)を減らすことで対処する。

仮想記憶の利点

利点内容
大きなメモリ空間主記憶の容量を超える大きさのプログラムを実行できる
メモリの保護プログラムごとに別の仮想アドレス空間を持つため、ほかのプログラムのメモリを壊さない
効率的な利用実際に使っているページだけを主記憶に置ける

似た仕組みとの区別

仕組み内容
仮想記憶外部記憶装置を使い、主記憶の容量を超えるメモリ空間を使えるようにする
メモリインタリーブ主記憶を複数のバンクに分け、アクセスを並列化する
ディスクキャッシュ主記憶と磁気ディスクの間にバッファを置き、速度差を補う
DMACPUを介さずに、主記憶と入出力装置の間でデータを転送する

実際の試験ではここに出る!

この用語が出てくる記事

↑