iT邦幫忙

第 12 屆 iT 邦幫忙鐵人賽

DAY 8
1

前言

上篇提到, VM 可以被粗略的分為全虛擬化和半虛擬化,其中,全虛擬化一般來說透過 Hyperviosr (VMM) 來實現,常見又分為兩種「Type 1 虛擬化」以及「Type 2 硬體輔助的虛擬化」。半虛擬化則不需要 Hypervisor 耗費資源來建置虛擬機,而是讓虛擬機知道自己是虛擬機,藉此達到模擬的目的

虛擬化技術的發展

  1. 純軟體模擬
    追根究底如果我們想寫一台虛擬機,那是完成一支程式——用來模擬其他電腦系統的程式。
    虛擬機最一開始的想法便是利用分層的方式,逐層模擬該層的硬體與軟體,藉此達到模擬的效果。

    其實際作法便是,當虛擬機的程式需要用到 Kernel Mode 時,很自然的就會去呼喚 system call ,但因為虛擬機沒有權限使用 system call ,便會發生 Trap,所以藉由 VMM 接收這 Trap 的訊息,如下圖所示,進一步對其想做的事情模擬。

  2. 軟體全虛擬化方案
    純軟體模擬的兼容性高,但這樣的方法效率相當低,故由 VMWare 公司提出軟體全虛擬化方案,
    藉由運用 x86 CPU 的指令級別,劃分一個新的規則給予 VMM:

    使其能夠在在 Trap 前,利用 Binary Translation 的技術,對要執行的組合語言事先翻譯,提早避免了沒有權限的問題。


但可想而知的,想要直接翻譯 Binary Code,便會遇到記憶體的問題。
透過更換 TLB 頁表的方式,可以達到將虛擬機內的虛擬記憶體位置,轉換為實體機的實體記憶體位置

結論

到目前為止,我們主要介紹了傳統的全虛擬化方案,明天,會介紹藉由硬體輔助的方式,來加速虛擬化!


上一篇
Day 7 新想法:VM 觀念介紹 - 1
下一篇
Day 9 新想法:VM 觀念介紹 - 3
系列文
在家機器學習?用虛擬化技術實現個人 AI 環境配置30

尚未有邦友留言

立即登入留言