MemTest86は、物理アドレスよりも大きいメモリアドレス空間を表示します


0

4 GBのRAMを持つラップトップで、私は、メモリ・アドレスはバイトで開始する必要があります考え0と前に終了0x1_0000_0000(_は、わかりやすくするために追加のセパレータである)が、のmemtest86は、それが終わると言う0x1_6060_0000が、これはMBより1542年ではないでしょうか?

同様に、16 GBのRAMを搭載したデスクトップコンピューターで0x4_0000_00000x4_2F60_0000、で終わるはずだと思いますが、MemTest86 は758 MB大きいと言います。

MemTest86が実際の物理メモリ量よりも大きいアドレス空間を表示するのはなぜですか?


回答:


2

これは、最新のシステムでは非常に一般的な状況です。そして、十分な理由があります。

数十年前から、コンピューターにはハードウェアデバイスにマップされたメモリがありました。これは、CPUがメモリであるかのようにアクセスできる特別なハードウェアです。これは、ビデオシステムなどのハードウェアデバイスとの高速通信に使用されます。このコンピューターがなければ、パフォーマンスが大幅に低下します。

32ビットオペレーティングシステムとの互換性のために、このメモリマッピングされたハードウェアは、下部の4 GBアドレス範囲に表示する必要があります。現代のシステムでは、これは少なくとも数百MBを意味し、これは非常に重要です。メモリにマップされたハードウェアとRAMは同じアドレスに存在できないため、RAMのかなりの部分にアクセスできません。これが、32ビットバージョンのWindowsが4 GBのRAMをすべて表示できない理由です。

これは良い状況ではありません。しかし、少なくともそれを処理できるオペレーティングシステムには解決策があります。解決策は、4 GBを超えるアドレスにはアクセスできないRAMの部分を再マップすることです。これはあなたが見ているものです。32ビットオペレーティングシステムの利点のために、できるだけ多くのRAMが4 GB未満のアドレスに残されます。

このメモリの再マッピングは、コンピューターのハードウェアとBIOSによって行われるため、どのオペレーティングシステムでも使用できます。最新の64ビットオペレーティングシステムとメモリテストプログラムは、このために設計されています。技術的な理由により、Windowsの32ビットクライアントバージョンは、4 GBを超えるメモリをすべて無視します。最新のオペレーティングシステムでは、アプリケーションは物理RAMアドレスを認識しないため、メモリマッピングは問題になりません。


これは、MemTest86がいくつかのメモリアドレスをスキップする必要があるということですか?そうでなければ、ビデオメモリを上書きしませんか?
ビクター

適切なメモリテストプログラムは、RAMが使用するメモリ範囲を検出し、これらのみをテストします。このようなアドレスを知っていることがわかります。これは、プログラムが行うのは難しくありません。RAM以外のアドレスに任意のデータを書き込むと、ほぼ確実にシステムがクラッシュします。少なくとも、膨大な数のエラーが発生し、テスト時間が長くなります。
LMiller7
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.