linux程序調試(一)------內存分佈

1、地址映射
64位地址採用4層地址映射,如下圖:


pgd、pud、pmd、pte各佔了9位,加上12位的頁內index,共用了48位。即可管理的地址空間爲2^48=256T。而在32位地址模式時,該值僅爲2^32=4G。
另外64位地址時支持的物理內存最大爲64T,見e820.c中MAX_ARCH_PFN的定義:
# define MAX_ARCH_PFN MAXMEM>>PAGE_SHIFT
其中MAXMEM爲2^46,PAGE_SHIFT爲12。
而在32位地址時最大支持的物理內存爲64G(開啓PAE選項)。


在/arch/x86/include/asm/page_64_types.h下有如下兩行:
#define __START_KERNEL_map _AC(0xffffffff80000000, UL)
#define KERNEL_IMAGE_START _AC(0xffffffff80000000, UL)

這就是對空間大小的劃分,在0xffffffff80000000之前的是給用戶空間,在0xffffffff80000000之後的給內核空間



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章