2013-08-19 68 views
9

64位Linux內核的地址空間是什麼,即它使用的代碼,堆棧,堆和數據段的地址範圍是什麼。64位Linux內核佔用了哪個地址空間?

+7

關於Linux的一個好處是你可以真正下載源代碼並查看它。鏈接器腳本可能是一個很好的開始。 –

回答

13

在64位Linux上,最高位設置爲1的所有64位地址都爲內核保留。換句話說,虛擬地址空間的上半部分。

有關詳情請參閱http://en.wikipedia.org/wiki/X86-64#Virtual_address_space_details

+0

你的意思是48位或64位的一半?它是從0xffffffff80000000到0xffffffffffffffff嗎? – MetallicPriest

+1

@MetallicPriest請再讀一遍我的第一句話。 –

+0

@ArneVogel這就是我引用的維基百科頁面所說的,是嗎? –

1

PAGE_OFFSETULLONG_MAX與那些等於內核內存的起始和結束地址的常量。你可以直接在你的內核C模塊中使用它們:

#define START_MEM PAGE_OFFSET 
#define END_MEM  ULLONG_MAX 
相關問題