- Published on
操作系统内存寻址
- Authors

- Name
- Mao
CPU工作的两种模式:实时模式与保护模式
逻辑地址(logical address),虚拟地址(virtual address),线性地址(linear address),物理地址(physical address)。
实时模式内存访问方式:
物理地址 = 段基址<<4 + 段内偏移
线性地址与物理地址对应关系:
if 未启用内存分页 {
物理地址 == 线性地址
} else {
物理地址 = 分页管理函数(线性地址)
}
逻辑地址与线性地址对应关系:
内存表达式 = segment:offset
if 实时模式(real mode) {
线性地址 = segment<<4 + offset
线性地址 == 物理地址
} else { //保护模式(protected model)
gdt/ldt-item = GDT/LDT(segment) //保护模式下segment为 GTD/LDT 表的索引,通过 segment 找到 GTD/LTD 表项
segment-base = gdt/ldt-item >> 32 //GTD/LTD 表项长度为8字节,结构为: Base/32bit(段的基地址), Limit/20bit(段的大小), Flags/12bit(段的访问权限)
线性地址 = segment-base + offset
}
Reference
MIT 6.828 JOS学习笔记6. Appendix 1: 实模式(real mode)与保护模式(protected mode)