廊坊seo網(wǎng)站管理seo是什么專業(yè)的課程
有時,虛擬機監(jiān)控程序需要在虛擬機(VM)中模擬操作。例如,VM內(nèi)的軟件可能嘗試配置與功耗管理或緩存一致性相關(guān)的低級處理器控件。通常,您不希望將VM直接訪問這些控件,因為它們可能被用于突破隔離,或影響系統(tǒng)中的其他VM。
trap在執(zhí)行給定操作(例如讀取寄存器)時引發(fā)異常。虛擬機監(jiān)控程序需要能夠在VM中捕獲并模擬此類操作,而不影響其他VM。
架構(gòu)包括用于在VM中捕獲操作并模擬它們的trap控件。設(shè)置trap時,執(zhí)行通常允許的特定操作會導(dǎo)致exception到更高的異常級別。虛擬機監(jiān)控程序可以使用這些trap來在VM內(nèi)模擬操作。
例如,執(zhí)行Wait For Interrupt(WFI)指令通常會將CPU置于低功耗狀態(tài)。通過assert TWI 位(如果 HCR_EL2.TWI==1),然后在 EL0 或 EL1 執(zhí)行 WFI 將導(dǎo)致異常到 EL2。
【注意】:trap不僅用于虛擬化。還有由EL3和EL1控制的trap。 然而,trap對于虛擬化軟件尤其有用。本指南僅討論通常與虛擬化相關(guān)的trap。
在我們的WFI示例中,操作系統(tǒng)通常會在空閑循環(huán)的一部分執(zhí)行WFI。對于位于VM內(nèi)的Guest OS,虛擬機監(jiān)控程序可以捕獲此操作并調(diào)度另一個vCPU,如下圖所示:
顯示寄存器的虛擬值
使用trap的另一個例子是