知识点1:虚拟机监控器与操作系统
相同点:
运行在最底层以管理硬件,支持上层软件复用硬件资源
不同点:
操作系统为硬件定义新的“抽象”,体现为新的软件接口
虚拟机监控器:不引入新的接口,只提供对已有硬件接口的“虚拟化”
例子:操作系统对磁盘的操作抽象为对文件的操作,比如向上提供不同于磁盘接口的文件系统接口
虚拟机则把一个或多个文件虚拟成一个磁盘,对上层guest os提供磁盘接口 (IDE,SATA)
知识点二:
虚拟化技术,包含:CPU虚拟化,内存虚拟化,IO虚拟化
CPU架构
下陷:CPU特权级从低级 EL0切换至高特权级EL1
特权指令:在用户态执行时会触发下陷的指令
敏感指令:管理系统物理资源或更改CPU状态的指令,包括:
- 读写特殊寄存器或执行特殊指令以更改CPU状态
- 读写敏感内容
- 执行IO指令
可虚拟化架构特征,所有敏感指令都是特权指令,即 所有的敏感指令在非特权级执行时都会触发下陷。
知识点三:
半虚拟化技术:允许修改guest os 源码的方式
全虚拟化技术:不修改客户虚拟机源码的方式
半虚拟化的优势:
- 更高性能。无须模拟运行敏感指令,减少冗余代码逻辑、数据拷贝、特权级切换
- 缓解语义鸿沟。允许虚拟机监控器获得虚拟机内部的状态,因此可以进一步提高资源的分配效率
注意:由于半虚拟化技术涉及到修改客户操作系统源码,对于非开源操作系统,比较难以添加半虚拟化的支持
知识点四:
硬件虚拟化技术:按照硬件架构的不同,分成两种
Intel 在硬件虚拟化技术上探索,在CPU特权等级下新增两种模式:根模式(虚拟机监控器),非根模式(虚拟机),VT-X为每一个虚拟机提供了虚拟机控制结构VMCS
ARM V8 架构,通过引入全新的特权级,控制所有物理资源,并且管理非特权级中的软件
注意:当物理主机和虚拟主机的ISA不同时,不能用硬件虚拟化技术,只能用软件技术。
例如,在X86上模拟ARM虚拟机
知识点五:内存虚拟化
满足两个要求:
- 每台虚拟机提供从零地址开始连续增长的物理地址空间
- 实现虚拟机之间内存隔离,每台虚拟机只能访问分配给他的物理内存区域
引入三种不同的类型地址:
- 客户虚拟地址:进程和客户操作系统使用
- 客户物理地址:客户操作系统管理的
- 主机物理地址:CPU发送至总线进行访问的