操作系统结构
偶尔在选择题中考一下 宏内核和微内核 以及 虚拟机 的概念。
分层和模块化
操作系统的设计和结构在历史上经历了多种不同的方法和技巧,为了增加 可维护性、灵活性 和 可扩展性。分层 和 模块化 是操作系统设计中两种主要的技术方法。
- 分层结构:
- 概念:在分层的操作系统中,系统被划分为多个层次或“层”,每层都为其上的层提供服务,并依赖于其下的层。
- 优点:
- 每层只需与其直接的上下层进行交互,简化了设计和调试。
- 提高了灵活性,因为改变某一层的实现不会影响到其他层。
- 有助于保护和安全性,因为较低的层(如硬件访问层)被封装起来,上层代码不能直接访问。
- 模块化结构:
- 概念:模块化操作系统基于模块的概念,每个模块都有一个特定的功能,各个模块之间的交互通过定义良好的接口进行。模块化与面向对象编程中的封装和抽象概念类似。
- 优点:
- 易于维护和更新。如果某个模块需要更改或修复,可以独立于其他模块进行。
- 提高了可扩展性。新的功能或模块可以相对容易地添加到系统中。
- 增加了系统的可靠性和稳定性,因为每个模块的功能都被限定在明确的边界内。
内核架构
微内核
微内核(microkernel)是一种最小化的内核设计,只保留最核心的功能(如线程管理、虚拟内存、进程间通信等)在内核态运行,其他功能(如文件系统、设备驱动、网络协议栈等)以用户态服务的形式运行。
- 特点:
- 只有最基本的服务(如基本的进程和线程管理、地址空间和 IPC)运行在 内核态。
- 其他服务,如设备驱动、文件系统等,作为 用户空间 的独立进程运行。
- 内核和服务间通过消息传递进行通信。
- 优点:
- 更高的系统稳定性。用户空间的服务(如驱动程序)如果崩溃,不会影响整个系统。
- 更加灵活,允许在运行时更改或添加服务。
- 更容易扩展和维护。
- 缺点:
- 由于需要频繁的上下文切换和消息传递,通常 性能会稍逊于宏内核。
- 示例:QNX、MINIX 3 是典型微内核系统。Apple 的 XNU(用于 macOS/iOS)融合 Mach、BSD 与 I/O Kit,通常归为混合内核,不宜作为“纯微内核”例子。
宏内核
宏内核(monolithic kernel)将所有操作系统功能集成在一个大的内核程序中,运行在内核态。
- 特点:
- 在单一的地址空间中运行大部分系统服务,如设备驱动、文件系统、网络协议等。
- 所有的内核服务都运行在 内核态。
- 优点:
- 由于所有的服务都在同一个地址空间中运行,因此服务间的通信较快。
- 传统上,宏内核系统比微内核系统性能更高。
- 缺点:
- 如果内核中的一个部分失败,整个系统都可能崩溃。
- 随着功能的增加,内核可能会变得臃肿,导致维护困难。
- 示例:传统 UNIX 和 Linux 采用宏内核思路;Linux 同时支持可装载内核模块,但模块仍在内核地址空间和内核态运行。
混合内核(辨析)
实际系统常在两种思想间折中:把一部分服务留在内核态以减少通信开销,同时保留更清晰的组件边界。macOS / iOS 的 XNU(Mach、BSD 与 I/O Kit)以及 Windows NT 家族通常归为混合内核;它们不能简单地作为“纯微内核”或“纯宏内核”的例子。
服务放在何处:宏内核、微内核与混合内核
点击任一列,比较驱动、文件系统等服务位于内核态还是用户态,并用 Linux、QNX / MINIX 3、macOS / Windows NT 校准实例。
- 用户进程 / 系统调用通过系统调用请求服务
- 宏内核:调度、文件、网络、驱动大部分核心服务共享内核地址空间
- 物理硬件CPU、内存、I/O 设备
- 用户进程 + 文件 / 驱动等服务多个用户态服务进程
- 微内核:IPC、调度、地址空间内核态只保留最小机制
- 物理硬件CPU、内存、I/O 设备
- 用户进程 / 部分用户态服务保持清晰的组件边界
- 内核组件:Mach / BSD / Executive / I/O为性能保留部分内核态服务
- 物理硬件CPU、内存、I/O 设备
宏内核文件系统、网络与大部分驱动通常留在内核态,服务间路径短;模块化并不改变其内核态属性。
虚拟机
虚拟机(Virtual Machine, VM)是一种通过软件模拟真实计算机功能的 虚拟化技术,能够在一台物理主机上创建多个独立的虚拟计算机环境。每个虚拟机都具备与真实硬件相似的运行环境,可以运行独立的操作系统和应用程序,仿佛它们运行在专属的物理设备上。这种技术广泛应用于服务器整合、测试开发、跨平台应用等场景。
Type 1 与 Type 2:VMM 究竟部署在哪一层
点击两种分层图,沿自上而下的路径观察:Type 1 的 VMM 直接在硬件上,Type 2 的 VMM 位于宿主操作系统之上。
- 多个来宾 OS / 来宾应用每台 VM 看到自己的虚拟硬件
- Type 1 Hypervisor / VMM直接调度 vCPU、管理映射和虚拟设备
- 物理硬件CPU、内存、存储、网卡
- 多个来宾 OS / 来宾应用每台 VM 看到自己的虚拟硬件
- Type 2 Hypervisor / VMM作为宿主系统上的应用或服务
- 宿主 OS 与驱动提供文件、设备与驱动服务
- 物理硬件CPU、内存、存储、网卡
Type 1(裸机型)VMM 直接建立 vCPU、内存与虚拟设备的隔离边界;来宾 OS 认为自己在 Ring 0,但仍受 VMM 的宿主控制模式约束。
虚拟机监视器
Hypervisor,也称为虚拟机监视器(Virtual Machine Monitor, VMM),是 虚拟化技术 的核心组件,运行在物理主机和虚拟机之间的中间软件层。它负责协调和管理多个虚拟机,使它们能够共享底层 物理硬件资源,同时保持彼此 隔离。Hypervisor 的主要职责包括:
- 创建与管理虚拟机:为每个虚拟机分配独立的 虚拟化硬件资源(如 CPU、内存、存储和网络)。
- 硬件资源抽象:通过虚拟化技术,Hypervisor 将 物理硬件资源抽象化,使每个虚拟机认为自己独占硬件资源,从而运行独立的操作系统。
- 隔离与安全:确保虚拟机之间的运行互不干扰,增强系统安全性。
Hypervisor 的特权级
Hypervisor 借助硬件虚拟化扩展运行在宿主控制模式,例如 x86 的 VMX root mode;来宾操作系统运行在 VMX non-root mode,即使其来宾可见权限仍为 Ring 0,也受 Hypervisor 控制。“Ring -1”只是便于理解的非正式称呼,不是 x86 环保护环的正式编号。
注意
特权级如何理解?
特权级是处理器提供的抽象概念,现代处理器(如 x86、ARM)通过硬件支持不同的 特权级别(Privilege Levels),以区分操作系统、应用程序和更底层的管理程序的执行权限。这些级别通常通过“环”(Rings)或类似的模式划分:
- Ring 0:操作系统内核运行的级别,具有最高权限,可以直接访问硬件资源(如 CPU、内存)。
- Ring 1~2:x86 提供但现代通用操作系统较少直接使用;Ring 3 通常运行用户态应用程序。
- 虚拟化扩展:现代处理器引入了更高权限的模式(如 x86 的 VMX root mode 或 ARM 的 EL2),专为虚拟机监视器(Hypervisor/VMM)设计。
Hypervisor 还可按部署位置区分为 I 型和 II 型;这个分类描述的是 VMM 位于哪一层,不是来宾操作系统的种类。
I 型(Type 1,裸机型)
I 型 Hypervisor 直接运行在物理硬件之上,先由 VMM 建立虚拟 CPU、内存和设备的隔离边界,再在其上运行多个来宾操作系统。可以把它的主路径理解为:物理硬件 → Hypervisor → 多个来宾 OS / 应用。
- VMM 直接负责虚拟 CPU 调度、内存映射和虚拟设备的控制;管理工具或管理域可能存在,但它不是一套通用的宿主桌面操作系统。
- 因为没有“应用 → 宿主 OS → VMM”的常规额外路径,服务器整合场景更容易把资源隔离、运行开销和故障边界控制在虚拟化层。
- 典型例子是 VMware ESXi、Xen;考试中应抓住“直接在硬件上”这一判据,而不是死记产品名称。
II 型(Type 2,宿主型)
II 型 Hypervisor 是运行在宿主操作系统上的普通应用或服务。它把宿主操作系统已经提供的驱动、文件系统和设备管理能力再封装为虚拟硬件,主路径为:物理硬件 → 宿主 OS → Hypervisor → 来宾 OS / 应用。
- VMM 可复用宿主 OS 的设备驱动,安装和使用方便,适合个人学习、桌面测试和开发调试。
- 来宾的磁盘和网络 I/O 通常还要经过宿主 OS 的调度与驱动栈;因此路径更长,VMM 的可用性也依赖宿主 OS。
- 典型例子是 VirtualBox、VMware Workstation;它们不等于“来宾权限更低”,来宾内核仍看到自己的 Ring 0,只是该 Ring 0 处在 VMM 控制的来宾执行模式中。
I 型与 II 型对比
| 比较维度 | I 型(裸机型) | II 型(宿主型) |
|---|---|---|
| 部署位置 | 直接运行在硬件之上 | 运行在宿主操作系统之上 |
| 关键执行路径 | 硬件 → VMM → 来宾 | 硬件 → 宿主 OS → VMM → 来宾 |
| 设备访问 | VMM 直接协调设备虚拟化与资源分配 | 常复用宿主 OS 的驱动和设备服务 |
| 隔离与故障边界 | 以 VMM 为核心,边界较短、较清晰 | 还受宿主 OS 状态和驱动栈影响 |
| 常见使用场景 | 服务器整合、云与数据中心 | 桌面开发、实验与个人测试 |
| 判断关键词 | “直接安装在物理机” | “安装在 Windows、macOS、Linux 等宿主系统中” |