主要搞清楚下列問題:linux
1.X86-64 頁式管理有哪些改變?electron
2.Linux是怎樣支持64bit地址管理?佈局
3.64bit 內存佈局是怎麼樣的?spa
查看《64-ia-32-architectures-software-developer-manual》-> VOLUME3 -> Chapter 4 paging -> 4.5 IA-32E PAGING,重點查看**地址轉換**圖。blog
另外參考《X86-64上的Linux VM管理系統》更容易理解。進程
查看隨內核文檔《https://www.kernel.org/doc/Documentation/x86/x86_64/mm.txt 》,初次看有些費解,注意:內存
內存佈局重要分三大塊,從低地址到高地址,依次是:用戶空間,空洞(目前換沒用), 內核空間; 文檔
用戶空間至關簡單是連續的,而內核空間又分紅不少小的區域,如直接映射區,vmalloc,text區和內核模塊區等,而且各區域由空洞隔開;get
要弄懂三大區域進一步是如何佈局的,就比較費事了,參考問題3會有個大概瞭解。it
內存佈局的配置文件見《http://lxr.free-electrons.com/source/arch/x86/include/asm/
pgtable_64_types.h?v=3.8#L26》
爲了觀察一個具體進程的內存佈局,能夠sudo cat /proc/pid/maps,特殊能夠直接sudo cat /proc/self/mpas查看當前進程內存佈局。