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?
risposta
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
Intendi metà per 48 bit o 64 bit? Proviene da 0xffffffff80000000 a 0xffffffffffffffff? – MetallicPriest
@MetallicPriest leggi ancora la mia prima frase per favore. –
@ArneVogel Questo è quello che dice la pagina di wikipedia che ho citato, giusto? –
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
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. –