虛擬機是對真實計算環境的抽象和模擬,VMM 需要為每個虛擬機分配壹套數據結構來管理它們狀態,包括虛擬處理器的全套寄存器,物理內存的使用情況,虛擬設備的狀態等等。VMM 調度虛擬機時,將其部分狀態恢復到主機系統中。並非所有的狀態都需要恢復,例如主機 CR3 寄存器中存放的是 VMM 設置的頁表物理地址,而不是 Guest OS 設置的值。主機處理器直接運行 Guest OS 的機器指令,由於 Guest OS運行在低特權級別,當訪問主機系統的特權狀態(如寫 GDT寄存器)時,權限不足導致主機處理器產生異常,將運行權自動交還給 VMM。此外,外部中斷的到來也會導致 VMM 的運行。
VMM 可能需要先將 該虛擬機的當前狀態寫回到狀態數據結構中,分析虛擬機被掛起的原因,然後代表 Guest OS 執行相應的特權操作。最簡單的情況,如Guest OS 對 CR3 寄存器的修改,只需要更新虛擬機的狀態數據結構即可。壹般而言,大部分情況下,VMM 需要經過復雜的流程才能完成原本簡單的操作。最後 VMM 將運行權還給 Guest OS,Guest OS 從上次被中斷的地方繼續執行,或處理 VMM “塞”入的虛擬中斷和異常。這種經典的虛擬機運行方式被稱為 Trap-And-Emulate,虛擬機對於 Guest OS 完全透明,Guest OS 不需要任何修改,但是 VMM 的設計會比較復雜,系統整體性能受到明顯的損害。