我知道这个问题听起来很笼统。
考虑使用虚拟化技术(例如操作系统级虚拟化)运行的两个操作系统。如果两个托管操作系统使用相同的资源,如何处理并发性以及如何工作?
答案1
虚拟化操作系统实际上从未见过物理资源,它们“认为”它们在其他硬件上运行,由虚拟化层模拟;因此,虽然虚拟机认为它有一个 SCSI 控制器和一个本地 SCSI 磁盘,但这实际上可能映射到 SAN 中 LUN 上的文件系统上的文件。
并发访问由虚拟化层处理,具体取决于资源类型;如果主机有四个物理 CPU,而两个虚拟机想要各使用一个,那么它们可以安全地同时执行此操作,但它们的工作负载实际上将由两个物理 CPU 分配。但是,如果只有一个物理 CPU,则主机的调度程序将处理并发并为每个虚拟机提供一些 CPU 时间。同样的原则适用于每种资源(磁盘、网络等)。
答案2
从主机操作系统的角度来看,虚拟机是一个进程,并且该进程像任何其他进程一样被分配资源。这适用于 IO 处理、CPU 排队等。
当然,这只是非常简短的介绍,不涉及 SMP、VT 和 VT-d
答案3
通常,客户操作系统不允许访问物理硬件。它们只能看到虚拟表示。例如,它们有虚拟磁盘驱动器,通常映射到文件(但不一定)。COM、打印机、网络等端口的工作方式都相同。