再具体写一个虚拟地址到物理地址的过程

好嘞,下面是一个图示,展示 32 位分页机制 中,虚拟地址到物理地址 的翻译过程,包括 页目录(PDE)页表(PTE) 中保存的内容👇


🧭 32 位虚拟地址结构(分页机制)

┌──────────────┬──────────────┬────────────────────┐
│ 目录索引 (10)│ 页表索引 (10) │ 页内偏移 (12位)     │
├──────────────┼──────────────┼────────────────────┤
│ Bits 31~22   │ Bits 21~12   │ Bits 11~0          │
└──────────────┴──────────────┴────────────────────┘
           ↓              ↓               ↓
        PDE索引         PTE索引          偏移量

🔄 地址转换流程图

[虚拟地址:0x12345678]
        ↓
┌────────────────────────────┐
│ 页目录基址(CR3)          │
└────────────┬───────────────┘
             ↓
        目录索引 = 0x48
        ↓
┌─────────────────────────────────────────────┐
│ 页目录项 PDE[0x48]                          │
│ → 内容:页表的物理地址 = 0x001AB000 + 标志位 │
└────────────┬────────────────────────────────┘
             ↓
       页表地址 = 0x001AB000
       页表索引 = 0xD1
             ↓
┌─────────────────────────────────────────────┐
│ 页表项 PTE[0xD1]                             │
│ → 内容:物理页框地址 = 0x003CF000 + 标志位   │
└────────────┬────────────────────────────────┘
             ↓
     页内偏移 = 0x678
             ↓
┌─────────────────────────────────────────────┐
│ 最终物理地址 = 0x003CF000 + 0x678 = 0x003CF678 │
└─────────────────────────────────────────────┘

📦 页表/目录项结构(PDE/PTE)

位数范围内容
31~12物理页框地址(高20位)
11~0标志位(存在、读写、用户等)

例如:

PTE = 0x003CF007
→ 物理地址:0x003CF000
→ 标志位:P=1, RW=1, US=1

如果你有兴趣,我还可以做成图像(带箭头、颜色那种视觉图),要不要?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值