瞭解linux 64位地址空間內存佈局

主要搞清楚下列問題:linux

1.X86-64 頁式管理有哪些改變?electron

2.Linux是怎樣支持64bit地址管理?佈局

3.64bit 內存佈局是怎麼樣的?spa

1. X86-64 頁式管理

查看《64-ia-32-architectures-software-developer-manual》-> VOLUME3 -> Chapter 4 paging -> 4.5 IA-32E PAGING,重點查看**地址轉換**圖。blog

 

另外參考《X86-64上的Linux VM管理系統》更容易理解。進程

 

2. Linux下64bit地址管理

查看隨內核文檔《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》

3. 64bit 內存佈局

 爲了觀察一個具體進程的內存佈局,能夠sudo cat /proc/pid/maps,特殊能夠直接sudo cat /proc/self/mpas查看當前進程內存佈局。

相關文章
相關標籤/搜索