CPU分段、分页寻址

来源:互联网 发布:软件测评费用标准 编辑:程序博客网 时间:2024/05/21 22:55

--------------------------------------------------------------------->
分段寻址:逻辑地址 --> 线性地址(32位)

逻辑地址:段寄存器(16位):偏移地址(32位)

分段寻址过程(由CPU自动完成):
┏━━━━━━━┓
┃  GDTR高32位  ┃--> GDT基地址
┗━━━━━━━┛

 根据段寄存器TI位,判断段寄存器高13位是GDT的位置索引还是LDT的位置索引。
 
 若TI = 0:
┏━━━━━━━━━━━━━━━━━┓
┃  段寄存器高13位 * 8 + GDT基地址      ┃ --> GDT中描述符物理地址
┗━━━━━━━━━━━━━━━━━┛
┏━━━━━━━━┓
┃  解析GDT描述符 ┃ --> 目标段基地址(32位)
┗━━━━━━━━┛
┏━━━━━━━━━━━━━━━━━━━┓
┃  目标段基地址(32位) + 偏移地址(32位)      ┃--> 线性地址
┗━━━━━━━━━━━━━━━━━━━┛
 
 若TI = 1:
┏━━━━━━━━━━━━━━━━┓
┃  LDTR(高13位) * 8 + GDT基地址     ┃--> GDT中描述符物理地址
┗━━━━━━━━━━━━━━━━┛
┏━━━━━━━━┓
┃  解析GDT描述符 ┃--> LDT基地址(32位)
┗━━━━━━━━┛
┏━━━━━━━━━━━━━━━━━┓
┃  段寄存器高13位 * 8 + LDT基地址      ┃--> LDT中描述符物理地址
┗━━━━━━━━━━━━━━━━━┛
┏━━━━━━━━┓
┃  解析LDT描述符  ┃--> 目标段基地址(32位)
┗━━━━━━━━┛
┏━━━━━━━━━━━━━━━━━━━┓
┃  目标段基地址(32位) + 偏移地址(32位)      ┃--> 线性地址
┗━━━━━━━━━━━━━━━━━━━┛
 
--------------------------------------------------------------------->
分页寻址:线性地址 --> 物理地址

虚拟地址:
┏━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┓
┃  nPDE(31..22)     ┃  nPTE(21..12)     ┃   offset(11..0)           ┃
┗━━━━━━━━┻━━━━━━━━┻━━━━━━━━━┛
注意:
        若开启分页机制,则CPU根据页目录表和页表进行地址转换
        若没有开启分页机制,则线性地址就对应于内存上的物理地址

分页寻址过程:
┏━━━━━━━━━┓
┃  cr3高20位 * 4k       ┃ --> 页目录表基地址
┗━━━━━━━━━┛
┏━━━━━━━━━━━━━━┓
┃  页目录表基地址 + nPDE * 4    ┃ --> 页目录表项(32位)
┗━━━━━━━━━━━━━━┛
┏━━━━━━━━━━━━━┓
┃  页目录表项高20位 * 4k        ┃ --> 页表基地址
┗━━━━━━━━━━━━━┛
┏━━━━━━━━━━━━━┓
┃  页表基地址 + nPTE * 4        ┃ --> 页表项
┗━━━━━━━━━━━━━┛
┏━━━━━━━━━━━┓
┃  页表项高20位 * 4k        ┃ --> 目标页基地址
┗━━━━━━━━━━━┛
┏━━━━━━━━━━━━━┓
┃  目标页基地址 + offset          ┃ --> 物理地址
┗━━━━━━━━━━━━━┛
-------------------------------------------------------------------->

 

原创粉丝点击