知识点1:虚拟机监控器与操作系统

相同点:

运行在最底层以管理硬件,支持上层软件复用硬件资源

不同点:

操作系统为硬件定义新的“抽象”,体现为新的软件接口

虚拟机监控器:不引入新的接口,只提供对已有硬件接口的“虚拟化”

 

例子:操作系统对磁盘的操作抽象为对文件的操作,比如向上提供不同于磁盘接口的文件系统接口

虚拟机则把一个或多个文件虚拟成一个磁盘,对上层guest os提供磁盘接口 (IDE,SATA)

 

知识点二:

虚拟化技术,包含:CPU虚拟化,内存虚拟化,IO虚拟化

 

CPU架构

下陷:CPU特权级从低级 EL0切换至高特权级EL1

 

特权指令:在用户态执行时会触发下陷的指令

敏感指令:管理系统物理资源或更改CPU状态的指令,包括:

  • 读写特殊寄存器或执行特殊指令以更改CPU状态
  • 读写敏感内容
  • 执行IO指令

 

可虚拟化架构特征,所有敏感指令都是特权指令,即 所有的敏感指令在非特权级执行时都会触发下陷。

 

知识点三:

半虚拟化技术:允许修改guest os 源码的方式

全虚拟化技术:不修改客户虚拟机源码的方式

 

半虚拟化的优势:

  1. 更高性能。无须模拟运行敏感指令,减少冗余代码逻辑、数据拷贝、特权级切换
  2. 缓解语义鸿沟。允许虚拟机监控器获得虚拟机内部的状态,因此可以进一步提高资源的分配效率

 

注意:由于半虚拟化技术涉及到修改客户操作系统源码,对于非开源操作系统,比较难以添加半虚拟化的支持

 

知识点四:

硬件虚拟化技术:按照硬件架构的不同,分成两种

 

Intel 在硬件虚拟化技术上探索,在CPU特权等级下新增两种模式:根模式(虚拟机监控器),非根模式(虚拟机),VT-X为每一个虚拟机提供了虚拟机控制结构VMCS

 

ARM V8 架构,通过引入全新的特权级,控制所有物理资源,并且管理非特权级中的软件

注意:当物理主机和虚拟主机的ISA不同时,不能用硬件虚拟化技术,只能用软件技术。

例如,在X86上模拟ARM虚拟机

 

知识点五:内存虚拟化

满足两个要求:

  1. 每台虚拟机提供从零地址开始连续增长的物理地址空间
  2. 实现虚拟机之间内存隔离,每台虚拟机只能访问分配给他的物理内存区域

 

引入三种不同的类型地址:

  1. 客户虚拟地址:进程和客户操作系统使用
  2. 客户物理地址:客户操作系统管理的
  3. 主机物理地址:CPU发送至总线进行访问的