ARM处理器 的linux分页机制
linux-dash
A beautiful web dashboard for Linux
项目地址:https://gitcode.com/gh_mirrors/li/linux-dash
免费下载资源
·
ARM MMU只支持两级页表地址转换,也就是采用三级分页映射,能够满足32bitCPU的存储管理需求
ARM支持的页大小有几种 - 1M, 64K, 4K, 1K。在linux kernel中,ARM采用了4K大小的页,4K大小的页决定了虚拟地址的低12bit留作偏移地址。从上图可以看出,页全局目录索引有效位数是12bit,二级索引有效位数是8bit,页内偏移量为12bit。
根据ARM的硬件分页机制,我们得出第一级全局页目录有4096项,第二级为256项,这样第二级可以有很多位可以被硬件使用。
在arm linux实现上,针对ARM的硬件分页机制做了些微小的调整。第一级目录保留了2048项,每项占用8 bytes(换句话说,是两个硬件指针指向二级页表);第二级则把两个硬件PTE表连续放在一起,在这两个PTE表后面则保存相应的Linux状态信息,因此二级表项实际上有512项(每个表256项,两个则为512项)。这样每个逻辑PTE表刚好占用一个page。
ARM linux页表layout如下:
在arch/arm/include/asm/pgtable.h中,可以看到PTRS_PER_PTE和PTRS_PER_PTE的定义
#define PTRS_PER_PTE 512
#define PTRS_PER_PMD 1
#define PTRS_PER_PGD 2048
由于PGD有2048项,每项占用8个字节,总计需要4*4K,也就是说ARM linux的PGD实际上占用了四个连续物理页框。
GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:2 个月前 )
186a802e
added ecosystem file for PM2 4 年前
5def40a3
Add host customization support for the NodeJS version 4 年前
更多推荐
已为社区贡献15条内容
所有评论(0)