Article

操作系统-CH1.5-虚拟机

操作系统-CH1.5-虚拟机,待补充摘要。

June 11, 2026 修考 11 min read

image-20260611112107926

1-5 虚拟机与虚拟机管理程序 (VMM)

在学习了操作系统的基本功能和结构后,我们通常默认“一个物理硬件之上直接运行一个操作系统”。然而,随着计算需求的演进,如何在一套物理硬件上运行多个相互隔离的操作系统?这就引入了本节的核心内容——虚拟机技术

一、 虚拟机的基本概念

1. 什么是虚拟机?

虚拟机 (Virtual Machine, VM) 是利用虚拟化技术,将一台物理机器虚拟成多台逻辑上的虚拟机器。

  • 技术本质:通过隐藏特定计算平台的物理特性,为用户提供抽象、统一且模拟的计算环境。
  • 物理与逻辑的转换:将一个物理上存在的实体(物理硬件),通过软件手段虚拟出若干个逻辑上的独立系统。

2. 虚拟机系统的核心成员

在虚拟化环境中,角色被分为了两类:

  • 主机 (Host):实际存在的、仅有一台的物理机。它提供真实的物理硬件资源(如物理 CPU、物理内存、外设)。
  • 客户机 (Guest):被虚拟化层模拟出来的若干台虚拟机。
    • 独立性:每个客户机都拥有自己虚拟的硬件(虚拟 CPU、虚拟内存等)和独立的运行环境
    • 互不知情:各客户机之间相互隔离,不知道彼此的存在。它们都“幻觉”自己正独占整台物理机器。

二、 虚拟机管理程序 (VMM) 的两类架构

实现上述“一变多”的核心技术,是引入一个软件实现层——虚拟机管理程序 (Virtual Machine Monitor, VMM / Hypervisor)。根据 VMM 在系统中所处的层级位置,虚拟化技术主要分为两类:一型 (Type 1)二型 (Type 2)

                  【 两种 VMM 架构对比示意图 】

       一型虚拟机 (裸金属架构)                 二型虚拟机 (寄居架构)
  +-------------------------------+     +-------------------------------+
  |  App 1  |  App 2  |  App 3    |     |  App 1  |  App 2  |  App 3    |
  +---------+---------+-----------+     +---------+---------+-----------+
  |  Guest OS 1  |  Guest OS 2    |     |  Guest OS 1  |  Guest OS 2    |
  +--------------+----------------+     +--------------+----------------+
  |   虚拟机管理程序 VMM (OS)     |     |   虚拟机管理程序 VMM (进程)   |
  +-------------------------------+     +-------------------------------+
  |       物理硬件 (Bare-Metal)   |     |       宿主机 OS (Host OS)     |
  +-------------------------------+     +-------------------------------+
                                        |          物理硬件             |
                                        +-------------------------------+

1. 一型虚拟机管理程序(裸金属架构 / Bare-Metal)

① 架构特征

一型 VMMVMM 直接运行在裸机(Bare-Metal)之上。此时的 VMMVMM 本身就是一个特制的、功能精简的操作系统。

② 运行状态与控制逻辑

  • VMM 的状态:作为底层直接控制硬件的软件,它是唯一运行在真实 内核态 (Kernel Mode) 的程序。
  • 客户机 OS (Guest OS) 的状态:运行在介于真正的内核态与用户态之间的一种虚拟内核态
  • 运行幻觉 (Illusion)
    • 客户机 OS 的视角:它自以为运行在真硬件之上、拥有内核态特权,能直接将内核代码调入主存。
    • 物理实际:它无法直接与最底层的物理硬件交互。它的所有“特权操作”(如修改页表、控制中断)均被中间的 VMMVMM 拦截并中介控制
  • 用户应用程序:客户机上的应用程序仍正常运行在 用户态 (User Mode),其内存分配在物理主机的用户空间内。

③ 典型代表

  • VMware ESXi、Citrix XenServer、KVM (基于内核的虚拟机)。

2. 二型虚拟机管理程序(寄居架构 / Hosted)

① 架构特征

二型 VMMVMM 寄居在已有的宿主机操作系统 (Host OS) 之上。对宿主机而言,VMMVMM 只是一个普通的进程,其资源的分配和调度完全依赖于宿主机 OSOS

② 运行状态与控制逻辑

  • VMM 的状态:对物理主机而言,它运行在宿主机的 用户态 (User Mode)
  • 客户机 OS (Guest OS) 的状态:由于其载体 VMMVMM 运行在用户态,客户机 OSOS 的所有操作在物理 CPU 看来也全都是 用户态 的。
  • 资源获取方式
    • 当客户机 OSOS 想要访问硬件资源时,它将请求发给 VMMVMM
    • VMMVMM 无法直接操作硬件,只能通过调用宿主机 OSOS 提供的系统调用接口(API),间接请求物理硬件资源。

③ 典型代表(个人电脑上最常用)

  • VMware Workstation、Parallels Desktop、VirtualBox。

三、 深度剖析:如何理解“程序运行在 XX 态”?

💡 考研与期末必考重难点: 很多同学在初学时,容易将“用户态/内核态”误解为“程序在内存中的物理位置”。这是严重的认知偏差!“用户态”与“内核态”本质上描述的是 CPU 的指令执行状态,而非内存空间。

为了彻底扫清障碍,我们将“程序运行在某种状态”的学术含义总结如下:

1. 运行在用户态 (User Mode)

  • 本质含义:该程序作为一个普通应用程序执行。
  • 行为限制:CPU 处于低特权级。程序不能执行任何特权指令,无法直接访问底层的物理硬件(CPU、内存、外设)。一切涉及硬件的操作必须通过向操作系统发起系统调用(System Call)来完成。

