虚拟环境中托管的两个或多个客户操作系统如何处理单个资源的编辑?

虚拟环境中托管的两个或多个客户操作系统如何处理单个资源的编辑?

我知道这个问题听起来很笼统。

考虑使用虚拟化技术(例如操作系统级虚拟化)运行的两个操作系统。如果两个托管操作系统使用相同的资源,如何处理并发性以及如何工作?

答案1

虚拟化操作系统实际上从未见过物理资源,它们“认为”它们在其他硬件上运行,由虚拟化层模拟;因此,虽然虚拟机认为它有一个 SCSI 控制器和一个本地 SCSI 磁盘,但这实际上可能映射到 SAN 中 LUN 上的文件系统上的文件。

并发访问由虚拟化层处理,具体取决于资源类型;如果主机有四个物理 CPU,而两个虚拟机想要各使用一个,那么它们可以安全地同时执行此操作,但它们的工作负载实际上将由两个物理 CPU 分配。但是,如果只有一个物理 CPU,则主机的调度程序将处理并发并为每个虚拟机提供一些 CPU 时间。同样的原则适用于每种资源(磁盘、网络等)。

答案2

从主机操作系统的角度来看,虚拟机是一个进程,并且该进程像任何其他进程一样被分配资源。这适用于 IO 处理、CPU 排队等。

当然,这只是非常简短的介绍,不涉及 SMP、VT 和 VT-d

答案3

通常,客户操作系统不允许访问物理硬件。它们只能看到虚拟表示。例如,它们有虚拟磁盘驱动器,通常映射到文件(但不一定)。COM、打印机、网络等端口的工作方式都相同。

相关内容