16位微处理器
8086寄存器组成
8086/8088包括:4个16位数据寄存器,2个16位指针寄存器,2个16位索引寄存器,分为四组。

在通用寄存器中,这些寄存器除了可以满足指定的特殊用途为64KB,因此EIP的高16位必须全部为0,这仍然等效于16位IP。
请注意,在32位模式下,段寄存器仍为16位。
在80836中,标志寄存器也已扩展为32位,标记为EFLAG。
在其中添加
IO特权级别IOPL:当前正在运行的程序或任务的CPL必须小于或等于此IOPL才能访问I / O地址空间。
嵌套任务标志NT(嵌套任务)
重启标志RF(重置标志)

虚拟8086标记VM:设置此标记后,将打开虚拟8086模式,并在重置该标记后返回保护模式。
控制寄存器
控制寄存器(CR0〜CR3)用于控制和确定处理器的操作模式以及当前正在执行的任务的特性。四个控制寄存器均为32位。

CR0:包含用于控制CPU的操作模式和状态的徽标
CR1:保留。
CR2:存储导致页面错误的线性地址
CR3:包含页面目录表的物理内存基地址
CR0中的保护控制位:
PE:CR0的位0为保护使能标志。 (CR0的最低位)
设置此位后,保护模式将打开,并在复位时进入实地址模式。该标志仅启用段级保护,而不启用分页机制。要启用分页机制,必须同时设置PE和PG。
PG:CR0的第31位是寻呼标志。 (CR0的最高位)
当该位置1时,将启用分页机制,而在复位时,将禁用分页机制。此时,所有线性地址都等同于物理地址。
请注意,必须先打开PE标志,然后再打开此标志,否则CPU会生成一般的保护异常。
更改PG位的代码性地址空间和物理地址空间中必须具有相同的地址。这部分具有相同地址的代码充当了分页和未分页世界之间的桥梁。
如果PE =0、PG = 0,则处理器以实地址模式工作。 (与早期的实模式操作系统兼容)
如果PE =1、PG = 0,则处理器以段保护模式工作,而没有分页机制(与段管理兼容的操作系统)
如果PE =1、PG = 1,则处理器以段页面保护模式工作
首次打开系统电源时,处理器将重置为PE = 0和PG = 0(即实模式状态),以允许引导代码在启用分段和分页之前初始化这些寄存器和数据结构。机制。
[程序原理]
CPU如何处理物理地址?
在实模式下,使用段寄存器向左移4位并加上偏移量。在保护模式下,使用段描述符中的基地址加上偏移量。两者实际上是相同的。

当英特尔推出80286时,其地址空间变为24位。从8086中的20位到24位,自然增加了段寄存器。实际上,段寄存器和指针都已被放大,但是出于保护的原因,程序看不到放大的部分。 80386之后,地址从24位增加到32位。
在8086中,CPU仅具有“可见部分”,但是在80286之后,“不可见部分”已经包含地址值。 “可见部分”被简化为标签,不再需要参与地址形成操作。地址的形成始终从“不可见部分”中获取基地址值,并加上偏移量以形成地址。
也就是说,在实模式下,当将一个段寄存器加载一个值时,“不可见部分”的段限制设置为FFFFH,并且将向基地址部分加载剩余4位的值,将段属性Part设置为16位0特权级别。此过程与在受保护模式下加载段寄存器相同,除了受保护模式的“不可见部分”是从描述表中获取的,而实模式是一组固定过程。
对于CPU在转换地址时,实模式和保护模式没有区别,它仅使用基地址(“不可见部分”)添加偏移量。
在实模式下的段寄存器使用固定的形成方法加载,因此不需要保护模式的“描述符”,因此可以保持与8086/8088的兼容性。并且“描述符”仅用于加载段寄存器的“不可见部分”。 (保护模式。它还实现了用于存储段属性等的保护机制的数据结构。)
CPU的地址格式与“可见部分”的当前值无关。这也解释了为什么以下代码在进入保护模式时仍能正确运行,并且代码段寄存器CS的值仍然是进入保护模式之前或从保护模式返回到实模式时的实模式值,在更改代码段CS之前,程序可以正常运行,并且不会“突变”到CS左移4位的地址。
例如:在保护模式下,CS是08H的选择器,在实模式下,CS仍是08H,但是地址不会突然变成80H加偏移量。因为地址的形成与段寄存器的“可见部分”的当前值无关,所以该值仅在加载时对CPU有用。 (实模式和保护模式仅在将值加载到段寄存器中时处理不同,并且后续处理相同)
地址的形成与CPU的工作模式无关,也就是说,实模式和0特权保护模式在不分页时完全相同。在了解了这种机制之后,可以在实模式下处理通常被认为仅在保护模式下才能完成的事情,例如访问整个机器的内存。不用担心,可以更容易地理解保护模式下的许多术语。例如,选择器是“可见部分”,而描述符是为“不可见部分”设置的。
[后记]
内存管理实际上是CPU制造商提出的内存管理解决方案,它提供了一种硬件机制来帮助操作系统实现它。操作系统的工作是维护相关数据结构并执行特定操作。
CPU提供了各种用于查询段表中段的段寄存器,还提供了用于段页存储器管理的控制寄存器。诸如段表和页表之类的数据结构由操作系统实现。保持。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/shoujiruanjian/article-350305-1.html
有些人天天骂马云淘宝卖假货