虚拟化和虚拟机
虚拟化:将计算机的各种实体资源进行抽象,从而呈现出不同的虚拟资源
虚拟机:通过虚拟化技术将一台计算机虚拟为多台逻辑计算机——虚拟化技术中的系统虚拟化
不同抽象层上的虚拟化分为:
硬件虚拟化:为虚拟操作系统呈现和物理硬件类似的抽象层(VMWare)
操作系统虚拟化:为多个用户态提供与操作系统类似的抽象层(docker)
库函数虚拟化:虚拟化库函数,使得应用程序可以在不同库函数下运行
编程语言的虚拟化:进程级别的虚拟化,模拟编译解释器生成机器码
硬件虚拟化:
计算虚拟化:针对 CPU 和内存资源进行虚拟化。
网络虚拟化:针对网络链路资源进行虚拟化。
IO 虚拟化:针对 IO 资源进行虚拟化。
存储虚拟化:针对磁盘存储资源虚拟化
基本模型
一台计算机一般可分为
物理硬件层 操作系统层 应用程序层
而虚拟机可分为:虚拟硬件层 操作系统层 应用程序层
虚拟硬件层 VMM
可以认为是一个介于虚拟机和硬件的中间的软件层。只是这个软件层不仅抽象出了硬件层,同时还具有负责VM的创建销毁等工作。并且为VM提供了运行环境
满足虚拟化系统结构的VMM的条件
等价性:就是运行在VMM下的和运行在物理机下没区别
资源控制:VMM对虚拟的资源能完全控制
效率性(efficiency):机器指令中经常使用的那一部分应在没有 VMM 干预下直接在硬件上执行(这样能够提高效率呗)
两种VMM方案
VMM与操作系统一层,运行在硬件上
VMM与应用程序一层,运行在操作系统上
敏感指令和特权指令
特权指令:系统中有一些操作和管理关键系统资源的指令,这些指令只有在最高特权级上能够正确运行。如果在非最高特权级上运行,特权指令会引发一个异常,处理器会陷入到最高特权级,交由系统软件处理了。
敏感指令:就是会操作特权资源的指令,包括修改虚拟机的运行模式或者下面物理机的状态;读写时钟、中断等寄存器;访问存储保护系统、地址重定位系统及所有的I/O指令
敏感指令必须在VMM的监控下完成或者经过VMM完成。
特权级压缩(Ring Compression)
VMM 运行在最高特权级上,Guest VM 运行在低特权级上,当 Guest VM 执行到敏感指令或特权指令时,其便会陷入位于最高特权级的 VMM,此时有VMM执行敏感指令或特权指令。