相關文章

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

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

.

59d06_vmm03

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

.

59d06_vmm04

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

.

59d06_vmm05

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

.

59d06_vmm06

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

.

59d06_vmm07

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

.

59d06_vmm08

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

.

59d06_vmm09

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

.

59d06_vmm10

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

.

59d06_vmm11

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

.

59d06_vmm12

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

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

對於想進一步研究虛擬化技術的資訊科班學生與業界人士,筆者強力推薦《Virtual Machines: Versatile Platforms For Systems and Processes》,這是一本近年來難得一見的好書。細節請參考筆者兩年多前寫過的書評:
http://www.ithome.com.tw/itadm/article.php?c=41273
官方網站連結:
http://www.elsevier.com/wps/find/bookdescription.cws_home/705072/description#description

使用 Facebook 留言

22526eb02b1d74bb1ba9e59e4ae18e7a?size=48&default=wavatar
1.  機戰人 (發表於 2009年6月25日 22:03)


又在網站上面講解一次啊

真是令人驚訝

再度溫習虛擬化的功能啊

現在只有(上)

所以下一期的電腦王也是一定要買得啦~!
8d9e5e11a2e78090dc0992c52c8f0b70?size=48&default=wavatar
2.  Foster (發表於 2009年6月25日 22:06)
這期的完全看懂虛擬化(上)真的寫的很棒,希望水球先生能夠再接再厲,
寫出更多類似這樣的文章啊!
56798698d084be66bc77e8c3bac71489?size=48&default=wavatar
4.  痴漢水球 (發表於 2009年6月25日 23:16)
其實... 我有完整版本的投影片,放在 blog 上... 當初用 PowerPoint 隨手亂畫的。

http://molesterwaterball.blogspot.com/2009/05/abivt-xamd-v.html
http://molesterwaterball.blogspot.com/2009/05/dual-mode-of-os-isa.html
http://molesterwaterball.blogspot.com/2009/05/x86n.html
http://molesterwaterball.blogspot.com/2009/05/x86.html

當然,版權宣告寫的很清楚:Dedicated To PC ADV。

另外,這專題將分為三期,就這樣...
waterball
5.  waterball (發表於 2009年7月03日 09:14)
這兩期虛擬化有一個很致命的錯誤:虛擬機型態(VM Type)寫錯了...

Native VM (Bare Metal) 應為 Type 1,而非 Type 0。
Hosted VM 則是 Type 2,並非 Type 1。

換言之,作者本人當初在畫圖的時候,完全寫錯,後面的內容就一路錯到底了...

晚一點會請電腦王編輯部刊登勘誤啟事,第三期完結篇也將澄清錯誤。這次丟臉可大了...
A2c97d5badf377ee4f28f0dbe24fc751?size=48&default=wavatar
6.  wellss (發表於 2009年7月03日 21:23)
虛擬化是一個很有趣的東西
對我而言虛擬化最高的境界是完美的虛擬綠化軟體
不管跑啥米怪軟體都不用擔心弄壞電腦

感謝水球大告知~
以我個人而言 這種小錯誤是不打緊的
只要觀念、原理都正確就好了 好奇想問一下 Type 0 是啥?
零式戰機嗎 還是這個?http://cgi.ebay.com.hk/ws/eBayISAPI.dll?ViewItem&item=270364396916
XD

其實虛擬化章節的每張圖都滿清楚的
但每次想研究一下微架構的悲歌那些原文圖 挺累的 字很小 + +
也許水球大可以改天補個圖片

發表回應

謹慎發言,尊重彼此。按此展開留言規則