操作系统的实模式和保护模式是处理器操作模式的概念,与操作系统的发展密切相关。它们代表了计算机硬件和软件发展的不同阶段,并解决了特定历史时期的技术问题。
最初的处理器(如 Intel 8080)只有 16 根地址线,因此只能寻址高达 64KB 的内存。随后,Intel 8086 和 8088 处理器引入了实模式,并设计为具有 20 根地址线,从而提供了 1MB 的寻址能力。随着计算机技术的发展,这种寻址能力变得不够用。因此,Intel 在 80286 和更高级的处理器中引入了保护模式,它在 80386 中由于 32 根地址线而支持高达 4GB 的内存寻址。为了保持向后兼容性,新处理器在启动时进入实模式,作为操作系统启动过程的一部分。
实模式(Real Mode)
实模式(Real Mode)是 Intel x86 架构处理器的一种运行模式。它是最早的 CPU 运行模式,也是计算机开机后处理器的默认模式。
在实模式(Real Mode)出现之前,计算机系统使用的是更为基础的操作方式,这些方式通常与特定的硬件体系结构紧密相关。实模式的出现和普及与个人电脑(PC)和 Intel x86 架构的发展密切相关。
实模式出现之前
在实模式出现之前,早期的处理器(如 Intel 8080 和 Zilog Z80)直接操作物理地址空间,它们通常能够直接寻址较小的内存空间(如 64KB)。因为处理器的寻址能力直接受限于其地址总线的宽度。例如,8080 和 Z80 都有 16 位的地址总线,这意味着它们可以生成 2^16(即 65536)个不同的地址,从而直接寻址 64KB 的内存空间。增加地址线数量会显著增加处理器的复杂性和成本。
此外那时还没有复杂的内存管理机制如分段或分页。程序直接与物理内存交互,没有虚拟内存的概念。以及由于技术限制,早期的计算机系统通常内存较小,硬件资源有限,因此它们的操作系统和应用程序比现代系统更简单。
实模式解决的问题:
-
扩展内存寻址能力:
- 实模式为 Intel 8086 和 8088 处理器提供了 1MB 的物理地址空间,这是相对于之前的 64KB 的显著提升。
- 实模式使用段基址(Segment)和偏移地址(Offset)的组合来形成物理地址。具体的地址计算公式为:物理地址 = 段基址 * 16 + 偏移地址。比如,若段基址为
0x1000
,偏移地址为0x0050
,则物理地址为0x10000 + 0x0050 = 0x10050
。
-
向后兼容性:
- Intel 8086/8088 处理器在实模式下能够兼容运行旧的 8080 程序,有助于平滑技术过渡。
实模式是个人电脑发展早期的一个重要里程碑,它为当时的计算需求提供了充分的支持,并为后续保护模式和现代操作系统的发展奠定了基础。随着计算机技术的发展,尤其是内存容量的增加和多任务需求的出现,后续的保护模式成为了必然的技术发展方向。
段基址和偏移地址的设计
-
解决寻址限制:
- 通过将内存分成多个段(每个段最大 64KB),并在这些段内使用偏移量,8086 能够访问超过 64KB 的内存空间。
-
物理地址计算:
- 物理地址是通过将段基址乘以 16(或向左移位 4 位)然后加上偏移量来计算。这种方法允许处理器利用 16 位寄存器在 1MB 的内存范围内有效地寻址。
-
兼容性和扩展性:
- 这种设计使得新的 16 位处理器能够运行为旧 8 位处理器编写的软件,并且提供了一种相对简单的方式来扩展寻址能力。
实模式存在哪些问题
-
内存寻址限制:
- 实模式下,处理器只能访问最多 1MB 的内存。这是因为实模式下地址线被限制为 20 位。
-
无保护模式的特性:
- 实模式不提供现代操作系统所需的特性,如虚拟内存、内存保护、多任务等。
- 所有程序都有完全的硬件访问权限,可以直接操作内存和硬件设备。这使得系统容易受到恶意软件的影响。
- 这种设计在当时是一个创新的解决方案,有效地扩展了处理器的寻址能力,同时保持了向后兼容性。
- 然而,这也导致了内存寻址变得复杂,且内存管理效率不高。特别是,由于段的重叠和内存碎片问题,开发人员和编译器需要更小心地管理内存。
- 随着技术的发展,特别是处理器和操作系统的进步,这种寻址方式逐渐被更高效的模式(如保护模式和长模式)所取代。
总之,实模式下的段基址和偏移地址组合是一种针对当时技术限制的解决方案,它在扩展寻址空间的同时保持了向后兼容性,但也带来了一定的复杂性和局限性。
保护模式(Protected Mode)
保护模式(Protected Mode)是 Intel x86 架构处理器的一种运行模式,它提供了对内存、执行特权等的硬件级别保护。保护模式首次出现在 1982 年推出的 Intel 80286 处理器中,并在随后的 x86 系列处理器中得到了扩展和完善。保护模式的引入标志着从简单、有限的实模式(Real Mode)向更复杂、功能丰富的操作模式的转变。
发展脉络与出现原因:
- 保护模式首次在 1982 年的 Intel 80286 处理器中引入,并在 1985 年的 Intel 80386 处理器中得到完全实现。
- 随着计算机应用的复杂性增加和多任务需求的出现,实模式的内存限制和缺乏保护机制成为了瓶颈。
- 保护模式提供了更高的内存寻址能力(最初是 16MB,80386 扩展到 4GB),以及内存保护、多任务支持等特性。
解决的问题:
保护模式(Protected Mode)是为了解决实模式(Real Mode)存在的问题和局限性而引入的。实模式的主要局限性包括有限的内存寻址能力(只有 1MB)、缺乏有效的内存保护机制、以及无法高效地支持多任务处理等。保护模式通过以下几种方式解决了这些问题:
1. 扩展内存寻址能力
- 更高的内存限制:保护模式扩展了内存寻址能力,初期如在 80286 中能够寻址高达 16MB 的内存,而在 80386 及以后的处理器中能夠寻址高达 4GB 的内存。
- 分段和分页:保护模式引入了更加复杂的分段和分页内存管理机制。分段机制允许定义不同的内存段,每个段有自己的基址、大小和访问权限。分页机制允许将物理内存分割成固定大小的页面,实现虚拟内存。
2. 引入内存保护
- 防止非法内存访问:在保护模式下,每个内存段都有相应的访问权限,操作系统可以限制程序只能访问授权的内存区域,防止了程序间的相互干扰和非法内存访问。
- 防止操作系统崩溃:保护模式增强了操作系统的稳定性,因为用户程序无法访问操作系统内核和其他程序的内存区域。
3. 支持多任务处理
- 任务切换:保护模式支持硬件级别的任务切换机制,使得操作系统能够更有效地管理和切换多个同时运行的程序。
- 提高系统效率:多任务处理的支持使得计算机系统能够同时执行多个应用程序,提高了计算机系统的使用效率和响应速度。
4. 实现用户和内核空间的分离
- 特权级别:保护模式引入了四个特权级(Ring 0 到 Ring 3),操作系统内核通常运行在最高特权级(Ring 0),而用户程序运行在较低的特权级别,从而实现了用户空间和内核空间的有效隔离。
总的来说,保护模式通过提供更高级的内存管理、内存保护、多任务支持以及特权级别机制,解决了实模式存在的许多限制和问题。这些改进为现代操作系统的发展提供了必要的硬件支持,使得计算机系统能够运行更加复杂、功能丰富的操作系统和应用程序。
总结
实模式和保护模式的发展反映了计算机硬件和操作系统从简单到复杂的演变过程。实模式适用于早期简单的计算机系统,而保护模式则满足了现代计算机系统对高效率、多任务处理和系统稳定性的需求。随着技术的发展,现代操作系统(如 Windows、Linux 等)几乎都在保护模式下运行,以充分利用现代处理器提供的高级功能和更大的内存空间。