分页机制,一点小小的理解,os 于渊的树上的

mov eax, LinearAddrDemo
shr eax, 22
mov ebx, 4096
mul ebx
mov ecx, eax
mov eax, LinearAddrDemo
shr eax, 12
and eax, 03FFh ; 1111111111 (10 bits)
mov ebx, 4
mul ebx
add eax, ecx
add eax, PageTblBase1
mov dword [es:eax], ProcBar | PG_P | PG_USU | PG_RWW

代码来自于渊的书籍,自己动手写操作系统




今天看到了分页的转换,主要是把两个函数用切换页的方式来显示执行。



线型地址的高10位,10bits是3ff = 1023, 也就是1024个不同的编号。

从高10位找到了PDE, 假设PED位为第x个, 但是一个PDE对应1024个PTE,每个PTE有4个字节,所以相对于PTE基地址偏移了a1 = x*1024*4个字节。

从中间10位找到了表项的位置,也就是第几个表项,设为y,然后每个表项4个字节,他的偏移就是a2 = y*4个字节,所以相对于基地的偏移是PageTblBase+a1+a2

a1为页表相对于PageTblBase的偏移,a2为该指定页表里的表项的偏移地址。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哈哈世界

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值