對於虛擬機器來說, 如果指定1g記憶體,以slot為單位,進行mmap虛擬記憶體對映申請,申請之後memset進行物理記憶體申請,從而占用物理記憶體。對於宿主機來說mmap申請宿主機虛擬記憶體為連續的,進行memset初始化發生缺頁中斷從而申請物理記憶體,這些宿主機物理記憶體未必是連續的。對於虛擬機器來說,虛擬機器物理記憶體當然是連續的,所以可以讓虛擬機器物理記憶體虛擬對應與宿主機虛擬記憶體。
注意:1.slot不是物理上的記憶體槽,而是把物理上記憶體按照相應邏輯進行分隔,例如顯示卡記憶體範圍可以稱為乙個slot, bios記憶體範圍可以稱之為另乙個slot等等。
2.轉換後,知道宿主機虛擬位址後,當然vmm可以讀寫客戶機的記憶體。宿主機虛擬位址實際是宿主機程序虛擬位址,屬於使用者空間。
如下圖所示:
| |
~ ~ ~ ~
~ ~ ~ ~
hva?---> | |<----gfn
| | (slotn)
base_hva-->| |<----base_gfn
~ ~ ~ ~
~ ~ ~ ~
| |
| | (slot0)
| |
備註:左側為宿主機虛擬記憶體,右側為客戶機物理記憶體
基於上圖,客戶機物理頁框如何轉換為宿主機實體地址(gfn---->hva)
hva=base_hva+(gfn-base_gfn)*page_size
**實現如下:
unsigned long gfn_to_hva(struct kvm *kvm, gfn_t gfn)
export_symbol_gpl(gfn_to_hva);
上面已經談到1g記憶體,虛擬機器以slot方式分隔,命名為alias一些記憶體slot,這一些slot記憶體一般對應於顯示卡記憶體等。對於這些slot記憶體(稱之為alias)需要重新對映到其他的slot記憶體, 客戶機物理頁框轉換為宿主機虛擬位址只針對其他的slot記憶體(非alias)記憶體slot。
語句(1)判斷如果客戶機物理頁框在命名為alias記憶體slot,需要以對映後的頁框計算,否則gfn不變
語句(2)根據客戶機物理頁框查詢屬於那個slot
語句 (5)進行客戶機物理頁框到宿主機虛擬位址轉換
虛擬MMU 客戶機頁表遍歷
客戶機頁表的遍歷 1.資料結構 struct guest walker c b a 某級頁表 a 頁表項基位址 b index的位址 c index的位址內容 遍歷完成後,資料結構內容為 假設pt max full levels 4 table gfn 0 3 存放 4級頁表項基位址 pte gpa...
配置zabbix客戶機
配置zabbix客戶機 1.1 問題 本例要求新準備一台centos 7虛擬機器,作為zabbix客戶機,完成下列任務 1 配置新虛擬機器svr8 安裝zabbix agent軟體包 允許zabbix server服務端採集資料 啟動zabbix agent服務 1.2 步驟 實現此案例需要按照如下...
瘦客戶機及其應用
近年來,瘦客戶機 機群 得到廣泛應用。在學校 機關和中小企業,都有瘦客戶機 機群 應用的例項。所謂 瘦客戶機 thin clients 是指,它的所有軟體和資料都儲存在網路伺服器上的計算機。資料和應用軟體的集中儲存和分配,具有許多優點,能夠節約大量的系統購置和管理成本。瘦客戶機系統允許人們在不同地點...