硬科技:為何x86的虛擬化這麼難搞(下)

2020.03.11 08:00AM

前情提要。現在想必各位科科對於處理器虛擬化的看法不外乎「讓作業系統變成應用程式,虛擬機管理者取代作業系統的角色,不就好了,反正還有例外處理機制可以當最後一道防線嘛」,但感謝x86指令集先天不足後天失調的發展史,使其特別難搞,因為有些使用者模式的x86指令,也是有機會「撈過界」對底層上下其手。

我們就來瞧瞧問世於1974年,用來驗證計算機架構能否有效虛擬化的方式「波佩克與戈德堡虛擬化需求」(Popek and Goldberg virtualization requirements) 是如何定義的。

  • 效率(Efficiency):機器指令中不會更動系統狀態者,應直接使用底層硬體執行,不受干預。
  • 資源控制(Resource Control):VMM(Virtual Machine Manager)完全控制虛擬資源,當作業系統嘗試更動底層系統狀態時,VMM將被主動告知,阻止該破壞系統穩定度的行為,再更換成不會造成危險的等效指令碼。
  • 等價性(Equivalence):執行在VMM上的作業系統,其行為模式完全等同執行在原生硬體上。

只要當一切會更動底層系統狀態的關鍵性(Sensitive)指令都應納入系統特權(Privileged)指令的範圍,當執行在虛擬機之上的作業系統之任何「危險行為」,都會觸動處理器的例外處理(Exception)機制與VMM的設陷(Trap),即可攔截並更替為安全的指令碼。

很不幸的,x86指令集中18個使用者模式指令與多數I/O指令並不符合上述標準。最有名的案例是POPF指令更動EFLAGS的Interupt Enable欄位,在使用者模式不會啟動,但是也不會造成例外。無論任其更動系統底層狀態,或著處理器不會執行,都不會引起例外。這些指令在單機作業系統上並不會造成問題,但卻是虛擬化的大麻煩。換言之,必須先抓出來這些「麻煩製造者」,再採用軟體模擬或二進位代碼轉換(Binary Translation)等手段,取而代之,才可確保系統的強固性。

所以在Intel VT-X「Vanderpool」和AMD-V「Pacifica」之類的硬體輔助(Hardware Assisted)虛擬化技術出現前,要實現有效的x86處理器虛擬化,只有2條路:
  • 全虛擬化(Full Virtualization):像VMware早期的虛擬機器監視器(VM Monitor)會監視用戶端作業系統的指令碼,事先找出這些有問題的指令,再使用二進位代碼機制(Binary Translation)轉成安全的指令碼,但這會降低效能表現。
  • 半虛擬化(Paravirtualization):修改作業系統程式碼、替換製造問題的指令,讓所有指令都可在處理器上原生執行。但不同的作業系統,需配合不同的虛擬機軟體,做出不同程度的修改,導致犧牲相容性,而像死都不開放原始碼微軟Windows就根本沒機會了。

說穿了,硬體輔助虛擬化技術作的事情是「亡羊補牢」,新增特權層級,多一道「攔截網」,擋下這些不乖的指令後,再讓虛擬機管理者採用類似作業系統設陷機制啟動系統呼叫的方式,確保作為應用程式的作業系統不會搞垮大家。

前面有提到提昇切換速度的「執行資料結構」(x86的TSS)、以及強化應用程式與作業系統互動的「標準化系統呼叫介面」,Intel VT-x和AMD-V分別定義了VMCS(VM Control Structure)和VMCB(VM Control Block)資料結構,作為x86虛擬化技術的TSS。每當處理器切換、重啟、跳出作業系統前,處理器就先載入並更新其資料。因享有原生硬體加速,並可透過新增的虛擬機管理指令,反向讓作業系統意識到「原來腳底下還有土地公」,強化作業系統和虛擬機器管理者的互動,減少不必要的切換,大幅提昇執行效率。

不過Intel AMD各搞各的結果就是虛擬機管理者開發商會很辛苦,而且實現「不停機動態轉移」變成不可能的任務。

花了好大的功夫繞了好大的一圈,總算讓x86處理器可以有效率的被虛擬化,但這些年來一路疊床架屋的x86虛擬化技術哪有這麼簡單,請各位科科多多期待本專欄,科科科科科。

相關消息

科技應用
EVOX《對話式 AI 白皮書》:掌握 AI 商務溝通新趨勢
癮特務
3 天前
即拍即印普普風概念印章,製造屬於自己的圖像
annti wang
15 年前
開箱評測
被評價為「每步都非常舒服」的恢復型拖鞋 2種熱賣的日常款比較
Gizmodo Japan
1 天前
文化創意
國家鐵道博物館第一階段開放 免費展區即有豐富內容、柴電工廠吸收新知
Chevelle.fu
20 個小時前
汽車未來
全新改款 BMW iX 豪華純電旗艦休旅強勢上市!「THE NEW BMW iX」現場直擊,亮點分享一次了解!
癮特務
10 天前
開箱評測
這麼薄卻可6裝置充電、總輸出達130W 這款Anker充電器規格簡直是拼命了
Gizmodo Japan
21 個小時前
開箱評測
可以與行李箱組合的三合一背包 我無法割捨Patagonia的理由
Gizmodo Japan
20 個小時前
產業消息
聯發科2025Q2手機營收佔52%預期旗艦天璣年內創造30億美金營收 首款2nm晶片維持9月設計定案
Chevelle.fu
1 天前
《奇妙之旅》家族競技展開 熱鬪場內容介紹
皮耶哈
15 年前