GNU/Linux >> Linux Esercitazione >  >> Linux

Linux:come viene suddiviso uno spazio di indirizzi virtuali di processo a 64 bit in Linux?

L'immagine seguente mostra come è suddiviso uno spazio di indirizzi virtuali di processo a 32 bit:

Ma come viene suddiviso uno spazio di indirizzi virtuali di processo a 64 bit?

Risposta accettata:

x86

La mappa di memoria virtuale x86 a 64 bit divide lo spazio degli indirizzi in due:la sezione inferiore (con il bit superiore impostato su 0) è lo spazio utente, la sezione superiore (con il bit superiore impostato su 1) è lo spazio del kernel. (Si noti che x86-64 definisce indirizzi "canonici" "metà inferiore" e "metà superiore", con un numero di bit effettivamente limitato a 48 o 56; vedere Wikipedia per i dettagli.)

La mappa completa è documentata in dettaglio nel kernel; attualmente sembra

Inizia addr Offset Indirizzo finale Taglia Descrizione area VM
0000_0000_0000_0000 0000_7fff_ffff_ffff  128 TiB memoria virtuale spazio utente
0000_8000_0000_0000 +128 TiB ffff_7fff_ffff_ffff ~16 milioni di TiB non canonico
ffff_8000_0000_0000 -128 TiB ffff_ffff_ffff_ffff  128 TiB memoria virtuale nello spazio del kernel

con indirizzi virtuali a 48 bit. (La variante a 56 bit ha la stessa struttura, con 64 PiB di spazio degli indirizzi utilizzabile su entrambi i lati di un foro PiB da 16.000.) 
(Si noti che 16KPiB =16MTiB =2 byte.)

A differenza del case a 32 bit, la mappa di memoria a "64 bit" riflette direttamente i vincoli hardware.

BRACCIO

ARM a 64 bit ha una distinzione di indirizzi simile nell'hardware:i primi sedici bit sono 0 per lo spazio utente, 1 per lo spazio kernel. Linux utilizza 39, 42 o 48 bit per gli indirizzi virtuali, a seconda del numero di livelli di tabella delle pagine e delle dimensioni della pagina. Con ARMv8.2-LVA, vengono aggiunti altri quattro bit, risultando in indirizzi virtuali a 52 bit.

Questo è anche documentato in dettaglio nel kernel.


Linux
  1. Come uccidere un processo zombie su Linux

  2. Come aggiungere spazio di swap in Linux

  3. Spazio degli indirizzi del processo a 32 bit su Linux a 64 bit

  4. Come accedere agli indirizzi fisici dallo spazio utente in Linux?

  5. come viene determinata la dimensione della pagina nello spazio degli indirizzi virtuali?

Come installare MX Linux su Virtual Box

Come KILL un processo su Linux

Come modificare l'indirizzo IP su Linux

Come ottenere il tuo indirizzo IP su Linux

Come controllare lo spazio di scambio in Linux

Come trovare l'indirizzo IP in Linux