GNU/Linux >> Linux Esercitazione >  >> Linux

Perché il comando free e dmidecode mostrano valori diversi per la RAM?

Con un kernel a 32 bit, hai solo 4 GB di spazio indirizzo disponibile . Parte di questo spazio di indirizzi deve essere utilizzato dall'hardware (virtuale o fisico) nel sistema, come schede video, NIC, ecc., per i propri scopi. Questo utilizzo è solitamente compreso tra 256 MB e 1 GB, a seconda di quanto spazio di indirizzamento richiede il particolare hardware.

Poiché quello spazio di indirizzi è utilizzato dall'hardware, la RAM corrispondente è generalmente inaccessibile a un sistema a 32 bit.

Hai un paio di opzioni:

  1. L'opzione preferita è eseguire un sistema operativo a 64 bit. Ciò espande notevolmente lo spazio degli indirizzi, quindi c'è molto spazio per tutta la RAM e l'hardware. Rompe anche il limite di 2 GB/3 GB a 32 bit sulle applicazioni mantenendo la capacità di eseguire programmi a 32 bit. In generale, qualsiasi sistema con 2 GB di RAM in più dovrebbe eseguire un sistema operativo a 64 bit per evitare questi problemi.
  2. Un'altra opzione è eseguire un kernel a 32 bit con PAE abilitato. Questo mostrerà la RAM, ma ogni processo sarà comunque limitato a 2 GB/3 GB di spazio degli indirizzi, a seconda dei dettagli della build del kernel. Poiché i sistemi operativi a 64 bit eseguiranno perfettamente le applicazioni a 32 bit, ciò non presenta alcun vantaggio e presenta molti svantaggi (come la mancanza di un percorso di aggiornamento).

L'output di free Il comando non conta la memoria del kernel riservata e pochi altri piccoli bit. Vedrai questa discrepanza anche in un kernel a 64 bit e anche con <2 GB di RAM.


La linea critica dalla tua mappa RAM fisica è questa:

 BIOS-e820: 0000000100000000 - 0000000140000000 (usable)

Questa riga mostra che 1 GB (0x40000000 byte, esadecimale) della RAM fisica del tuo sistema viene mappato dal BIOS al di sopra del limite di 4 GB, rendendolo inaccessibile da un sistema a 32 bit senza PAE.


Linux
  1. Il dispositivo Linux non mostra lo spazio su disco corretto dopo un ridimensionamento

  2. Codice per malloc e gratuito

  3. Slash e il comando rsync

  4. Colore diverso per comando e output

  5. Perché il mio sistema mostra solo 3,2 GiB di RAM quando ho sicuramente 4,0 GiB

Usando il comando gratuito di Linux

Come funziona il comando Tee?

I 40 comandi utili del server Linux per principianti e professionisti

Che cos'è il comando Grep in Linux? Perché viene utilizzato e come funziona?

Perché top mostra un numero diverso di core rispetto a cpuinfo?

Perché slabtop -o restituisce solo le prime 23 righe quando il comando viene reindirizzato?