GNU/Linux >> Znalost Linux >  >> Linux

Testuje memtest86+ paměť, která se používá ke spuštění?

Řešení 1:

Je zřejmé, že memtest86+ nemůže testovat paměťovou oblast, která aktuálně obsahuje spustitelný kód memtest86+ (ale pokud se v této oblasti vyskytnou chyby paměti, je velmi pravděpodobné, že samotný test spadne). Memtest86+ je však schopen za běhu přemístit svůj vlastní kód na jinou adresu a pomocí tohoto triku je schopen otestovat veškerou paměť, kterou může používat firmware (BIOS) – jen ne všechny najednou.

Toto přemístění kódu je popsáno v README.background uvnitř archivu zdrojového kódu memtest86+ (soubor je mírně zastaralý – např. uvádí, že adresy použité pro kód memtest86+ jsou 0x2000 a 0x200000, ale nízká adresa definovaná ve zdroji je ve skutečnosti 0x10000 a vysoká adresa je buď 0x2000000 nebo 0x300000 v závislosti na množství paměti v počítači).

Ale ani s tímto trikem na přemístění není memtest86+ schopen otestovat veškerou paměť z následujících důvodů:

  • Firmware (BIOS) si obvykle vyhrazuje některé oblasti paměti RAM pro své vlastní použití (např. tabulky ACPI). Zatímco k těmto oblastem RAM může CPU přistupovat, zápis čehokoli do nich může vést k nepředvídatelnému chování.

  • Některá část paměti RAM se používá pro režim správy systému a není ani přístupná z CPU mimo privilegovaný kód SMM.

  • Rozsah adres RAM mezi 640 kB a 1M je nepřístupný kvůli zvláštnostem rozložení paměti staršího počítače (některé z těchto RAM mohou být použity jako stín pro BIOS ROM a pro SMM, jiné části mohou být zcela nedostupné).

Řešení 2:

Ne, memtest nemůže testovat vlastní paměť. Je však tak malý (jen některé KB), že na tom téměř nezáleží. UPRAVIT: toto tvrzení je chybné, protože jak je uvedeno ve vybrané odpovědi, memtest se může dynamicky přemístit, aby otestoval vše uživatelsky adresovatelná paměť.

--

Teoreticky může moderní procesor při bootování nakonfigurovat část své mezipaměti jako programovatelnou paměť, z velmi malých programů (jako memtest) lze spouštět bez vůbec dotýkat DRAM.

Je to však funkce specifická pro daný model (která vyžaduje podporu systému BIOS) a nemyslím si, že ji memtest používá.


Linux
  1. Linux – skutečné využití paměti?

  2. Linux – Jak se Oom Killer rozhodne, který proces zabije jako první?

  3. Linux – Provádí Linux „oportunistické swapování“, nebo je to Theth?

  1. Co znamená Etc?

  2. Udržuje realloc zarovnání paměti posix_memalign?

  3. Co znamená rc v souborech s tečkami

  1. Výstup kterého příkazu použitého pro vstup na CD?

  2. Můžeme alokaci paměti unit testovat?

  3. Příkaz du neanalyzuje skryté adresáře