2011-05-15 68 views
11

的VMM俘獲特權指令和他們使用的二進制翻譯翻譯,但實際上進入這些是什麼特殊說明翻譯成?二進制翻譯

感謝

回答

11

VMware_paravirtualization.pdf,頁和。

這種方法,在圖5所描繪的, 轉換內核代碼來替換 與具有 虛擬 硬件預期的效果的說明新 序列nonvirtualizable指令。

所以特權指令翻譯成其它指令,訪問虛擬BIOS,內存管理,並通過虛擬機監視器提供的設備,而不是直接在實際硬件上執行。

究竟是什麼這些指令,由虛擬機實現定義。專有虛擬化軟件供應商不一定會發布他們的二進制翻譯技術。

+1

指向PDF的鏈接已損壞。請參閱 - https://www.vmware.com/content/dam/digitalmarketing/vmware/en/pdf/techpaper/VMware_paravirtualization.pdf – nsane 2016-09-15 11:01:20

+0

謝謝,修復了斷開的鏈接。 – mizo 2016-09-19 19:46:54

18

二進制翻譯是一種系統虛擬化技術。

在來賓操作系統的二進制敏感指令由替換任一系統管理程序調用該安全地處理這樣的敏感的指令或由導致CPU陷阱一些未定義操作碼。這個CPU陷阱由Hypervisor處理。

在最現代的CPU,上下文敏感的指令都是非虛擬化的。二進制翻譯是一種克服這種限制的技術。

例如,如果訪客想要修改/讀取包含重要標誌/控制位域的CPU處理器狀態字,主機程序將掃描客戶二進制文件中的這些指令,並將其替換爲對管理程序的調用或一些虛擬操作碼。在另一方面

半虛擬是其中客戶OS的源代碼被修改的技術。所有與系統資源訪問相關的代碼都使用Hypervisor API進行修改。

+0

因此,爲什麼使用Para-Virtualization [更低的 「虛擬化開銷」](http://www.vmware.com/files/pdf/VMware_paravirtualization.pdf)?不應該Para-Virtualization實際上有更高的**開銷嗎? – Pacerier 2015-04-22 06:48:58

+0

在半虛擬化的情況下,源代碼已被修改。這樣的圖像直接調用管理程序API。在二進制翻譯的情況下,本地操作系統必須首先掃描來賓操作系統指令流,並根據需要對流進行修改。因此,在這兩者之間,Para-Virtualization的開銷較低。 – Raj 2015-05-24 10:46:52

+1

@Raj 儘管para虛擬化的運行時間看起來似乎遠低於運行時間開銷,但它只能在'開源'系統上使用,因爲管理程序必須提供自定義API,並且需要使用它們來代替操作系統的通用功能。即使您的管理程序具有統一且一致的API模型,某些系統(如常青色Windows操作系統以及Apple的操作系統)也不利於此類更改。所以它的確有它的缺點 – HighOnMeat 2015-06-08 11:36:37