您的位置:首页 > 其它

HVM的虚拟处理器资源管理

2015-10-29 15:35 330 查看
概述

在处理器资源的管理中,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来创建一个新的虚拟处理器实例。新创建的实例可与已有的处理器实例并行运行。

新的虚拟处理器实例在访客模式下执行,从vmstart的参数中对特定的地址进行取指令。新的实例使用虚拟处理器实例的相同内存映射。

每个虚拟处理器有一个独特的32位标志位,它的范围内根据下列公式进行确定:

0 .. (max_number_of_supported_virtual_processors - 1)

一个虚拟处理器ID值不可能为-1.初始虚拟处理器实例有一个为零的虚拟处理器ID。虚拟处理器上的程序可以通过执行虚拟指令vmvpd来访问处理器ID。

Vmstart的取反是虚拟指令vmstop。当虚拟处理器执行vmstop时,如下的事件将会发生:

虚拟处理器将会被终止

Vmstop后的指令将不会被提交

虚拟处理器相关的资源将被释放,并将其对之后创建的虚拟处理器实例可用

处理器管理的虚拟器指令

下图总结了用于虚拟器资源管理的虚拟指令

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: