仮想記憶とは
仮想記憶(バーチャルメモリ)とは、コンピュータの実装されている物理メモリ(RAM)の容量を超えて、より大きなメモリ空間をプログラムに提供するOSの技術です。ハードディスクやSSDなどのストレージの一部を一時的なメモリ領域として代用することで、物理メモリの限界を超えた大きなプログラムや、多数のアプリを同時に起動できるようにします。メモリ領域を固定サイズの「ページ」と呼ばれる単位に分割して管理する「ページング」や、必要に応じてデータを退避させる「スワッピング」などの技術が使われます。
具体例
- メモリ容量以上のアプリ起動:物理メモリが8GBしかないパソコンにおいて、合計12GBのメモリを必要とする複数のソフトウェア(画像編集ソフト、ブラウザ、ゲームなど)を同時に起動して作業を行うことができます。OSが使用頻度の低いデータをハードディスクに一時退避させることで、これを実現します。
- ページの移動:現在使っていないタブのブラウザデータをメモリからハードディスクに一時保存し、必要になった瞬間に物理メモリに書き戻して再び使えるようにします。
もう少し詳しく
仮想記憶(Virtual Memory)は、物理的なメモリ(主記憶装置)の容量不足を補うため、ハードディスクドライブ(HDD)やソリッドステートドライブ(SSD)などの補助記憶装置の一部を、あたかもメモリの拡張領域であるかのように利用する高度なシステム制御技術です。この技術により、システムに搭載されている実際の物理メモリ量よりも大きなメモリ空間を必要とする巨大なプログラムや、多数のアプリケーションを同時に実行することが可能になります。
仮想記憶の管理方式として現代のOSで最も一般的に採用されているのが「ページング方式」です。これは、仮想的なメモリ空間と物理メモリ空間を「ページ」と呼ばれる固定長(例えば4KBや8KB)の小さな単位に分割して管理する手法です。実行中のプログラムが現在必要としているページだけを物理メモリ上に配置し、今すぐには使わないページは補助記憶装置上の専用領域(スワップファイルやページファイル)に退避させます(この動作をページアウトと呼びます)。そして、退避させたデータが後で必要になったときには、物理メモリ上の現在使われていないページと入れ替える形で再び読み込みます(これをページインと呼びます)。
このように、OSのメモリ管理ユニット(MMU)というハードウェア機構と連携して、物理メモリと補助記憶装置の間でデータのやり取りを自動的かつ透過的に行うため、プログラマやユーザーは物理メモリの物理的な制約を一切意識することなく、広大な連続した仮想アドレス空間を利用してソフトウェアを開発・実行することができます。これにより、システムの安定性と利便性が飛躍的に向上しています。
試験でのポイント
情報処理技術者試験では、主記憶と補助記憶の役割分担や、仮想記憶の目的・仕組みを問う問題が頻繁に出題されます。特に「スワッピング」と「ページング」といった具体的なメモリ管理手法の違いについて、正確に理解しておく必要があります。スワッピングはプログラムやプロセス単位で丸ごと出し入れする古い手法であるのに対し、ページングはページという細かな単位で効率的に管理する現代的な手法である点が重要な違いです。
また、仮想記憶環境において物理メモリの不足が慢性化し、ページインとページアウト(スワップインとスワップアウト)が過剰に頻発してしまい、OSがメモリの入れ替え処理にばかりCPUの処理能力を奪われ、システム全体の処理速度が極端に低下する現象を「スラッシング」と呼びます。この「スラッシング」というキーワードも非常に出題頻度が高いため、必ず仮想記憶とセットで覚えておきましょう。
さらに高度な問題として、ページフォールトの発生確率(ページフォールト率)や、物理メモリアクセス時間と補助記憶アクセス時間を用いた実効アクセス時間の計算問題が出題されることもあります。公式を暗記するだけでなく、仕組みを理解して計算できるようにしておくことが得点源になります。
関連する用語
ページング、スワッピング、スラッシング、メモリ管理ユニット(MMU)