Ref。 Linux kernel ARM Translation table base (TTB0 and TTB1)ARM Linux內核頁表
我在以前的鏈接討論了主題父親疑問/查詢:
- 0至0xbfffffff是存儲器(用於用戶進程)的下部和在TTB0由頁表管理,它包含當前進程的頁表
Ref。臂/包括/ ASM/pgtable-2level.h:PTRS_PER_PGD = 2048,PTRS_PER_PMD = 1,PTRS_PER_PTE = 512
- 0xc00000000的爲0xffffffff是地址空間的上半部分(OS和存儲器映射I/O)管理/由TTBR1中的頁表翻譯。 TTB1表的大小和對齊方式固定(至16k)。大小的每個1級條目都是32位,代表1MB的頁面/段。這是
swapper_pg_dir
(REFSystem.map
)頁表是放在下面的實際文本地址16K
的是,在
swapper_pg_dir = 0
第768項(0x0到0xbfffffff用戶進程),並從768有效進入1024(0xc0000000到0xffffffff用於OS和內存映射I/O)?任何人都喜歡在內核空間(內核模塊)共享一些示例代碼來瀏覽此
swapper_pg_dir
PGD?
如果您閱讀引用的話題,則不使用TTB0/TTB1。只使用一個版本。典型的Linux內存模型的拆分是錯誤的。這對其他操作系統可能有好處。 –
Thx爲您的更新。 –
Thx爲您的更新。請您確認 - (1)swapper_pg_dir中的每個條目對應1MB的內存部分? (2)任何遍歷PGD列表的例子(每個條目8字節和2048個條目)? –