Linux内核复习之分页机制

本文详细解释了分页机制如何实现内存的分层分组管理,包括页目录、页表的概念及地址映射过程。重点讨论了页目录和页表为何采用4KB对齐的原因。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 什么叫“页”

    分页实际上是对内存的一种分层分组的管理。分页机制在内存中建立页目录、页表这样的多级结构,这就是典型的分层管理。另一方面,一个页表中每个页表项都对应着一个物理页,也就说,一个页表管理着一组连续的虚拟地址的映射情况,这就是分组机制。

 

地址映射过程

    相信这张经典的图就足以解释了。简单分析一下,在常见的二级页表映射过程中,页目录通过高31-22位索引,这里共10位,也就是1K个,而每个页目录项(PDE)的大小为4字节,总共大小就是1K*4B=4KB,恰好一个页。PDE的低12位都一些属性位,例如,最典型的P位指明这个目录是否存在。PDE的高20位则是要找的页表的基址。接下来,用虚拟地址的高21-12位作为下标从该页表中找到对应的页表项PTE,PTE的大小同样为4字节,并且它的结构与PDE非常相似。提取对应页表项的高20位作为对应物理页的基址,再加上虚拟地址中的低12位,我们就得到了实际的物理地址。

 

问题:

    页目录都是按4KB对齐的,为什么?这是因为页目录基址由CR3寄存器给出,在CR3中仅使用20位指明页目录基址。

    页表都是按4KB对齐的,为什么?这是因为页表基址由PDE给出,在PDE中仅使用20位指明页目录基址。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值