このページの本文へ

前へ 1 2 3 4 次へ

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

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

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

文● 塩田紳二

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

 今回は、OSのメモリー管理について解説しよう。メモリー管理はOSの基本機能のひとつと言ってもいいぐらい、重要な機能だ。というのも、近代的なOSはすべてマルチタスク、つまり複数のアプリケーションが並行して動作するため、それぞれのアプリケーションが利用するメモリーを、OSが正しく管理しなければならないからだ。

 プログラムはメインメモリーに置かないと実行できないが、別々のプログラムをメモリー内の同じ位置に置くわけにはいかない。だからプログラムを起動するときには、以前に起動したプログラムとは別の場所に置かねばならない。プログラムをどこにおいて、どれだけのメモリーを使わせるのかを把握することを「メモリー管理」という。

 コンピューターの歴史はメモリー管理の歴史でもある。それぐらいコンピューターにとっては、メモリーを管理することは重要だ。かつてメモリーは高価な部品だった。また、プログラムは機能が増えることなどで、メモリーを使う量が増えていく。メモリー管理は増大していくプログラムのメモリー要求に対して、貴重なメモリーをどうやって有効に使うかということでもある。

なぜ32bit版では4GB未満の
メモリーしか扱えないのか?

 32bit CPUであるx86系プロセッサーは、物理メモリーのアクセスに32bitのアドレスを使うため、アクセス可能なメモリーは最大4GBになる。ただし、これらをすべてメモリーとして使うのではなく、その一部は「メモリーマップドI/O」に使われる。メモリーマップドI/Oとは、メモリー空間の一部にI/Oデバイスにアクセスするための領域を割り当てるものだ。例えばGPUの場合、ビデオメモリーをメモリー空間に割り当てることで、CPUからの高速なアクセスを可能にしている(CPU内蔵グラフィックスの共有メモリーとは別の話)。

 x86アーキテクチャーでは、I/Oアクセスには専用の「I/Oアドレス空間」があるのだが、これはとっくの昔に足りなくなっていた。さらに、I/O命令では高速なデータ転送ができないという問題もあり、今では多くのデバイスがメモリーマップドI/Oを使うようになっている。

 Windows Vistaの登場以前に、メモリーの実売価格が大きく下がり、4GBのメモリーは比較的簡単に入手できるようになった。ところが、パソコンにメモリーを4GB装着しても、Windowsが4GBすべてを認識してくれないという問題が話題になった。その後マイクロソフトはやり方を変えて、「実装メモリ量」は4GBと表示する一方で、「アプリケーション等から利用できる領域は3.5GB」というような表示方式に変更した。

 4GBのメモリーを搭載しても全部が利用できないのは、前述のメモリーマップドI/Oのために、利用できるメモリー空間が減ってしまうからだ(図1)。

図1 x86アーキテクチャーではメモリーマップドI/Oが使われるため、CPUがアクセス可能な4GBのメモリー空間の一部がI/Oアクセスための領域として必要になる

前へ 1 2 3 4 次へ

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

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

ピックアップ

ASCII.jp RSS2.0 配信中

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