【王道操作系统 | 第一章】从资源管理到虚拟机

发布时间:2026/8/21 10:06:40
【王道操作系统 | 第一章】从资源管理到虚拟机 操作系统是计算机中最基础的系统软件。它一边直接管理处理器、内存、磁盘和外设一边向用户程序提供统一、易用且受保护的服务接口。一、操作系统是什么资源管理者也是扩充机器操作系统负责控制和管理整个计算机系统的硬件、软件资源合理组织计算机工作和资源分配并为用户和其他软件提供方便的接口与环境。从资源管理的角度看操作系统主要管理四类对象处理机决定多个程序何时获得 CPU存储器为程序分配、回收和保护内存空间文件把磁盘上的数据组织成文件和目录提供统一的读写方式设备协调键盘、显示器、磁盘、打印机等 I/O 设备的使用。从服务接口的角度看操作系统把复杂的硬件细节封装起来。普通用户可以通过 GUI 完成文件操作也可以通过命令接口与系统交互。命令接口又可分为联机命令接口和脱机命令接口前者强调人机交互用户输入一条命令后系统立即处理后者通常将一批命令组织好后交给系统依次执行。应用程序还可以通过程序接口请求操作系统服务。程序真正运行前相关指令和数据需要被装入内存由 CPU 按顺序取指、执行。程序无需直接控制磁盘控制器或修改内存保护信息这些工作由操作系统统一完成。因此安装了操作系统的计算机不再只是裸机。操作系统在硬件之上提供更高层的抽象使物理机器成为功能更完整、使用更方便的扩充机器。二、四个基本特征多个程序怎样共用系统1. 并发与并行并发是指两个或多个事件在同一时间间隔内发生。对单核 CPU 来说多个程序在宏观上像是同时运行微观上则是 CPU 在它们之间快速切换。并行强调同一时刻同时发生。多核处理器可以让多个程序分别占用不同核心在同一时刻执行从而形成并行。可以用一句话区分并发看时间段并行看同一时刻。多核 CPU 能够并行但当待运行程序数量超过可用核心数时仍然需要并发调度。2. 共享共享是指内存中多个并发执行的进程共同使用系统资源。共享有两种常见方式互斥共享某一时段只允许一个进程访问资源。例如摄像头被视频会议程序占用时其他程序通常不能同时独占它。同时共享多个进程在一个时间段内都能使用资源。例如两个程序同时读取磁盘文件底层可能仍是交替访问设备但从用户视角看它们都在工作。并发和共享互为条件。没有并发系统中只有一个程序运行资源共享没有意义没有共享多个程序无法共同使用 CPU、内存和 I/O 设备也就难以实现并发运行。3. 虚拟虚拟是把一个物理实体转换为多个逻辑实体。它让用户获得“资源更多”的使用体验但物理资源并没有凭空增加。时分复用技术将一个物理 CPU 按很小的时间片轮流分配给多个进程于是每个用户都像拥有自己的处理器。空分复用技术则把有限的物理内存扩展为更大的逻辑地址空间形成虚拟存储器。虚拟依赖并发。只有多个程序需要在同一段时间内运行按时间或空间复用资源才有实际意义。4. 异步多道程序环境下多个进程会走走停停地向前推进。进程何时获得 CPU、何时等待 I/O、何时因资源不足被阻塞受系统调度和资源状态影响执行速度无法预先精确预测这就是异步性。异步不代表执行混乱。操作系统通过调度、同步和资源保护让不可预测的推进过程仍然满足正确性要求。三、运行机制为什么程序不能随意操作硬件程序运行的本质是 CPU 执行一条条机器指令。为了避免任意程序破坏系统资源处理器将指令划分为特权指令和非特权指令。特权指令会影响全局资源或系统状态例如修改内存管理相关信息、设置时钟、进行设备控制等只能由操作系统内核执行。普通应用程序执行的是非特权指令例如算术运算、数据传送等。与指令权限相对应CPU 有两种运行状态内核态运行内核程序可以执行全部指令包括特权指令用户态运行应用程序只能执行非特权指令。处理器通常利用程序状态字 PSW 中的状态位区分当前模式。内核态切换到用户态时由内核执行特权指令修改状态位用户态切换到内核态则由中断触发并由硬件自动完成。这种区分建立了基础保护边界。应用程序即使出现错误也不能直接执行高权限操作来任意清空内存、关闭中断或控制其他程序的资源。四、中断和异常操作系统重新获得 CPU 的入口应用程序在用户态运行时操作系统并没有持续占用 CPU。那操作系统如何在需要时介入答案是中断和异常。中断会使 CPU 从用户态进入内核态转而执行对应的中断处理程序。它是操作系统重新获得 CPU 控制权的重要机制也是多程序交替执行的基础。1. 内中断内中断又称异常或例外它与当前正在执行的指令有关中断信号来源于 CPU 内部。常见类型包括陷阱或陷入应用程序主动执行陷入指令请求操作系统服务故障由可恢复的错误条件引起例如缺页故障。内核处理完成后原程序可以继续执行终止由严重错误引起例如用户态非法执行特权指令。内核通常终止相关程序不再返回原执行位置。2. 外中断外中断与当前正在执行的指令无关信号来自 CPU 外部。时钟中断使操作系统能够定期检查时间片、进行调度I/O 中断则用于通知设备事件例如磁盘读写完成、键盘输入到达。3. 中断处理过程不同中断需要不同的处理程序。CPU 检测到中断信号后保存必要的现场信息进入内核态再根据中断类型查询中断向量表找到对应处理程序的入口地址。处理完成后系统依据现场信息决定恢复原程序还是调度其他程序运行。这条路径解释了单核 CPU 上的“同时运行”时钟中断不断给操作系统提供重新调度的机会CPU 才能在多个程序之间切换。五、系统调用应用程序请求内核服务的正规通道用户程序没有直接操作共享资源的权限但它仍需要创建文件、申请内存、读取键盘输入、发送网络数据。系统调用就是操作系统向应用程序提供的程序接口。凡是涉及进程控制、文件管理、设备管理、内存管理和进程通信等共享资源的操作都应通过系统调用请求内核处理。这样做可以让内核统一完成权限检查、资源分配和冲突协调。以打印为例两个应用程序若能直接、并发地控制打印设备输出内容可能交错在同一页上。通过系统调用提交请求后内核可以按规则排队和调度保证设备使用有序。一次典型系统调用可以概括为四步应用程序将调用号和所需参数传递给寄存器或内存应用程序执行陷入指令CPU 产生内中断并切换到内核态内核根据调用号执行对应服务程序服务完成后恢复用户态应用程序继续执行。需要区分系统调用与库函数。库函数是语言运行库或应用程序提供的函数封装一部分库函数内部会发起系统调用一部分只完成用户态计算。例如简单的数学计算可能不需要内核介入而创建文件、读写设备等操作则需要系统调用。六、内核结构性能、可靠性与扩展性的取舍内核是操作系统中最核心的部分负责执行需要高权限的关键功能。围绕“哪些功能放进内核”这一问题不同结构有不同取舍。1. 大内核与微内核大内核将主要系统服务放在内核态运行。模块间可以直接调用性能较高代价是内核代码规模大、耦合更紧一个内核模块出现严重问题可能影响整个系统。微内核只把中断处理、原语、进程间通信等最基本功能保留在内核态将文件服务、设备服务等更多功能放到用户态服务进程中。它的结构更清晰隔离性和可维护性更好相应地服务之间需要频繁通信用户态与内核态切换增多性能开销也更大。因此大内核更偏向性能微内核更强调可靠性和扩展性。实际系统往往会根据场景进行折中设计。2. 外核外核尽量少做抽象主要负责为用户进程分配和回收连续的硬件资源并保证资源使用安全。它减少了抽象层带来的开销允许应用更灵活地使用硬件同时也增加了系统设计复杂度并降低了不同应用之间的一致性。七、从开机到系统接管操作系统引导操作系统本身也是存放在外存中的程序计算机加电后不能直接从磁盘“自动运行”完整系统需要一个逐步加载的过程。简化后的引导流程如下CPU 从预设地址开始执行固件中的引导代码完成基础硬件初始化与自检固件定位可引导设备并加载引导程序引导程序读取启动所需配置和操作系统核心组件内核完成初始化建立内存管理、设备管理等运行环境随后启动用户空间的系统服务。不同平台的具体实现会有差异。以 Windows 为例启动相关文件和配置由引导管理机制组织学习本章时更重要的是理解“固件代码逐级加载引导程序再由引导程序加载内核”的链条。八、虚拟机在一台物理机上运行多个计算环境虚拟机利用虚拟化技术将一台物理机器抽象成多台逻辑机器。每台虚拟机都可以安装自己的客户操作系统并获得看似独立的 CPU、内存、磁盘和设备。虚拟机管理程序 VMM 常分为两类类型部署位置特点第一类 VMM直接运行在硬件之上能直接控制和分配硬件资源性能通常更好可支持更多虚拟机第二类 VMM运行在宿主操作系统之上依赖宿主系统分配资源安装和迁移更方便但多了一层开销第二类 VMM 中虚拟磁盘通常对应宿主操作系统文件系统中的一个大文件客户操作系统对它的读写会由 VMM 和宿主系统共同处理。第一类 VMM 更接近硬件适合服务器等需要集中管理大量虚拟机的场景第二类 VMM 更适合桌面环境中的开发、测试和学习。虚拟机体现了操作系统“抽象与复用”的思想同一套物理资源经过隔离和调度后可以向不同用户提供彼此独立的运行环境。总结第一章的核心不在于记住术语而在于理解一套连续机制操作系统统一管理有限资源通过用户态和内核态划定权限边界借助中断获得控制权再通过系统调用向应用程序提供受控服务。在此基础上并发、虚拟化和不同内核结构才有了实现空间。