仮想記憶システムでは、メモリーは実記憶と補助記憶に分かれます。実記憶が、ハードウェアとしての実際のメモリー装置です。パソコンでいう「DDR2 PC6400のSDRAM」などのメモリー・モジュールに相当します。補助記憶は、実記憶に入りきらないデータやプログラムを一時的にしまっておく記憶装置(Auxiliary Storage、AUXストレージ)です。補助記憶には、基本的にDASD(ディスク)装置が使われます。
仮想記憶のしくみは、ソフトウェア(OS)だけでなく、ハードウェア(CPU)の機能も含めて実現されています。OS内のプログラムがアクセスするメモリーは、仮想メモリーです。10000番地のデータにアクセスする、20000番地のプログラムへジャンプする、といった命令の動作は、すべて仮想メモリーを対象にします。
OSの一部のモジュールや、システム・プログラムの特別な処理などにおいては、直接実アドレスでメモリー操作をする場合もありますが、そのような例外を除き、仮想記憶システムでは、プログラムは原則仮想メモリーを使って動作します。
しかしながら、実際に命令を実行するCPUは、実メモリーしかアクセスできません。そこで、CPUではDAT機構(DAT:Dynamic Address Translation:動的アドレス変換)によって、プログラムが提示した仮想アドレスを実アドレスに変換します。CPUのDAT機構は、実メモリー内に作られているアドレス変換のためのテーブルを参照して、仮想アドレスと実アドレス変換を行います。DATはハードウェアのしくみですが、アドレス変換のためのテーブルは、OSがシステムの初期設定時に作成します。DATはCPU単独ではなく、OSと連携して仮想記憶のしくみを実現します。
アドレスが決まると、実記憶はCPUによってアクセスされます。しかし、一般に実メモリーは仮想メモリーより小さいです。MVSのように、同時に複数のジョブを動かすOSでは、複数個の仮想メモリーを使うため、実メモリーとの大きさの差はさらに拡がります。また、仮想メモリー上はデータが連続していても、実メモリー上では断片化していることもあります。実メモリー上に格納しきれないデータや、他のプログラムのために実メモリー領域を明け渡したデータは、補助記憶と呼ばれる外部の記憶装置に格納されます。主にディスク装置が使われ、ディスク内に作成されたページ・データセット(ページング・ファイル)が補助記憶の実体となります。
プログラムはメモリーをバイト単位でアクセスできますが、OSのメモリー管理は、そこまで細かい単位ではありません。MVS(z/OS)では4KBのサイズでメモリーを区切って管理します。仮想メモリー上の4KBの単位を「ページ」と呼びます。仮想メモリー上ではページですが、実メモリー上ではフレーム、補助記憶内ではスロットとなります。実メモリー上のページを補助記憶であるページ・データセットのスロットに書き出したり、逆にスロットからフレームに読み込むことが「ページング」です。メモリーから書き出すことがページアウト、メモリーへの読み込みがページインとなります。
MVSでは、CPUが実メモリーをアクセスした際に、実際にそこに目的のデータがなければ、記憶保護例外が発生して、CPUが割込みを起こします。MVSはそれを受けてページング・スーパーバイザーを起動し、必要なページ枠がページ・データセットに書き出されているかを確認します。ページ・データセットにあれば、そこから実メモリー上に読み込み、割込みを起こしたプログラムの動作を続けます。
割込みによって必要なページング処理が行われながらプログラムは実行されますが、プログラムからはページング処理はまったく見えません。あたかも自分1人がメモリーを独占して使っているかのよう見えるのです。