[拡大表示]

メモリー64MバイトのパソコンもOSが管理するメモリーは4Gバイト

 Windowsパソコンで,Word,Excel,PowerPointを起動すると,筆者の環境の場合,OS(Windows XP)を含めて約150Mバイトのメモリー空間が使用されます。Windowsの種類などによっても異なりますが,みなさんの場合も同じ程度になるでしょう。私のパソコンはそんなにたくさんメモリー(主記憶)を搭載していないよ,と言う人もいるかもしれません。しかし心配ご無用です。Windowsは「仮想記憶」と呼ぶ仕組みを備えることで,4G(ギガ)バイトぶんのメモリー空間を利用できるようにしているのです。ここでは,この仮想記憶の仕組みを解説します。

ハードディスクをメモリーとして使用する

 OSが管理しているメモリー空間は2種類あります。一つはパソコンが実際に搭載する物理的なメモリーに対応する実メモリー空間,もう一つは仮想的なメモリー空間(仮想メモリー空間)です。仮想メモリー空間の大きさは,WindowsやLinuxなどの代表的な32ビットOSの場合,4Gバイトになります。この値は,32ビット(2の32乗)で指定できるアドレスの最大値から来るものです。

 パソコンが搭載するメモリーは現在,64M~256Mバイト程度が普通でしょう。では,メモリー上に確保できない仮想メモリー空間上の領域は,一体どこに確保されるのでしょうか。答えは,ハードディスクです。仮想記憶は,ハードディスクを利用してメモリー空間を仮想的に広げる仕組みなのです。

 ハードディスクをメモリー代わりに利用しようという仕組みはそもそも,高価なメモリーを節約するために考えられました。仮想記憶を搭載した初めてのコンピュータは,今から30年前,1972年に発表された米IBMのシステム/370シリーズです。これ以来,ほとんどのコンピュータは仮想記憶を採用してきました。少ないメモリーで,より大規模な,あるいは多数のプログラムを動作させられるからです。

 「それなら,メモリーを使わずにハードディスクだけでプログラムを動かせばいいじゃないか」と思うかもしれません。しかし,ご存じのようにハードディスクはメモリーほど高速にデータを入出力できません。速度差はコンピュータにもよりますが,普通10倍以上あります。せっかく速いCPUを利用しても,プログラムやデータの格納場所へのアクセスが遅かったら,高速にプログラムを実行することはできません。

4Kバイトのページ単位でデータを入れ替え

 CPUは,これから使おうとするデータのありかを示す仮想メモリー空間のアドレスを検出し,それをOSに伝える仕組みを備えています。この知らせを受けたOSは,そのデータがメモリー上に無かった場合は,ハードディスクからメモリーにデータを移動します。これをスワップ・インといいます。

 OSは逆に,今すぐは使わないようなデータを,メモリーからハードディスクに移す作業も行います。これをスワップ・アウトといいます。スワップ・インやスワップ・アウトは,遅いハードディスクを読み書きするため時間がかかります。プログラムで頻繁に読み書きするデータはできるだけメモリー上に置いておく方が実行速度の観点からは望ましいわけです。

 Windows 9x/2000など最近のWindowsは,「ページング」と呼ぶ仮想記憶の方式を採用しています。書類をはさんでおくバインダを想像してください。書類の1ページは4Kバイトです。このページ単位で,スワップ・インとスワップ・アウトを行うわけです。

 プログラムを記述するときは普通,スワップの細かい仕組みまで意識する必要はありません。ただし大量にメモリーを消費するプログラムを,実メモリーが十分ないコンピュータで動作させると,メモリー操作のたびにスワップが発生し,性能が落ちることを覚えておいてください。