段寄存器在实模式下和保护模式下的作用有什么不同

来源:互联网 发布:淘宝排名权重 编辑:程序博客网 时间:2024/04/30 14:03
先说点相关的:80x86中除8086/8088只能在实模式下工作之外,其他微处理器均可在实模式和保护模式下工作
好了,从定义和区别开始吧。
先从实模式下入手:存储器地址的分段,实模式下允许的最大寻址空间为1MB(因为8086/8088地址总线宽度是20为 2^20=1048576=1024k=1M)其他的微处理器也为1M 实际上实模式就是为8086/8088而设计的工作方式,它要解决在16位字长的机器里怎么提供20位地址的问题,而解决的方法是采用存储器地址分段的方法。
机器规定:从0地址,每16个字节为一小段,而在1MB存储器里每个储存单元都有一个唯一的20为地址(物理地址)以便CPU访问存储器,所以这个20位物理地址只好由16位段地址和16位偏移地址组成,把段地址(因为是首地址,所以低四位全为0,只取高16位)左移4位再加上偏移地址值就形成物理地址,即16Dx段地址+偏移地址=物理地址(决定了唯一性)

从80826开始,就引出了保护模式,由于实模式只提供了1MB的寻址空间,不够用,而且随着多任务出现对寻址空间的要求越来越高,如80826就提供了16MB,80836就提供了达4GB的地址空间,而且虚拟存储器也能扩展空间,而保护模式寻址则对虚拟存储特性有很好的支持。

下面是保护模式和实模式的区别:
在实模式存储器寻址时,程序员只要在程序中给出存放在段寄存器中的段地址并在指令中给出偏移地址,机器就会自动用段地址左移四位加上偏移地址,求得物理地址,从而所要的储存单元的内容,因此,程序员在编程时并未直接指定所选存储单元的物理地址,而是给出了一个逻辑地址(即段地址:偏移地址),是机器自动用某种方法来取得所选的物理地址的。

在保护模式寻址时,仍然要求程序员在程序中指定逻辑地址,只是机器采用了一种比较复杂或者说比较间接的方法来求得物理地址,因此,对程序员编程来说,并未增加复杂性。在保护模式下,逻辑地址是由选择器和偏移地址组成的,选择器存放在段寄存器中,但是并不能直接表示段地址(需地址转换),而是操作系统通过一定的方法取得段地址,再和偏移地址相加来表示物理地址,这个一个区别,另外一个区别:保护模式的偏移地址为32位长,最大段长可由64KB扩大到4GB。




0 0
原创粉丝点击