HVM的虛擬處理器資源管理

概述

在處理器資源的管理中,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後的指令將不會被提交
  • 虛擬處理器相關的資源將被釋放,並將其對之後創建的虛擬處理器實例可用

處理器管理的虛擬器指令
下圖總結了用於虛擬器資源管理的虛擬指令
這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章