最近,我正在做關於虛擬化的作業。我的問題是,VMM如何將控制權轉移給來賓內核並在環1中運行該代碼?1類VMM和環1
1類VMM:這是經典的陷阱和模擬VMM。 VMM直接在硬件上運行,充當Ring 0中的「主機操作系統」。客戶內核和客戶機應用程序分別在VMM上運行,分別位於Ring 1和Ring 3中。
當客戶應用程序進行系統調用,它將陷阱0環VMM(CPU是專門做這個)。
那麼VMM會檢測到,這是一個系統調用,然後在環1
當它完成控制轉移到客機內核SYSCAL處理程序並執行它,客戶內核執行syscall-返回,這是一個特權呼叫,它將再次陷入VMM。
VMM然後做環3.真正迴歸到來賓用戶空間(CPU的設計也做到這一點。)
我的問題是關於步驟2 如何進行VMM轉移控制來賓內核並強制CPU響1?它不可能是一個簡單的「調用」,因爲來賓內核代碼將在環0中運行。它必須是某種「系統調用返回」或一些特殊的上下文切換指令。
你有什麼想法嗎?謝謝!
你在說什麼hypervisor?這可能會因VMM而異。 – hsalimi
@hsalimi謝謝!但實際上我沒有特定的VMM。一般來說,有多少種方法可以實施? –