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个条目)? –