2013-08-19 6 views
9

Qual è lo spazio di indirizzamento del kernel per Linux a 64 bit, ovvero, qual è l'intervallo di indirizzi del codice, stack, heap e segmenti di dati utilizzati da esso.Quale spazio indirizzo è occupato dal kernel in Linux a 64 bit?

+7

Una cosa carina di Linux è che puoi effettivamente scaricare la fonte e guardarla attraverso. Gli script del linker potrebbero essere un buon punto di partenza. –

risposta

13

Su un Linux a 64 bit, tutti gli indirizzi a 64 bit con il bit di ordine più alto impostato su 1 sono riservati per il kernel. In altre parole, la metà superiore dello spazio degli indirizzi virtuali.

Per tutti i dettagli si veda http://en.wikipedia.org/wiki/X86-64#Virtual_address_space_details

+0

Intendi metà per 48 bit o 64 bit? Proviene da 0xffffffff80000000 a 0xffffffffffffffff? – MetallicPriest

+1

@MetallicPriest leggi ancora la mia prima frase per favore. –

+0

@ArneVogel Questo è quello che dice la pagina di wikipedia che ho citato, giusto? –

1

PAGE_OFFSET e ULLONG_MAX sono costanti con valori che sono uguali agli indirizzi di inizio e fine della memoria del kernel. Puoi usarli direttamente nel modulo C del tuo kernel:

#define START_MEM PAGE_OFFSET 
#define END_MEM  ULLONG_MAX