日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

Intel的cpu虚拟化

發布時間:2024/1/4 综合教程 56 生活家
生活随笔 收集整理的這篇文章主要介紹了 Intel的cpu虚拟化 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

intel的cpu虛擬化,就不得不提到vt-x。vt-x是intel的CPU硬件虛擬化技術,但是在操作系統內部查看cpu的flag時,是否支持硬件虛擬化的的判斷標準是是否有vmx,vmx是什么,它和虛擬化有什么關系

幾個基礎概念

1.VMM:

虛擬機監視器在宿主機上表現為一個提供虛擬機CPU,內存以及一系列硬件虛擬的實體,這個實體在KVM體系中就是一個進程,如qemu-kvm。VMM負責管理虛擬機的資源,并擁有所有虛擬機資源的控制權,包括切換虛擬機的CPU上下文等。

2.Guest:

可能是一個操作系統(OS),也可能就是一個二進制程序。對于VMM來說,他就是一堆指令集,只需要知道入口(rip寄存器值)就可以加載。

Guest運行需要虛擬CPU,當Guest代碼運行的時候,處于VMX non-root模式,此模式下,該用什么指令還是用什么指令,該用什么寄存器還用什么寄存器,該用cache還是用cache,但是在執行到特殊指令的時候(比如Demo中的out指令),把CPU控制權交給VMM,由VMM來處理特殊指令,完成硬件操作。

3.CPU運行級別:

CPU支持ring0~ring3 4個等級,但是Linux只使用了其中的兩個ring0,ring3。當CPU寄存器標示了當前CPU處于ring0級別的時候,表示此時CPU正在運行的是內核的代碼。而當CPU處于ring3級別的時候,表示此時CPU正在運行的是用戶級別的代碼。當發生系統調用或者進程切換的時候,CPU會從ring3級別轉到ring0級別。ring3級別是不允許執行硬件操作的,所有硬件操作都需要內核提供的系統調用來完成。

4.VMX:

為了從CPU層面支持VT技術,Intel-V 在 ring0~ring3 的基礎上,擴展了傳統的x86處理器架構,引入了VMX模式,VMX分為root和non-root。VMM運行在VMX root模式;Guest運行在VMX non-root模式。

CPU虛擬化

有了cpu的運行級別和VMX,就可以看一下CPU虛擬化的基本運行情況了。

Guest OS里的內核運行于VMX non-root下的ring0

Guest OS里的應用程序運行于VMX non-root模式下的ring3

Host OS的內核和VMM運行于VMX root模式下的ring0。

雖然GuestOS的內核也運行于ring0,但是由于是non-root模式,所以不能操作某些資源,不能運行敏感指令。

Guest也分ring0~ring3,不過他并不感知自己處于VMX non-root模式下。

VMM與Guest的切換

1. VM entry 和 VM exit

Guest與VMM之間的切換有兩個過程:VM entry 和 VM exit。Guest運行時處于VMX下的non-root模式,當執行了特殊操作的時候(具體哪種操作后面的VM exit原因中會提到),通過VM exit將cpu控制權返回給VMM,從而陷入到root模式下的ring0內的VMM,進行“陷入模擬”。 VMM處理完特殊操作后再通過VM entry把結果和控制權返回給Guest。

2.導致VM exit的原因

導致VM exit的原因有多種,例如Guest執行了硬件IO訪問操作,或者Guest調用了VMCALL指令,或者調用了退出指令,或者產生了一個page fault,或者訪問了特殊設備的寄存器等。在內核中有關于VM exit原因的列表。

3.VMCS:(虛擬機控制結構)

這是虛擬機的戶口本,對虛擬機至關重要。Guest Exit的時候,會將當前Guest的上下文保存到VMCS中,Guest entry的時候把VMCS上下文恢復給VMM。VMCS是一個64位的指針,指向一個真實的內存地址,VMCS是以vCPU為單位的,即Guest有多少個vCPU,就對應多少個VMCS指針。VMCS的操作包括VMREAD,VMWRITE,VMCLEAR。

當Guest發起執行的指令處于VMX模式(包括運行VMM的root和運行Guest代碼的non-root)的時候,Guest不能判斷當前CPU是否處于VMX模式還是非VMX模式。當產生VM exit的時候,CPU會將exit reason保存到MSRs(VMX模式的特殊寄存器組),對應到KVM就是vCPU->kvm_run->exit_reason。VMM再根據exit_reason做相應的處理。所以MSRs寄存器就成了Guest和VMX交接的中間人。

總結

以上是生活随笔為你收集整理的Intel的cpu虚拟化的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。