虚拟化技术如何关闭操作系统?

时间:2018-11-15 06:36:12

标签: virtualization kvm acpi

我搜索有关此问题的内容,例如KVM,ACPI等。
我猜想OS实现了一些接口(例如ACPI?),它可以接收某种信号或命令并自行关闭。
然后主机通过虚拟化技术将信号或命令发送到实例的操作系统。

我的理解正确吗?有人可以给我指示吗,

1 个答案:

答案 0 :(得分:2)

大约是这样。

  1. VMM(虚拟机监视器)提供了一个来宾BIOS / UEFI映像,该映像在虚拟机中运行时会填充内存中的ACPI描述。
  2. 来宾OS读取这些ACPI表,并在其中找到对应于电源按钮的按钮设备的描述。它读取分配给该按钮的资源,特别是按钮应如何发出信号状态。最常见的情况是,它将是一个具有一定数字和用于将多个按钮区分开的寄存器地址的中断。
  3. 当VMM用户/管理员决定按下虚拟电源按钮时,它将使用VMM特定的界面(GUI,CMD行,脚本等)来命令VMM执行此操作。然后VMM设置寄存器并将先前协商的中断号注入来宾OS。
  4. 现在,目标OS负责对信号做出反应。从它的角度来看,它看起来像是按下了真正的电源按钮。然后,来宾操作系统关闭单个进程,刷新磁盘缓存,最后使用特定于平台的设备访问命令虚拟硬件关闭电源(或者,进入休眠,S5状态,HLT状态,重新启动等)。如果没有安装用于将其传播到操作系统的来宾软件,即没有acpi-tools软件包的Ubuntu,则OS可能会忽略按钮的按下。