虚拟化和云
第一类和第二类虚拟机
第一类虚拟机
是一个唯一在最高特权级的程序, 上面运行其它操作系统
第二类虚拟机
运行在宿主操作系统之上的, 很像一个普通的进程
在不支持虚拟化平台上实现虚拟化
二进制翻译
当虚拟机运行内核态, 关闭中断或者IO都会触发二级制翻译. 通过利用x86的段保护机制, 动态二进制翻译的系统代码可以接近原生态的速度进行
内存虚拟化
之前用的是影子页表, 但是需要额外的开销, 现代用硬件辅助页表
IO虚拟化
I/O MMU
I/O MMU的主要功能是为这些设备提供虚拟地址映射和内存访问权限控制
设备域
指定一个虚拟机运行普通操作系统, 将其它虚拟机的所有IO映射过来
单根IO虚拟化
对硬件进行虚拟化, 虚拟化单一设备使每个虚拟机都认为自己拥有对设备的独占式访问
VMware的架构
- VMX负责展示VM上运行的UI, 是OS的一个进程
- 在host的OS中会有一个VMM驱动程序, 这个程序负责与VMM通讯
- VMM是运行在内核态的程序, 有自己的上下文, 跟host os的上下文不一样, 所以VMM有自己的独立性
- 当VMM需要处理中断时, 会进行系统切换, 切换到了host的os, 这时候VMM驱动程序负责跟host的os通信, 让host的os处理中断
小结
本章主要讲了虚拟机, 包括第一类虚拟机和第二类虚拟机, VMware就属于第二类虚拟机. 虚拟机除了对CPU虚拟化之外, 也需要对内存和IO设备虚拟化, 其中内存虚拟化有硬件上的支持, IO设备的虚拟化有很多种形式. 这里还讲了VMware的架构