2009.06.25 20:00

電腦王59期完全看懂虛擬化圖解

ADVERTISEMENT

電腦王59期的完全看懂虛擬化上集,是原作者水球大大多年來的嘔心瀝血、化繁為簡之作,相信從目前的投票數看來,讀者們也都看得十分爽快。 為避免雜誌印刷糢糊導致讀者無法精讀其圖解,以下放上其全尺寸版本,欲引用請務必告知我們並註明來源。

為了確保多工作業系統的正常運作,我們必須保護作業系統核心、系統檔案與共用資源,避免遭到錯誤程式的破壞,所以至少需要兩種不同的運作權限:使用者模式(User Mode)跟系統模式(System Mode)。
此外,可能引起危險的處理器指令,都應定義成只能在系統模式執行的「特權指令(Privileged Instruction)」,硬體僅允許這些指令在系統特權模式執行。如在使用者模式執行,則將觸發處理器的例外(Exception)處理機制,再由作業系統的設陷(Trap,或稱為「軟體中斷」)機制,決定是否執行該指令,如上圖應用程式透過系統呼叫(System Call),要求得到更多記憶體。

.

ADVERTISEMENT

x86處理器的效能成長一日千里,催生x86平台的虛擬化應用,讓昔日只能在CISC大型主機與高階RISC伺服器上一親芳澤的虛擬化技術,逐步「下放」到x86世界。

.

ADVERTISEMENT

電腦從開機到載入作業系統的流程,是先進入能執行特權指令的「系統模式」,再啟動執行應用程式的「使用者模式」,才開始為你服務。

.

ADVERTISEMENT

任何程式的工作狀態都會儲存成TSS資料結構,x86處理器與作業系統就藉由反覆載入、回存TSS,以達成多工能力。那麼,「x86虛擬化世界的TSS」在哪裡呢?

.

ADVERTISEMENT

多工作業系統就是一種虛擬化應用,凡是執行系統特權指令、可能破壞系統強固性的應用程式,都統一透過系統呼叫介面、在作業系統監控下取得服務,不會直接存取底層硬體。

.

在35年前,古聖先賢早已預言了「利於虛擬化的處理器指令集」應該有哪些特色。理所當然,先天不足後天失調的x86指令集,當仁不讓的成為「不及格」的那一群。

.

為何x86處理器難以虛擬化?就讓這張圖告訴你真相。

.

藉由精密複雜的二進位執行檔轉換機制,早期的VMware可支援多數x86平台作業系統(包含Windows),達成「全虛擬化」,代價就是極為肥大的VMM。資料來源:VMware。

.

Intel VT-x與AMD-V在x86既有的四層(ring 0-3)特權層級外,新增「ring -1」攔截漏網之魚。如此一來,所有關鍵性指令都會強行觸發例外,VMM自然知道「啊,有人想亂搞」。

.

既然VMM可攔截所有企圖更動系統底層組態的關鍵性指令,自然就可將其更替為「安全」的指令碼,再恢復其執行。

.

VT-x與AMD-V不但利於VMM支援未經修改的作業系統,實現全虛擬化,且其定義的標準化系統資訊資料結構與系統控制指令,可進一步提高整體系統的效率。

進階閱讀:虛擬化技術的標準教科書

對於想進一步研究虛擬化技術的資訊科班學生與業界人士,筆者強力推薦《Virtual Machines: Versatile Platforms For Systems and Processes》,這是一本近年來難得一見的好書。細節請參考筆者兩年多前寫過的書評:

官方網站連結:

ADVERTISEMENT