2. 运行在内核态 (Kernel Mode)

  • 本质含义:程序(如一型的 VMMVMM 或常规的操作系统的内核)拥有最高特权。
  • 行为权限:CPU 允许执行包括特权指令在内的所有指令。程序可以直接读写任何物理寄存器、直接控制硬件资源并执行低级别的系统管理任务。

3. 运行在内核态和用户态之间(特指一型虚拟机中的 Guest OS)

  • 逻辑视角:由于客户机 OSOS 的职责是管理虚拟机的资源,它必须能够执行“逻辑上”的特权操作。
  • 物理视角:它不能直接控制真实的物理硬件,其发出的特权请求都必须被高级控制层(VMMVMM)拦截、审查和处理。
  • 总结:它既不是纯粹的用户态(因为它逻辑上能管理虚拟硬件,可以发起特权请求),也不是纯粹的内核态(因为没有直接控制物理硬件的最高权限)。这种特殊的运行机制确保了虚拟机之间的完全隔离。

四、 1型与2型虚拟机多维对比总结

对比维度一型虚拟机管理程序 (Type 1)二型虚拟机管理程序 (Type 2)
底层支撑直接运行在物理裸硬件运行在已有的宿主机操作系统
VMM 自身身份本身就是操作系统宿主机操作系统中的一个普通进程
Guest OS 运行态运行在虚拟内核态(介于真内核态与用户态之间)物理 CPU 视角下,完全运行在用户态
资源控制与调用VMMVMM 直接分配和管理物理硬件VMMVMM 必须通过宿主机 OSOS 系统调用间接获取资源
执行效率/性能极高。接近物理机性能较低。因多了一层宿主机 OSOS 的转换和调度
安全性与隔离度。一个虚拟机崩溃不影响其他虚拟机。若宿主机 OSOS 崩溃,其上的所有虚拟机全部失效
典型应用场景企业级服务器、云计算中心、数据中心个人开发调试、多操作系统轻量级体验

五、 精选例题与深度解析

📝 例题 1:特权级与执行效率问题(单选题)

【题目】 下列关于 1 型(裸金属架构)和 2 型(寄居架构)虚拟机管理程序(VMM)的叙述中,错误的是( )。 A. 1 型 VMM 直接运行在裸硬件上,而 2 型 VMM 运行在宿主机操作系统上 B. 2 型虚拟机在执行敏感指令时,由于需要经过宿主机操作系统的转换,其性能一般低于 1 型 C. 在 1 型虚拟机中,客户机操作系统(Guest OS)可以运行在物理 CPU 的内核态(特权级 0) D. 二型虚拟机更适合个人开发者进行日常的多系统开发与测试

【答案】 C

【解析】

  • A 项正确:这是 1 型和 2 型 VMM 的本质区别。
  • B 项正确:2 型 VMM 本身是一个用户态进程,其敏感指令必须通过 VMM 转换,再调用宿主机操作系统的 API,最终由宿主机操作系统在内核态下执行。多了一次软件层级的转换,因此性能比 1 型更低。
  • C 项错误:在 1 型虚拟机中,直接运行在物理裸金属上的 VMMVMM 才是唯一占有物理 CPU 内核态(特权级 0)的软件。客户机 OSOS(Guest OS)虽然“以为”自己运行在内核态,但实际上运行在受限的“虚拟内核态”(物理 CPU 的非特权级),任何敏感指令都会被 VMMVMM 拦截并进行模拟。因此它不能运行在物理 CPU 的内核态。
  • D 项正确:2 型虚拟机(如 VMware Workstation)安装简单,无需重新划分整台电脑的系统分区,非常适合普通用户和个人开发者。

📝 例题 2:特权指令拦截与敏感指令模拟(分析题)

【题目】 在虚拟化技术中,敏感指令是指“试图修改系统资源配置或行为的指令”。请简述:在一型虚拟机(裸金属架构)中,当客户机操作系统(Guest OS)执行了一条敏感指令时,整个系统是如何协作处理该指令的?为什么这能体现 Guest OS 运行在“介于内核态和用户态之间”?

【分析过程与标准答案】

  1. 协作处理机制:
    • 当 Guest OS 尝试执行敏感指令(例如关机指令或修改页表基址寄存器的指令)时,由于 Guest OS 实际上运行在物理非特权态,该指令触发了硬件异常(Trap/陷入)
    • 物理 CPU 拦截该异常,自动将控制权移交给直接运行在裸机内核态的虚拟机管理程序(VMMVMM)。
    • VMMVMM 接收到硬件中断后,分析该指令的意图,确认其是该 Guest OS 合法的虚拟化请求。
    • VMMVMM 在物理硬件上代为执行该操作(或在软件中模拟该虚拟硬件状态的改变),然后更新该虚拟机的状态。
    • 处理完成后,VMMVMM 将控制权返回给 Guest OS,Guest OS 继续向下执行。
  2. 为什么体现“介于二者之间”?
    • 它不像纯用户态:纯用户态程序一碰敏感指令就会因越权直接被操作系统强制杀死(崩溃)。而 Guest OS 执行敏感指令是被允许并且能够成功实现其逻辑效果的。
    • 它不像纯内核态:纯内核态程序可以直接把指令送上物理硬件执行,不需要任何中介。而 Guest OS 的特权指令无法直接作用于物理硬件,必须经过 VMMVMM 的“拦截-翻译-代为执行”。
    • 结论:这种“逻辑上能行使管理职能,但物理上需要被中介控制”的特征,完美地定义了它“介于内核态和用户态之间”的独特定位。