Soluzione 1:
Ovviamente, memtest86+ non può testare la regione di memoria che attualmente contiene il codice eseguibile di memtest86+ (ma se ci sono errori di memoria in quella regione, è molto probabile che il test stesso vada in crash). Tuttavia, memtest86+ è in grado di riposizionare il proprio codice a un indirizzo diverso in fase di esecuzione e, utilizzando questo trucco, è in grado di testare tutta la memoria che gli è consentito utilizzare dal firmware (BIOS), ma non tutta in una volta.
Questo trasferimento del codice è descritto in README.background all'interno dell'archivio del codice sorgente memtest86+ (il file è leggermente obsoleto, ad esempio afferma che gli indirizzi utilizzati per il codice memtest86+ sono 0x2000 e 0x200000, ma l'indirizzo basso come definito nella fonte è in realtà 0x10000 e l'indirizzo alto è 0x2000000 o 0x300000 a seconda della quantità di memoria nella macchina).
Ma anche con questo trucco di riposizionamento memtest86+ non è in grado di testare tutta la memoria per i seguenti motivi:
-
Di solito il firmware (BIOS) riserva alcune regioni RAM per il proprio utilizzo (ad esempio, tabelle ACPI). Sebbene sia possibile accedere a queste regioni RAM dalla CPU, scrivere qualsiasi cosa al loro interno può comportare un comportamento imprevedibile.
-
Una parte della RAM viene utilizzata per la modalità di gestione del sistema e non è nemmeno accessibile dalla CPU al di fuori del codice SMM privilegiato.
-
L'intervallo di indirizzi della RAM compreso tra 640K e 1M è inaccessibile a causa delle stranezze del layout di memoria del PC legacy (alcune di queste RAM possono essere utilizzate come shadow per BIOS ROM e per SMM, altre parti potrebbero essere completamente inaccessibili).
Soluzione 2:
No, memtest non può testare la propria memoria. Tuttavia, è così piccolo (solo pochi KB) che ha poca importanza. MODIFICA: questa affermazione è sbagliata poiché, come affermato nella risposta selezionata, memtest può riposizionarsi dinamicamente per testare tutto memoria indirizzabile dall'utente.
--
In teoria, i processori moderni possono, al momento dell'avvio, configurare parte della loro cache come memoria programmabile, dall'interno di programmi molto piccoli (come memtest) possono essere eseguiti senza toccando la DRAM.
Tuttavia, è una funzionalità specifica del modello (che richiede il supporto del BIOS) e non credo che memtest la stia utilizzando.