AUXストレージ(補助記憶)
Auxiliary Storage:補助記憶
AUXストレージは、Auxiliary Storage(補助記憶)のことです。
仮想記憶システムでは、メモリーは実記憶と補助記憶に分かれます。実記憶が実際のメモリー装置です。パソコンでいう「DDR2 PC6400のSDRAM」などのメモリーモジュールに相当します。補助記憶は実記憶に入りきらないデータやプログラムを一時的にしまっておく記憶装置です。基本的に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人がメモリーを独占して使っているかのよう見えるのです。