linux内核学习---1. linux逻辑地址到物理地址的过程

主要参考的是《深入理解linux内核》这本书,这里讨论的是intel的8086体系
1. 逻辑地址包含两个部分,段选择符和偏移量。
2. 先检查段选择符的TI字段,该字段决定了段选择符表是全局选择符表(GDT)还是局部选择符表(LDT)。决定了之后,可以从对应的寄存器里面得到线性基地址(GDT---gdtr寄存器,LDT---ldtr寄存器).
3. 用段选择符的index字段的值乘以8(一个段描述符的大小),再加上寄存器中的值,得到段描述符的地址;
4. 用逻辑地址的偏移量加上段描述符的Base值,得到线性地址。
5. 线性地址含有三个部分,Directory(目录,最高10位),Table(页表,中间10位),Offset(偏移量,最低12位,这个部分决定了一页的大小是4KB);
6. 在控制寄存器cr3中保存了正在使用的页目录的物理地址,从这里面就可以决定页目录。
7. 根据Directory的值,可以确定页目录项(初开始我以为Directory决定了页目录,但是实际上,这个部分决定的目录项。也就是从这个部分的值,再加上cr3寄存器中的值,可以确定目录项,目录项指向页表。简单说就是cr3+Directory->页目录项=页表)
8. Table字段决定了页表中的表项,而该表项含有的是页所在页框的物理地址。
9. Offset字段决定页框内的相对位置。因此页框物理地址加上Offset值得到物理地址
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值