需求1:
人们需要在同一套硬件上,运行一台或多台虚拟机,同时这些虚拟机可能是不同的操作系统。
解决方案1:
通过抽象线程,虚拟内存和逻辑卷,可以解决一套硬件支持多台虚拟机的问题。
如果这些虚拟机分属不同的操作系统,也可以通过构建一个通用的虚拟机管理层,捕获并翻译虚拟机操作系统为底层硬件指令。
在Linux系统中,通用的虚拟机管理层,一般称之为VMM(Virtual Machine Manager)。
整个虚拟化的架构是,底层硬件,VMM,GustOS。
解决方案1的问题:
由于所有的指令都需要捕获和翻译,会造成严重的性能问题。
解决方案2:
GustOS直接操作底层硬件。代价是需要硬件层面做支持,以及GustOS的代码区别传统OS代码,定制化相关操作硬件的部分。
这个方案下,VMM仅做初始化,管理工作和少量的特权指令截获和翻译。
硬件层面的支持,包括Intel的VT系列技术。
软件层面的支持,包括QEMU框架等。
QEMU是一套完整的解决方案,virtio提供了其中关于块设备,网络设备,scsi设备部分的前后端实现。
当然,virtio也仅是关于这些设备的通用实现,具体到一个设备还需要做更具体的前后端代码实现。