南大Mooc计算机体系基础--IA_32地址转换

IA_32地址转换

逻辑地址 –> 线性地址 –> 物理地址
|-虚拟地址的两种表示-|

分段:逻辑地址到线性地址

逻辑地址=段选择符+有效地址
有效地址=基址+比例变址+位移量
段选择符:由指令显示或隐式给出,存在段寄存器中(CS,SS,DS,ES等)
段选择符=13位段表索引+全局/局部段标志+访问级别(0最高,3最低)
由段表索引去段表查到相应的段基址
段表:段描述符8B,每一项描述段的段基址,长度,权限等

项分两类:

1. 普通段描述符(用户内核的代码段,数据段)
2. 系统控制段描述符(特殊系统控制段LDT,TSS,控制转移段)

表分三种类型:

1. GDT:全局段表,所有任务共有的段,包括用户内核数据段代码段TSS(任务状态段)等
2. LDT:某个任务专有的段
3. IDT:中断描述符表

不可见寄存器:

1. 段描述符cache:
    段表是存在主存里的,为了加快速度,在第一次使用后把段表加入到cache
2. TSS/LDT寄存器:存放段选择符,其描述符在GDT中
3. GDT/IDT寄存器:给出段表的主存首地址,界限

线性地址=段基址+段偏移(有效地址)

根据逻辑地址的段选择符,去查(cache/主存)段表得到段基址,相加得到线性地址

linux对段表的简化:

所有的段基址都是0,也就是逻辑地址=线性地址
MMU:地址转换部件,实现地址转换的硬件

分页:线性地址到物理地址

页目录:整个4GB都要分页,一张页表太大,所以分成1K(页目录) * 1K(页表) * 4KB形式
页目录:1k项,每项对应一张页表
页表:1k项,每项对应一页4KB
线性地址通过查二级页表+页内偏移的方式访问主存

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值