GNU/Linux >> Linux の 問題 >  >> Linux

memtest86+ は、それ自体を実行するために使用されるメモリをテストしますか?

解決策 1:

明らかに、memtest86+ は現在 memtest86+ 実行可能コードを含むメモリ領域をテストできません (ただし、その領域にメモリ エラーがある場合、テスト自体がクラッシュする可能性が非常に高くなります)。ただし、me​​mtest86+ は実行時に独自のコードを別のアドレスに再配置することができ、このトリックを使用することで、ファームウェア (BIOS) によって使用が許可されているすべてのメモリをテストできます — 一度にすべてではありません.

このコードの再配置は、memtest86+ ソース コード アーカイブ内の README.background で説明されています (ファイルは少し古くなっています。たとえば、memtest86+ コードに使用されるアドレスは 0x2000 と 0x200000 であると記載されていますが、ソースで定義されている下位アドレスは実際には 0x10000 であり、上位アドレスはマシンのメモリ量に応じて 0x2000000 または 0x300000 のいずれかになります)。

しかし、この再配置のトリックを使用しても、memtest86+ は次の理由ですべてのメモリをテストすることはできません:

  • 通常、ファームウェア (BIOS) は、独自に使用するためにいくつかの RAM 領域を予約します (ACPI テーブルなど)。これらの RAM 領域は CPU からアクセスできますが、それらに何かを書き込むと、予期しない動作が発生する可能性があります。

  • RAM の一部はシステム管理モードに使用され、特権 SMM コードの外部の CPU からはアクセスできません。

  • 640K から 1M の RAM アドレス範囲は、従来の PC メモリ レイアウトの癖によりアクセスできません (この RAM の一部は、BIOS ROM および SMM のシャドウとして使用される場合があり、他の部分は完全にアクセスできない場合があります)。

解決策 2:

いいえ、memtest は自身のメモリをテストできません。ただし、非常に小さい (数 KB のみ) ため、ほとんど問題になりません。 編集: 選択した回答に記載されているように、memtest は all をテストするために動的に再配置できるため、このステートメントは間違っています。 ユーザーがアドレス可能なメモリ。

--

理論的には、最新のプロセッサは起動時にキャッシュの一部をプログラマブル メモリとして構成でき、非常に小さなプログラム内から (memtest として) なしで実行できます。 DRAM にまったく触れていません。

ただし、これはモデル固有の機能 (BIOS サポートが必要) であり、memtest では使用されていないと思います。


Linux
  1. Linux –実際のメモリ使用量?

  2. Cdへの入力に使用されるコマンドの出力はどれですか?

  3. Linux – Linuxは「日和見スワッピング」を実行しますか、それともそれは理論ですか?

  1. フォーク爆弾はどのように機能しますか?

  2. Etcは何の略ですか?

  3. struct epoll_event によるメモリ処理

  1. ターミナル(ubuntu)でPythonスクリプトを実行するには?

  2. メモリ割り当てを単体テストできますか?

  3. du コマンドは隠しディレクトリを解析しません