概述
在处理器资源的管理中,HVM支持如下的机制:
- 细粒度的系统时钟
- 搁置处理器执行的能力
- 创建新处虚拟处理器的能力
如何访问HVM的时钟
HVM支持细粒度的时钟,我们可通过虚拟指令vmgettime以及vmsettime来进行访问:
- Vmgettime指令返回一个代表当前时间的64位值
- Vmsettime指令重置64位值的时钟
标注:HVM的实现可以随意定义时钟对应的是CPU时间还是时钟计时单元。举例来说,如果虚拟设备监测器定制一个虚拟CPU,如果虚拟CPU不再执行指令,那么时钟有可能不会继续增值。
如何搁置处理器
HVM上的访客模式程序可通过两种方式搁置虚拟处理器的执行:
- 虚拟指令vmwait
- 虚拟指令vmyield
Vmwait搁置执行将挂起一个中断事件。当下一个事件处理后,终结事件服务的虚拟指令vmrte将在vmwait指令后导致一个指令重新开始。
Vmyield可暂时搁置执行,独立于任何虚拟处理器事件。它导致VMM在同等或更高的优先级上安排其他虚拟处理器,不需要优先权。
标注:在试图去取得一个spinlock时,推荐使用访客操作系统的yield指令。这保证那些拥有spinlock的虚拟处理器能够有机会执行。
如何创建一个虚拟处理器
访客模式程序能够通过虚拟指令vmstart来创建一个新的虚拟处理器实例。新创建的实例可与已有的处理器实例并行运行。
新的虚拟处理器实例在访客模式下执行