
我想這個過程包括觀察虛擬記憶體中的某些特定模式並更改它,但我想知道它到底是如何運作的。也許是某種新的 BIOS 呼叫? (類似於作業系統從 RTC 查詢時間。)我很感興趣,因為我想知道我是否可以自己連接它以實現主機和客戶端之間的任意資料通訊。
答案1
首先了解 Virtualbox 是安裝在主機作業系統上的程序,因此它提供可執行檔、庫和其他資源。其中許多程式庫將呼叫主機作業系統功能和服務來完成其工作。
Virtualbox 也將驅動程式安裝到作業系統核心。這些驅動程式定義了核心如何為 Virtualbox 的虛擬硬體層提供硬體介面。
虛擬硬體層位於主機作業系統和來賓作業系統之間。對於主機來說,它只是另一個程序,但對於訪客來說,它似乎是真正的硬體。
重要的是要理解,Virtualbox 作為一個程式正在執行,而來賓正在執行,但兩者正在做完全不同的事情。 Virtualbox 正在與主機合作,向來賓提供一台假計算機,而來賓只是在假硬體上作為作業系統運作。
作業系統驅動程式通常不適合來賓,或提供的功能極為有限。來賓不知道自己是虛擬機,也無法向主機詢問問題。這就是我們需要訪客工具的原因。
訪客工具使用適合虛擬化硬體的驅動程式升級系統驅動程序,並與假硬體通訊以詢問諸如“我的最大解析度是多少”之類的問題。 VBox 反過來詢問作業系統,並向訪客報告。
透過在來賓中安裝可與 VBox 通訊的軟體,來賓工具還可以啟用其他功能,例如共用資料夾對應。然後,VBox 使用命名管道或 ole(在 Windows 中)或網路 IPC (Linux) 等作業系統技術在其自身和主機作業系統之間來回傳遞資料。
這裡重要的一點是,來賓不知道它是一個虛擬機,而主機也不知道它正在運行的虛擬機。 Vbox 位於兩者之間並代理所有通訊。對實體 BIOS 沒有特別的依賴。
讓您想到 BIOS 的可能是虛擬化擴充。請瞭解,VT是一組CPU指令,與BIOS無關。 VBox 執行已編譯為 VT 指令呼叫(在適當時)的程式碼,以便它可以執行與虛擬操作相關的最佳化指令。再說一次,主機作業系統與此無關。