GNU/Linux >> Linux Esercitazione >  >> Linux

Memtest86+ verifica la memoria che viene utilizzata per eseguire se stessa?

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.


Linux
  1. Output di quale comando utilizzato per l'input su Cd?

  2. Linux - Linux esegue "scambio opportunistico" o è un Theth?

  3. Come funziona una bomba a forcella?

  4. Cosa significa rc nei file punto

  5. Come eseguire lo script Python sul terminale (ubuntu)?

Installazione dello strumento di test della memoria RAM Memtest+ su Redhat 7 Linux

Come funziona la memoria di scambio in Linux?

Gestione della memoria con struct epoll_event

Il comando du non analizza le directory nascoste

In che modo bash verifica "false"?

Come funziona l'allocazione dello stack in Linux?