Lösung 1:
Offensichtlich kann memtest86+ nicht die Speicherregion testen, die derzeit den ausführbaren memtest86+-Code enthält (aber wenn es in dieser Region Speicherfehler gibt, ist es sehr wahrscheinlich, dass der Test selbst abstürzt). Allerdings ist memtest86+ in der Lage, seinen eigenen Code zur Laufzeit an eine andere Adresse zu verschieben, und kann mit diesem Trick alle Speicher testen, die ihm von der Firmware (BIOS) erlaubt sind – nur nicht alle auf einmal.
Diese Codeverlagerung ist in README.background innerhalb des memtest86+-Quellcodearchivs beschrieben (die Datei ist etwas veraltet – z. B. gibt sie an, dass die für memtest86+-Code verwendeten Adressen 0x2000 und 0x200000 sind, aber die niedrige Adresse, wie in der Quelle definiert, ist tatsächlich 0x10000, und die hohe Adresse ist entweder 0x2000000 oder 0x300000, abhängig von der Größe des Arbeitsspeichers in der Maschine).
Aber selbst mit diesem Umzugstrick ist memtest86+ aus folgenden Gründen nicht in der Lage, den gesamten Speicher zu testen:
-
Normalerweise reserviert die Firmware (BIOS) einige RAM-Bereiche für den eigenen Gebrauch (z. B. ACPI-Tabellen). Obwohl auf diese RAM-Bereiche von der CPU zugegriffen werden kann, kann das Schreiben von Inhalten in sie zu unvorhersehbarem Verhalten führen.
-
Ein Teil des RAM wird für den Systemverwaltungsmodus verwendet und ist von der CPU außerhalb des privilegierten SMM-Codes nicht einmal zugänglich.
-
Der RAM-Adressbereich zwischen 640 KB und 1 MB ist aufgrund von Macken des alten PC-Speicherlayouts nicht zugänglich (ein Teil dieses RAM kann als Schatten für das BIOS-ROM und für SMM verwendet werden, andere Teile sind möglicherweise vollständig unzugänglich).
Lösung 2:
Nein, memtest kann seinen eigenen Speicher nicht testen. Es ist jedoch so klein (nur einige KB), dass es kaum eine Rolle spielt. BEARBEITEN: Diese Aussage ist falsch, da sich Memtest, wie in der ausgewählten Antwort angegeben, dynamisch selbst verschieben kann, um all zu testen Benutzeradressierbarer Speicher.
--
Theoretisch können moderne Prozessoren beim Booten einen Teil ihres Caches als programmierbaren Speicher konfigurieren, aus dem heraus sehr kleine Programme (wie Memtest) ohne ausgeführt werden können DRAM überhaupt berühren.
Es ist jedoch eine modellspezifische Funktion (die BIOS-Unterstützung erfordert) und ich glaube nicht, dass Memtest sie verwendet.