虛擬化實現架構(處理器虛擬化)
首先需要理解一個概念——可虛擬化架構與不可虛擬化架構
特權指令:系統中用來操作和管理關鍵系統資源的指令,這些指令只有在最高特權級上可以執行。如果在非最高特權級上執行,特權指令會引發一個異常,處理器會陷入到最高特權級,交由系統軟體來處理。
敏感指令:在虛擬化世界,操作特權資源的指令,包括修改虛擬機器執行模式或者下面物理機狀態;讀寫敏感的暫存器或是記憶體,例如時鐘或者中斷暫存器;訪問儲存保護系統、記憶體系統或是地址重定位系統以及所有的I/O指令。
所有的特權指令都是敏感指令,然而並不是所有的敏感指令都是特權指令。判斷一個結構是否可虛擬化,就在於該結構對敏感指令的支援上,如果在某些結構上所有敏感指令都是特權指令,則它是可虛擬化的結構
重要概念:虛擬處理器、虛擬暫存器、上下文
當虛擬機器作業系統訪問關鍵資源時,該請求不會直接訪問物理暫存器,VMM會模擬物理處理器的行為,將其訪問定位到與物理暫存器相對應的虛擬暫存器上,這樣的虛擬暫存器往往是在記憶體中。
在作業系統進行排程時,需要儲存當前程序的暫存器狀態到記憶體中,並將下一個程序暫存器狀態值恢復到相應暫存器中,這些暫存器的狀態集合就是程序的上下文,虛擬機器中對敏感指令的處理都會試圖訪問和修改物理機上所有暫存器,這種訪問會被VMM重定位到虛擬機器上,這就需要儲存虛擬暫存器上下文。
無論是定義虛擬暫存器還是虛擬處理器,還是利用上下文進行虛擬處理器排程,都是讓虛擬機器執行的敏感指令陷入下來,讓VMM進行模擬,而不是直接作用的真實硬體上。
陷入方式:
1、基於處理器保護機制觸發的異常
2、虛擬機器主動觸發異常,也就是通常所說的陷阱
3、非同步中斷,包括處理器內部的中斷源和外部裝置的中斷源