本文不讨论技术细节,纯粹是为了方便读者理解实模式和保护模式的具体概念,并且对具体概念建立明确的边界意识。这些概念在笔者学习过程中一度难以理解,混淆不清。希望本文可以帮助到操作系统的初学者。
什么是实模式
模式 是指 CPU 的运行环境,它决定了处理器如何执行指令、管理内存以及访问硬件资源。实模式(Real Mode) 是 x86 架构的一种处理器模式,也是最基础的运行模式。在了解实模式是怎么来的之前,我们需要简单回顾计算机早期的发展及 Intel 8086 的设计目标。
在 Intel 8086 之前的处理器(8080,8085)使用 16 位地址总线,只能访问 2^16=64KB 的内存。Intel 在设计 8086 时,需要它既能突破 64KB 的限制,又能与之前的 8080 和 8085 保持软件兼容性。于是8086扩展地址总线到 20 位,支持 1MB 的物理地址空间。超过16位的地址空间使得Intel引入了 段:偏移 的地址计算方式。这种方式既保持了对 16 位软件的兼容性,又允许使用更大的内存。
之所以叫实模式,是因为在这样的早期计算机系统中,所有的内存地址都是直接映射到物理内存。“实” 表示实模式的内存寻址是直接的,没有任何复杂的虚拟化或保护机制。
而后Intel 在 80286 处理器中引入了 保护模式(Protected Mode)。因为我们熟悉的现代操作系统都运行在保护模式下,这个名称反而往往不被单独提及。保护模式突破了 1MB 的内存限制,并提供内存保护、多任务支持等功能。保护模式下使用 24 位或更高的地址总线,支持更大的地址空间(80286 支持 16MB,80386 支持 4GB)。
真正将“实模式”定义为一个模式名称,就是从80826开始的。为了与保护模式区分,80286 在复位时默认运行在 实模式,即完全兼容 8086 的运行环境。从此,“实模式”成为了 x86 处理器中一个明确的模式名称,用来描述与保护模式(或后来的长模式)相对的传统模式。
(复位(Reset) 是 CPU 的初始化过程,各种寄存器被初始化为固定的值,然后CPU 从指定的固定地址,通常是 BIOS 的入口点,开始执行代码。虽然 80286 引入了保护模式,但复位后默认运行在实模式中,是为了 兼容8086,以便运行早期的软件(如 MS-DOS)和旧硬件的 BIOS。)
8080/8085 并没有被称为“实模式”,因为当时处理器只有一种模式,没有需要对比的“保护模式”。8080/8085 可以看作是“只有 64KB 的简单实模式”。因而实模式专指8086 引入了段:偏移机制和 1MB 的内存空间的运行模式。这两点也是我们学习实模式时的主要学习方向。
什么是保护模式
保护模式随着实模式的淘汰顺理成章的推出。淘汰就意味着改善不足。因而随着分析实模式的缺点,我们可以自然而然的得出什么是保护模式。
实模式的缺点
实模式只能访问 1MB 的内存,其中常规内存又占到 640KB。这已经包括操作系统、BIOS、程序和设备内存。因而操作系统的功能只能非常简单,否则无法为用户程序留下足够的空间。实模式缺乏硬件支持的多任务切换功能(保护模式提供了硬件级的多任务支持,主要依赖任务状态段(Task State Segment, TSS)暂不进一步说明),CPU 一次只能运行一个程序。(实模式本质上是单任务的,但可以通过软件技术模拟多任务,但是非常不常见)操作系统(如 MS-DOS)会完全将 CPU 控制权交给正在运行的程序。实模式程序可以随意访问所有内存,包括操作系统和其他程序的数据。也可以说实模式没有特权级概念,所有程序都能直接操作硬件,容易引发系统崩溃。
总结来说主要有三点,即内存限制,缺乏隔离机制,缺乏多任务机制。进而很容易想到,保护模式就是改善了这些缺点的新的运行模式。
从实模式到保护模式:现代操作系统的起点
保护模式的引入是现代操作系统发展的关键。保护模式引入多任务支持,提供硬件任务切换(TSS)、优先级调度和中断管理。保护模式引入内存保护,使程序无法访问系统或其他程序的内存,保证稳定性和安全性。保护模式引入虚拟内存,支持更大的地址空间,操作系统可以加载更多的程序。保护模式引入用户模式和内核模式:提供特权级隔离,程序不能直接操作硬件。即,从保护模式开始,操作系统才真正成为资源管理器,而不再是简单的程序加载器。
保护模式从80286 开始,引入硬件支持的任务切换(TSS,并提供内存保护和任务隔离。从80386 开始支持虚拟内存和更灵活的任务调度。有时会提到长模式,其实就是扩展地址空间到 64 位的保护模式。在现代,操作系统不再完全依赖 TSS,而是通过分页、内核线程和中断实现更加灵活的多任务切换。
如果还是不理解,我们做一个社区快递服务的比喻,方便大家理解:
特征 | 实模式(简单社区) | 保护模式(现代社区) |
---|---|---|
访问权限 | 所有人能进任何房间,没有门锁,想干嘛就干嘛 | 每个房间有门锁,不同住户只能访问自己授权的房间 |
地址空间 | 储物柜容量最多 1MB,编号从 0 到 1MB | 储物柜容量可以很大(如 4GB 或更高),不同住户看见的编号都是单独定制的(虚拟地址)。 |
任务支持 | 一次只能有一个住户使用储物柜 | 多个住户可以同时存取快递,调度机制保证公平性和效率 |
硬件使用 | 每个人可以直接使用社区的所有公共设施 | 公共设施有管理员(操作系统)协调,防止资源争抢 |
安全性 | 完全没有安全性 | 强安全机制,住户不能访问其他人的储物柜或文件 |
模式和操作系统
模式(Mode) 和 操作系统(Operating System) 是两个不同层次的概念,但它们紧密相关,尤其是在计算机体系结构中。模式 是指 CPU 的运行环境,而操作系统(OS) 是运行在计算机上的一组 系统软件,用于管理硬件资源和为应用程序提供运行环境。可以说模式是操作系统的基础,提供了 CPU 的基本功能,例如内存保护、任务切换等,操作系统必须依赖这些功能来实现更高层次的功能。
还是做一个比喻,模式 就像房子的结构和设施,决定了房子的基本功能,比如是否有门(内存保护)、有几个房间(内存空间)、是否有门禁(特权级)。直接由硬件(房屋设计)决定,无法改变。操作系统 就像物业公司,决定了住户如何使用房子,比如哪些房间归住户用(进程分配)、哪些房间是公共的(内核空间)。操作系统必须根据房子的结构(模式)制定规则,提供服务。