QNX Hypervisor —— 虚拟机
一個正在運行的虛擬機管理器包括虛擬機管理器微內核及其虛擬化庫(libmod_qvm.a)和一個或多個虛擬機進程實例(qvm)。
什么是虛擬機?
在QNX Hypervisor環境中,每個虛擬機(VM)都是一個qvm進程實例。qvm進程是一個操作系統進程,運行在內核之外的虛擬機管理器宿主機中。每個實例都由一個標識符進行標記,以便讓微內核知道它是一個qvm進程。
如果您還記得關于VM的任何內容,請記住,從客戶機操作系統的角度來看,托管該客戶機的VM是硬件。這意味著,就像一個運行在物理主板上的操作系統預期的某些硬件特征(體系結構、主板規格、內存和CPU、設備等),一個運行在VM上的操作系統也期望這些特征:運行客戶機的VM必須匹配客戶機的期望。
當您配置VM時,您實際上正在組裝一個硬件平臺。不同之處在于,您不是組裝物理存儲卡、CPU等,而是在指定機器的虛擬組件,qvm進程將根據您的規格創建和配置這些組件。
關于什么地方出現什么東西的規則和真實的板子是一樣的:
-  不要安裝兩個東西,卻都試圖響應相同物理地址。 
-  您的VM配置所組裝的環境,必須是您將要運行的軟件(客戶機操作系統)準備運行的環境。 
對硬件的類比,也在另一個方向上起作用。VM不需要知道它的客戶機在做什么,正如硬件不需要知道操作系統在做什么一樣。事實上,VM也不可能知道客戶機在做什么(“客戶機是一個二進制大對象”)。
更多的有關配置VM的信息,請參見“配置”章節中的“組裝和配置VM”。
qvm服務
每個qvm進程實例都提供的關鍵的虛擬機管理器服務。
VM啟動
為了創建可以運行客戶機操作系統的虛擬環境,qvm進程實例在啟動時執行以下操作:
-  讀取、解析和驗證VM配置文件(*.qvmconf)以及進程的啟動命令行所輸入的配置信息,如果配置無效則退出,并將有意義的錯誤消息打印到日志中。 
-  設置中間階段表(intermediate state tables)(ARM:階段2(Stage 2)的頁表,x86:擴展頁表(Extended Page Tables:EPT))。 
-  創建(組裝)和配置VM,包括: 
-  -  為客戶機分配RAM(讀/寫)和ROM(只讀) 
-  為它呈現給客戶機的每個虛擬CPU提供一個線程 
-  準備透傳設備,并使得其對客戶機可用 
-  為托管的客戶機定義和配置虛擬設備(vdev) 
 
-  
VM操作
在操作一個qvm進程實例的過程中,執行以下操作:
-  對客戶機嘗試訪問的內存地址上下邊界設置陷阱,并確定如何處理它們(例如:如果地址是到vdev,則調用vdev代碼(客戶端退出,然后在vdev代碼完成時調用客戶端入口);如果該地址確實超出了邊界,做類似的處理)。 
-  在釋放物理CPU前,保存其客戶機的上下文。 
-  在將客戶機重新投入執行之前,恢復其客戶機的上下文。 
-  負責任何失效處理。 
-  執行確保VM完整性所需的任何維護活動。 
管理客戶機上下文
在虛擬化環境中,CPU虛擬化擴展的職責是從客戶機的動作中,識別出客戶機什么時候需要退出。不過當CPU觸發客戶機退出時,托管客戶機的qvm進程實例(例如VM)會保存客戶機的上下文。當客戶機完成其任務,并準備重新進入時,進程實例將恢復客戶的上下文。
管理特權等級
qvm進程實例管理客戶機在進入和退出時特權級別,以確保客戶機可以運行,并保護系統不受錯誤代碼的影響。
在客戶機進入時,qvm進程實例要求CPU提供客戶機運行所需的特權級別,僅此而已。
在客戶端退出時,qvm進程實例要求CPU恢復到虛擬機管理器宿主機運行所需的特權級別。
只有CPU硬件才能改變特權級別。qvm進程執行更改CPU特權級別所需的操作。這種機制(也即操作)是特定于體系結構的。
客戶機訪問虛擬和物理的資源
每個qvm進程實例都管理其托管的客戶機對虛擬和物理資源的訪問。
當客戶機以以下的某種方式,試圖訪問其客戶機物理內存中的地址時,托管該客戶機的qvm進程將檢查該訪問嘗試,并作出如下響應:
允許
????????客戶機試圖訪問其所擁有的內存區域。
????????qvm進程實例不做任何操作。
透傳設備
????????客戶機試圖訪問分配給物理設備的內存,并且客戶機的VM被配置為知道客戶機可以直接訪問該設備。
????????qvm進程實例不做任何操作??蛻魴C直接與設備通信。
虛擬設備
????????客戶機試圖訪問分配給虛擬設備的內存(虛擬的或準虛擬的)
????????qvm進程實例請求適當的特權級別更改,并將執行傳遞給它所請求設備的代碼。例如,客戶機的CPUID請求會觸發qvm進程實例來仿真硬件,并像非虛擬化系統中的硬件那樣響應客戶機。
故障
????????客戶端試圖訪問它沒有權限訪問的內存。
????????qvm進程實例向客戶返回一個適當的錯誤。
以上是通過CPU進行的訪問嘗試。DMA訪問控制由SMMU管理器管理(參見“DMA設備容器(smmuman)”)。
原文鏈接:
http://www.qnx.com/developers/docs/7.0.0/#com.qnx.doc.hypervisor.user/topic/virt/qvm.html
總結
以上是生活随笔為你收集整理的QNX Hypervisor —— 虚拟机的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: Qt_套接字
- 下一篇: 如何判断自己是否适合播音主持,学播音主持
