实模式和保护模式

1 问题的由来

在学习操作系统引导启动程序部分,看到寻址模式由实模式切换到保护模式,不知道它们二者有何区别。

2 实模式

对于8086/8088这类16位处理器,寄存器都是16位的。

而8086/8088CPU有20根地址总线,即寻址空间可以达到220 = 1M。

然而16位的寄存器只能组合出216 = 64K个地址。

于是使用两个16位寄存器来寻址:一个寄存器叫段寄存器;另一个寄存器叫偏移寄存器。

内存地址 = 段寄存器<<4 + 偏移寄存器的值。

例如段寄存器 = 0x500,偏移寄存器的值是0x100;则内存地址为0x5100。

段寄存器与偏移寄存器的组合方式如下表所示。

CS:IP  指向指令的位置
SS:SP 指向栈顶
SS:BP 可指向整个栈
DS:偏移量 指向数据段
ES:偏移量 指向附加段

3 保护模式

首先保护模式是针对32位CPU的,32位的CPU寻址空间达到232 = 4G。

实模式下,可访问内存中的任何一个位置,不安全。

为了限制每个段的访问空间,设置了一个表。表的名字为GDT(Global Descriptor Table 段描述符表),表里有很多表项,每个表项8个字节。

下图为一个表项的信息。

 一个段就有一个相应的表项来限制它。

保护模式下:内存地址=段基址+偏移地址。

4 疑问

如今的CPU都是64位了,寻址模式是什么?

参考

CPU的实模式和保护模式(一)

https://zhuanlan.zhihu.com/p/42309472

「学习笔记」对实模式/保护模式的三种访问内存机制的理解

https://www.cnblogs.com/bEngi1/p/12173719.html

汇编学习1--寄存器学习

https://www.wandouip.com/t5i316078/

posted on 2020-07-07 21:18  辉哥54110  阅读(487)  评论(0编辑  收藏  举报