VMX定義了VMCS(Virtual Machine Control Structure)數據結構來記錄vCPU相關的寄存器內容與控制信息,發生VMExit或VMEntry時需要查詢和更新VMCS。VMM為每個vCPU維護一個VMCS,大小不超過4KB,存儲在內存中VMCS區域,通過VMCS指針進行管理。VMCS主要包括3部分信息,control data主要保存觸發模式切換的事件及原因;Guest state 保存Guest運行時狀態,在VM Entry時加載;Host state保存VMM運行時狀態,在VM Exit時加載。通過讀寫VMCS結構對Guest進行控制。
KVM中vCPU在三種模式下執行:
客戶模式(Guest Mode)運行GuestOS,執行Guest非IO操作指令。
用戶模式(User Mode)運行QEMU,實現IO模擬與管理。
內核模式(Kernel Mode)運行KVM內核,實現模式的切換(VM Exit/VM Entry),執行特權與敏感指令。
KVM內核加載時執行VMXON指令進入VMX操作模式,VMM進入VMX Root模式,可執行VMXOFF指令退出。GuestOS執行特權或敏感指令時觸發VM Exit,系統掛起GuestOS通過VMCALL調用VMM,切換到Root模式執行,VMExit開銷是比較大的。VMM執行完成后,可執行VMLANCH或VMRESUME指令觸發VM Entry切換到Non-root模式,系統自動加載GuestOS運行。
VMX定義了VMCS(Virtual Machine Control Structure)數據結構來記錄vCPU相關的寄存器內容與控制信息,發生VMExit或VMEntry時需要查詢和更新VMCS。VMM為每個vCPU維護一個VMCS,大小不超過4KB,存儲在內存中VMCS區域,通過VMCS指針進行管理。VMCS主要包括3部分信息,control data主要保存觸發模式切換的事件及原因;Guest state 保存Guest運行時狀態,在VM Entry時加載;Host state保存VMM運行時狀態,在VM Exit時加載。通過讀寫VMCS結構對Guest進行控制。
回答所涉及的環境:聯想天逸510S、Windows 10。