二進制翻譯
回答
見VMware_paravirtualization.pdf,頁和。
這種方法,在圖5所描繪的, 轉換內核代碼來替換 與具有 虛擬 硬件預期的效果的說明新 序列nonvirtualizable指令。
所以特權指令翻譯成其它指令,訪問虛擬BIOS,內存管理,並通過虛擬機監視器提供的設備,而不是直接在實際硬件上執行。
究竟是什麼這些指令,由虛擬機實現定義。專有虛擬化軟件供應商不一定會發布他們的二進制翻譯技術。
二進制翻譯是一種系統虛擬化技術。
在來賓操作系統的二進制敏感指令由替換任一系統管理程序調用該安全地處理這樣的敏感的指令或由導致CPU陷阱一些未定義操作碼。這個CPU陷阱由Hypervisor處理。
在最現代的CPU,上下文敏感的指令都是非虛擬化的。二進制翻譯是一種克服這種限制的技術。
例如,如果訪客想要修改/讀取包含重要標誌/控制位域的CPU處理器狀態字,主機程序將掃描客戶二進制文件中的這些指令,並將其替換爲對管理程序的調用或一些虛擬操作碼。在另一方面
半虛擬是其中客戶OS的源代碼被修改的技術。所有與系統資源訪問相關的代碼都使用Hypervisor API進行修改。
因此,爲什麼使用Para-Virtualization [更低的 「虛擬化開銷」](http://www.vmware.com/files/pdf/VMware_paravirtualization.pdf)?不應該Para-Virtualization實際上有更高的**開銷嗎? – Pacerier 2015-04-22 06:48:58
在半虛擬化的情況下,源代碼已被修改。這樣的圖像直接調用管理程序API。在二進制翻譯的情況下,本地操作系統必須首先掃描來賓操作系統指令流,並根據需要對流進行修改。因此,在這兩者之間,Para-Virtualization的開銷較低。 – Raj 2015-05-24 10:46:52
@Raj 儘管para虛擬化的運行時間看起來似乎遠低於運行時間開銷,但它只能在'開源'系統上使用,因爲管理程序必須提供自定義API,並且需要使用它們來代替操作系統的通用功能。即使您的管理程序具有統一且一致的API模型,某些系統(如常青色Windows操作系統以及Apple的操作系統)也不利於此類更改。所以它的確有它的缺點 – HighOnMeat 2015-06-08 11:36:37
- 1. 二進制翻譯
- 2. Java二進制翻譯?
- 3. Java二進制翻譯器
- 4. 二進制翻譯|交叉編譯
- 5. 翻譯包含二進制值,以十六進制
- 6. 十六進制翻譯
- 7. 翻譯回一個未知的二進制文件!?可能嗎?
- 8. 二進制列被翻譯爲空Java類型
- 9. 將二進制文件翻譯爲文本並返回
- 10. C#函數來翻譯二進制代碼
- 11. 陷阱和模擬與二進制翻譯有什麼區別?
- 12. Golang二進制搜索樹算法翻譯
- 13. 從MCInst翻譯成ELF二進制在LLVM
- 14. 翻譯CF的二進制編碼爲PHP
- 15. LLVM編譯JIT二進制
- 16. 編譯matlab linux二進制
- 17. 編譯二進制文件
- 18. 角度翻譯十進制數
- 19. 轉換二進制到十進制和翻轉0和1 JAVA
- 20. 理解類值(翻譯十六進制轉換爲十進制)
- 21. 制定翻譯軌
- 22. 十進制到二進制(二進制)
- 23. 二進制運算符在Python ...翻譯如果(C1> = 「\ XC0」 &C1 <= 「\ XDF」)
- 24. 鏡子API - 訪問實際語音二進制,而不是翻譯的文本
- 25. Visual C++編譯扁平二進制
- 26. 創建編譯庫的二進制包
- 27. pip編譯vs二進制文件
- 28. 使用VexCL「編譯二進制文件」
- 29. pthreads編譯但未創建二進制
- 30. 編譯OpenSSL的二進制靜態
指向PDF的鏈接已損壞。請參閱 - https://www.vmware.com/content/dam/digitalmarketing/vmware/en/pdf/techpaper/VMware_paravirtualization.pdf – nsane 2016-09-15 11:01:20
謝謝,修復了斷開的鏈接。 – mizo 2016-09-19 19:46:54