什么是页表
页表就是用于将虚拟地址转换为物理地址的转换关系表。访问虚拟地址时,计算机通过页表找到对应的实际物理地址访问。
为何需要多级页表
目前在linux中采用4级页表,ARM32采用2级页表,ARM64采用4级页表。但linux是一个通用性的系统,当ARM32时2级页表也是使用linux的4级页表机制,只是将其它两级页表转换不做任何处理。
那么为什么需要多级页表呢?节省内存空间。二级页表可以在需要的时候才建立。
ARM32页表映射
页表查询
内核内存布局
Linux内核在启动的的时候会打印出内核内存空间的布局图。
ARM32内核的内存布局图如下所示。
页表建立分析
linux中使用map_desc数据结构完整地描述一个内存空间: