このページの本文へ

基礎から覚える 最新OSのアーキテクチャー 第6回

メモリー不足を根本的に解決する64bit OSの仕組み

2011年10月20日 12時00分更新

文● 塩田紳二

  • この記事をはてなブックマークに追加
  • 本文印刷

仮想記憶の仕組み

図2 物理アドレス空間(物理メモリー空間)は、CPUがアクセス可能なメモリー領域。論理アドレス空間とは、ソフトウェアからアクセス可能なメモリーの範囲。かつてのCPUでは両者は一致していたが、仮想記憶により分離された

 Windowsを含む現在のOSは、CPUが持つ仮想記憶機能を使ってメモリーを管理している。仮想記憶機能を使うことで、実装されているメモリー全体である「物理メモリー空間」と、プログラムが扱う「論理アドレス空間」を分離できる(図2)。これにより、すべてのアプリケーションプログラムに、まったく同じ仮想メモリー空間を提供できる。

 仮想記憶機能の元では、プログラムは自分に割り当てられた仮想メモリー空間しかアクセスできないので、ほかのプログラムの領域には手を出せない。そのためあるプログラムがクラッシュしたとしても、ほかのプログラムに与える影響を最小限にできる。

 x86系32bit CPUでは、仮想メモリー空間の最大サイズは4GBで、物理メモリー空間のサイズも4GBである。仮想記憶機能は割り当てテーブルを使い、4KBの「ページ」を組み合わせてアプリケーションに仮想メモリー空間を提供する(図3)。

図3 x86系プロセッサーでは、仮想記憶のメモリー管理をページ単位で行なう。ソフトウェアが指定するメモリーアドレスは、変換テーブルにより物理メモリー上のページへのアクセスとなる。変換テーブルはOSが準備する

 “仮想”メモリー空間とは言っても、実際にアクセスするのは物理メモリーだ。それが仮想と呼ばれるゆえんは、メモリーが必要になったときに、すでにほかのプログラムに割り当てたメモリー領域を取り返して、メモリーを要求するプログラムに割り当てることができる点だ。これを「スワップ」という。止まっているプログラムは自分のメモリーが取られたことがわからないし、割り当てられた側も、それがさっきまでほかのプログラムが使っていたメモリーとはわからない。

 32bit版のWindowsでは管理を簡単にするために、4GBの仮想メモリー空間のうち、上側の2GBをカーネルなどのシステム用とし、残り2GBをアプリケーションが自由に使える空間としている(図4)。

図4 初代のWindows NTが開発された際に、メモリー空間は下の2GBがアプリケーション用で、上の2GBをシステムが利用することに決められた

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

ASCII.jpメール デジタルMac/iPodマガジン