Linux内核学习笔记 -09 实践:将虚拟地址转换为物理地址

在进程中,我们不直接对物理地址进行操作,CPU执行时,指定的地址需要经过MMU转换后才可访问真正的物理内存。

地址转换的过程分为两步:分段和分页

分段的过程:将进程的代码/数据栈分布在不同的虚拟地址段上,从而避免进程间的相互影响。分段之前的地址我们称之为逻辑地址。它有两部分组成,高位的段选择符和低位的段偏移量。

分段时,先用段选择符在相应的段描述符表中找到段描述符,即某一个段的基地址。然后在加上段内偏移量,就等于对应的线性地址。线性地址也称之为虚拟地址。

在实际应用中,linux系统为了增加可移植性,并没有完整的使用分段机制。它让所有的段都指向相同的段地址范围,段的基地址都为0,这样,逻辑地址/线性地址在数值上就相同了。

接下来的重点是分页,即从线性地址到物理地址的映射过程

linux为了兼容32位和64位的CPU,需要一个统一的页面地址模型,目前常用的是四级页表模型。里面有四级页表

第一级:PGD:页全局目录 page global directory

第二级:PUD:页上一级目录

扫描二维码关注公众号,回复: 11522325 查看本文章

猜你喜欢

转载自blog.csdn.net/f2157120/article/details/107473200
今日推荐