虚拟机监视器(Virtual Machine Monitor,VMM)是虚拟机技术的核心,它是一层位于操作系统和计算机硬件之间的代码,用来将硬件平台分割成多个虚拟机。
VMM 运行在特权模式,主要作用是隔离并且管理上层运行的多个虚拟机,仲裁它们对底层硬件的访问,并为每个客户操作系统虚拟一套独立于实际硬件的虚拟硬件环境(包括处理器,内存,I/O 设备)。VMM 采用某种调度算法在各个虚拟机之间共享 CPU,如采用时间片轮转调度算法。[1]
虚拟化 就是通过某种方式隐藏底层物理硬件的过程,从而让多个操作系统可以透明地使用和共享它。这种架构的另一个更常见的名称是平台虚拟化。在典型的分层架构中,提供平台虚拟化的层称为 hypervisor (有时称为虚拟机管理程序 或 VMM)
hypervisor 是提供底层机器虚拟化的软件层(在某些情况下需要处理器支持)
架构
架构是分层的:
提供平台虚拟化的层称为 hypervisor (有时称为虚拟机管理程序 或 VMM)
平台虚拟化的层:就是通过某种方式隐藏底层物理硬件的过程,从而让多个操作系统可以透明地使用和共享它。
进程:操作系统将对机器的底层资源的访问虚拟化为进程。
hypervisor 也做一样的事情,但其对象不是进程,而是整个来宾操作系统
hypervisor将对机器的底层资源的访问虚拟化为操作系统 ??
hypervisor 分类
- hypervisor 是直接运行在物理硬件之上
例子:基于内核的虚拟机(KVM —— 它本身是一个基于操作系统的 hypervisor) - hypervisor 运行在另一个操作系统(运行在物理硬件之上)中
例子: hypervisor 包括 QEMU 和 WINE
hypervisor 的构成
是一个抽象机器硬件的分层应用程序,
每个来宾操作系统看到的仅是一个 VM 而不是真实的硬件机器。
hypervisor 的内部组成,以及它在 VM(来宾操作系统)上的表示。
- 需要驱动的内核映像
- 配置(比如 IP 地址和所需的内存量)
- 磁盘盒一个网络设备。磁盘和网络设备通常映射到机器的物理磁盘和网络设备
- 使用一组来宾操作系统工具启动和管理来宾操作系统。
hypervisor 架构关键功能
使来宾操作系统可以和宿主操作系统同时运行
特定的要素
系统调用
:将用户空间应用程序和内核函数连接起来的系统调用
虚拟化调用层
(hapercall,hypervisor 对操作系统进行的系统调用):允许来宾系统向宿主操作系统发出请求
standard linux Kernel
:在内核中虚拟化 I/O,或通过来宾操作系统的代码支持它
hypervisor :
1. 故障必须由 hypervisor 亲自处理
2. hypervisor 还必须处理在来宾操作系统内部发生的异常。
页映射器
:hypervisor 的核心要素之一,将硬件指向特定操作系统(来宾或 hypervisor)的页
高级别的调度器
:hypervisor和来宾操作系统之间传输控制。
KVM
首个被集成到 Linux 内核的 hypervisor 解决方案,并且实现了完整的虚拟化
运行在 x86 硬件硬件上的、驻留在内核中de虚拟化基础结构
KVM 是作为内核模块
实现
Linux 只要加载该模块
就会成为一个hypervisor
KVM 为支持 hypervisor 指令的硬件平台
提供完整的虚拟化
KVM 还支持准虚拟化来宾操作系统
,包括 Linux 和 Windows®。
KVM技术的实现:
1. 可加载的 KVM 模块
Linux 内核安装该模块之后,它就可以管理虚拟化硬件
通过 /proc 文件系统公开其功能
2. 用于 PC 平台模拟修改版 QEMU 提供的。QEMU 作为用户空间进程执行,并且在来宾操作系统请求方面与内核协调
- 新的操作系统在 KVM 上启动,os成为宿主操作系统的一个进程,像其他进程一样调度它。
来宾操作系统被 hypervisor 标识为处于 “来宾” 模式(独立于内核和用户模式)。 - 来宾操作系统拥有自己的虚拟地址空间,通过 /dev/kvm 设备映射的
,该空间映射到主机内核的物理地址空间 - KVM 使用
底层硬件的虚拟化
支持来提供完整的(原生)虚拟化。 - I/O 请求通过主机内核映射到在主机上(hypervisor)执行的 QEMU 进程。
- QEMU 作为用户空间进程执行,并且在来宾操作系统请求方面与内核协调
- KVM 在 Linux 环境中以主机的方式运行,不过只要底层硬件虚拟化支持,它就能够支持大量的来宾操作系统
https://www.ibm.com/developerworks/cn/linux/l-hypervisor/#artrelatedtopics