8086处理器保护模式基础(段模式)

保护模式是通过对程序使用的存储区采用分段分页的存储管理机制,达到分级使用,互补干扰的保护目的,为每个任务提供一个虚拟的处理器,使每个任务可以单独执行,而不是像实模式一样,只有一个处理器。

以32位处理器为例,8个通用寄存器分别是eax,ebx,ecx,edx,esi,edi,栈顶寄存器esp,栈帧寄存器ebp。还有指令寄存器eip,以及六个段寄存器,CS代码段地址寄存器,存放代码段的起始地址,DS数据段地址寄存器,存放数据段的起始地址,SS堆栈段地址寄存器,存放堆栈段的起始地址,ES附加段地址寄存器,存放附加段的起始地址,FS是32位新增的辅助段,GS是32位新增的辅助段。

段选择子在段描述符的存储表中找到段对应的基地址,然后基地址加上段中的偏移地址,就是资源在内存中的物理地址。

保护模式的作用就是,分清不同任务使用的存储区域,不允许随便使用其它任务的数据和代码,每个任务都有自己独立的段。

必要条件:要标记每段存储区的所有者或被使用的权限级别,要标记使用者是谁,CPU判断此次访问是否合法。

每个段描述符由,段基地址(32位),段长度(20位,段长度单位是2的12次方),访问权限,所以段描述符的长度为64位。因为段寄存器只有16位,所以用段描述符表来存储描述符,段寄存器的高13位作为索引来访问此表,获得64位的段描述符。

GDT全局描述符表,主要存放操作系统和各任务公用的描述符

GDTR   48位高32位存放GDT基址,低16为存放GDT限长。

LDT局部描述符表,主要存放各个任务的私有描述符

LDTR   16位,高13为存放LDT在GDT中的索引值。

段寄存器高13位用来存放描述表的索引号,低2位表示使用描述符的特权级别,中间一位表示该描述符从GDT还是LDT找,0表示GDT,1表示LDT。

具体过程,首先是通过GDTR找到GDT的地址,并获取GDT长度,然后通过LDTR的高13位作为索引,找到任务在GDT中的描述符,通过该描述符,获取任务的LDT地址,最后,通过段寄存器的高13位作为索引在任务的LDT中找到描述符,得到段基地址,最后用段基地址加上偏移地址,计算出资源的物理地址。下图为此寻址过程的图示。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值