保护模式是什么

  保护模式 (Protected Mode,或有时简写为 pmode) 是一种 80286 系列和之后的 x86 相容 CPU 操作模式。保护模式有一些新的特性,设计用来增强 多任务 和系统稳定度,像是内存保护,分页 系统,以及硬件支援的 虚拟内存。大部分的现今 x86 操作系统 都在保护模式下运行,包含 Linux、FreeBSD、以及 微软 Windows 2.0 和之后版本。

保护模式

  另外一种 286 和其之后 CPU 的操作模式是 真实模式,一种向前相容且关闭这些特色的模式。设计用来让新的芯片可以执行旧的软件。依照设计的规格,所有的 x86 CPU 都是在真实模式下开机,来确保传统操作系统的向前相容性。在任何保护模式的特色可用前,他们必须要由某些程式手动地切换到保护模式。在现今的电脑,这种切换通常是由 操作系统 在开机时候必须完成的第一件工作的一个。它也可能当 CPU 在保护模式下运行时,使用 虚拟86模式 来执行设计给真实模式的程式码。

  尽管用软件的方式也有某些可能在真实模式的系统下使用多工,但保护模式下内存保护的特色,可以避免有问题的程式破坏其他工作或是 操作系统 核心所拥有的内存。保护模式也有中断正在执行程式的硬件支援,可以把 execution content 交给其他工作,得以实现 先占式多工。

  大部分可以使用保护模式的 CPU 也拥有 32 位元暂存器 的特色 (例如 80386 系列和其后任何的芯片),导入了融合保护模式而成为 32 位元处理的概念。80286 芯片虽有支援保护模式,但是仍然只有 16 位元暂存器。Windows 2.0 和之后版本中的保护模式增强称为 "386 增强模式",是因为他们除了保护模式外,还需要 32 位元的暂存器,并且无法在 286 上面执行 (即使 286 支援保护模式)。

  即使在 32 位元芯片上已经打开了保护模式,但是 1 MB 以上的内存并无法存取,是由于一种仿照 IBM XT 系统设计特性的 memory wrap-around(内存连续) 的因素。这种限制可以由打开 A20 line 来回避。

  在保护模式下,前面 32 个中断都是保留给 CPU 例外处理用。举个例子,中断 0D (十进制 13) 是 一般保护模式错误 而 中断 00 是 除以零。

推荐阅读