Ř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á.