32bitOSで4GBメモリが3GB程度にしか認識しない問題32bitOSで4GBメモリが3GB程度にしか認識しない問題-スポンサードリンク-MMIOが原因となって生じる問題です。OSの3GBの壁と呼ばれたりします。(現在は64bitが主流になってきているので、ほとんど問題になる事はないと思いますが・・・)今回は、本来32bitパソコンなら4GBまで認識するはずのメモリが、何故3GB程度にしか認識しないのかについて、軽ーく書いていきます。OSが4GBまでのメモリまでしか対応できない理由をちょっとだけ説明します。32bit版がメモリを4GBまでしかサポートしていないから。一般ユーザー向けのOSは、メモリのアドレス空間が2の32乗(32bit)=4GB(4,294,967,296Byte)となっているので、4GB以上のメモリを搭載しても、それ以上は認識できないことになります。32bit対応のOSだからと言って、33bit以上のアドレス空間が利用できないわけではなく、OSのプログラム次第では十分対応できます。対応しないのかについては、一般向けに市場に出回っているハードのサポートができない事が一番の理由だと思います。-スポンサードリンク-MMIOによる3GBの壁32bitOSでも、本来は4GBまでのメモリを認識するはずなのに、3.5GB程度としか認識しない問題について。これは、MMIOによる問題が原因と考えて間違いありません。そもそもMMIOとは、CPUがI/Oデバイスにアクセスするための”IOメモリ”と、通常の”物理メモリ”とを同じアドレス空間で取り扱う事とした仕組みです。昔の32bitコンピュータはメモリを4GBも搭載する事になるとは夢にも思っておらず、I/Oデバイスにアクセスするためのアドレス空間と、物理メモリにアクセスするアドレス空間を別々の専用回路を作るより、メモリのアドレス空間の一部をI/Oアドレスとして使ってしまった方がスマートだと思ったわけです。↓MMIOによる物理メモリ空間とIOメモリ空間の利用イメージ上のイメージのように、物理メモリの容量が小さいうちは問題ないのですが、4GBのメモリを搭載すると下のイメージのようになってしまいます。物理メモリの一部がIOメモリ空間に利用され、認識できなくなっています。OSで4GBメモリが正しく認識されてない問題というわけです。すればよいか?MMIOによってIOメモリ空間が利用されてしまっているので、この問題を解決するには、MMIOを使わないか、33bit以上のアドレス空間をつくればよいわけです。話はそんなに単純ではありません。MMIOを使わない場合、IOアドレス用の専用回路が必要ですし、33bit以上のアドレス空間を利用するには、OS自体を作り変えて、なお且つハードウェアの動作確認が必要になってきます。海外のフリーソフトの中には、32bitのOSで4GBのメモリを認識させるツールがあるようですが、「うーん・・・」どうなんでしょう?導入している方のレビューを見ると、動作が不安定になったり起動不能になっているケースも見られます。個人的にはシステムに直結するフリーソフトを無理に導入することはお勧めしません。コメントをキャンセルメールアドレスが公開されることはありません。