虛擬MMU 客戶機頁表遍歷

2021-06-14 19:46:52 字數 1185 閱讀 4365

客戶機頁表的遍歷

1.資料結構

struct guest_walker ;

+-------+

|       |

+-------+

|   c   |

|-------|<-----b          

|       |

+-------+

|-------|      

|-------|       

+-------+<-----a

某級頁表

a:頁表項基位址

b:index的位址

c:index的位址內容

遍歷完成後,資料結構內容為

假設pt_max_full_levels=4

table_gfn【0-3】存放 4級頁表項基位址

pte_gpa【0-3】  存放4級頁表項中index基位址

ptes【0-3】     存放4級頁表項中index基位址內容

pt_access:     gfn的訪問許可權

pte_access:    gfn的訪問許可權

2:客戶機頁表的遍歷,也是虛擬mmu

static int fname(walk_addr)(struct guest_walker *walker,

struct kvm_vcpu *vcpu, gva_t addr,

int write_fault, int user_fault, int fetch_fault)

walker->level = vcpu->arch.mmu.root_level;//64位客戶機系統,頁表級數為4.

pte = vcpu->arch.cr3; //頁目錄基位址

for (;;)

pt_access = pte_access;

--walker->level; //遍歷下一級頁表

}//頁表遍歷完成後,獲取頁表的訪問許可權,存放到資料結構中

walker->pt_access = pt_access;

walker->pte_access = pte_access;

pgprintk("%s: pte %llx pte_access %x pt_access %x\n",

__func__, (u64)pte, pt_access, pte_access);

return 1;

}

客戶機物理頁框到宿主機虛擬位址轉換

對於虛擬機器來說,如果指定1g記憶體,以slot為單位,進行mmap虛擬記憶體對映申請,申請之後memset進行物理記憶體申請,從而占用物理記憶體。對於宿主機來說mmap申請宿主機虛擬記憶體為連續的,進行memset初始化發生缺頁中斷從而申請物理記憶體,這些宿主機物理記憶體未必是連續的。對於虛擬機器...

配置zabbix客戶機

配置zabbix客戶機 1.1 問題 本例要求新準備一台centos 7虛擬機器,作為zabbix客戶機,完成下列任務 1 配置新虛擬機器svr8 安裝zabbix agent軟體包 允許zabbix server服務端採集資料 啟動zabbix agent服務 1.2 步驟 實現此案例需要按照如下...

瘦客戶機及其應用

近年來,瘦客戶機 機群 得到廣泛應用。在學校 機關和中小企業,都有瘦客戶機 機群 應用的例項。所謂 瘦客戶機 thin clients 是指,它的所有軟體和資料都儲存在網路伺服器上的計算機。資料和應用軟體的集中儲存和分配,具有許多優點,能夠節約大量的系統購置和管理成本。瘦客戶機系統允許人們在不同地點...