Linux页表查询--页表项、页面、页内偏移量

本文介绍了Linux内核中的一级页表查询过程,阐述了页表、页表项、页面和页面偏移量的概念及其相互关系。在32位处理器和4KB页面大小的背景下,详细解释了如何从虚拟地址转换到物理地址,并讨论了页表大小的计算。通过对一级页表查询的分析,有助于理解多级页表的工作原理。
摘要由CSDN通过智能技术生成

在Linux内核管理中,MMU的页表查询是最基础的知识,这里目的是通过理解页表查询过程,去厘清页表、页表项、页面、页面偏移量(也称页内偏移量)等概念及它们之间的关系,为Linux内核管理的学习与使用奠定基础。

接下来这里用最简单的一级页表查询过程来说明,理解了一级页表的查询过程,那么二级页表查询、三级页表查询也就能依次类推了。

前提条件:

以32位宽的处理器(虚拟地址和物理地址均是32位位宽)、页面大小4KB为前提讲解。

前提条件的分析:

1.寻址空间大小的由来:
由于是32位位宽,所以寻址空间大小是4GB,怎么计算来的呢?
32位—>则可以知道一共有2^32个地址,会有地址0x0000 0000、0x0000 0001、0x0000 0002…0xffff ffff,每个相邻地址间都只相差一个字节(1Byte),那是因为arm是以单个字节为单位寻址的,其他变量类型只是单个字节char类型的变种。所以2^32*1Byte = 4GB(地址个数 * 每个地址占1Byte大小 = 总的寻址空间大小),即寻址空间大小。

2.页面大小
前提条件里说页面大小4KB,这个其实是指物理页面大小,这个大小是由.s文件里设定的,也可以设定为16KB、64KB等等,一开始就设定了,设定好后,后面的页表大小才能确定,这里就以经典的4KB大小来说明。

一级页表查询

基于上述前提条件,一级页表查询过程如下图:<

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值