女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

虛擬化技術—CPU虛擬化

冬至子 ? 來源:天翼云開發者社區 ? 作者:謝**悅 ? 2023-06-06 15:47 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

物理機器是由CPU,內存和I/O設備等一組資源構成的實體。虛擬機也一樣,由虛擬CPU,虛擬內存和虛擬I/O設備等組成。VMM(VM Monitor)按照與傳統OS并發執行用戶進程的相似方式,仲裁對所有共享資源的訪問。本文將分別討論CPU虛擬化、內存虛擬化和I/O虛擬化技術的原理和實現。

在虛擬化的平臺上,虛擬機(guest VM)所使用的多個虛擬CPU(以下稱vCPU)可能是共享同一個物理CPU(以下稱pCPU)的。VMM負責vCPU的調度,當一個vCPU被調度到獲得pCPU的使用權后,基于該vCPU運行的guest OS又可以調度OS中的各個線程/進程了。也就是說,guest OS中的各個線程/進程分時復用了vCPU,而各個vCPU又分時復用了pCPU。

為了從硬件上提供對vCPU調度和切換的支持,Intel推出了被稱為VT-x(Virtualization Technology for x86)的CPU虛擬化擴展技術,用戶可通過VMXON/VMXOFF指令打開/關閉這個功能。和Intel亦敵亦友的AMD也推出了被稱為AMD-V的對應技術。

Linux中,從用戶空間trap到內核空間可以通過system call或者interrupt/exception。以system call基于x86的實現為例,早期x86提供的trap方法是int 0x80這樣的software interrupt機制,而后改成了SYSENTER/SYSEXIT的指令對,現在則已經被速度更快的SYSCALL/SYSRET取代了。

類似地,在VT-x中,從guest VM進入VMM(這個過程被稱為VM exit)通常有三種方式:

1)執行VMCALL指令,這種方式被稱為hyper call,跟執行SYSCALL指令實現的system call原理差不多。

2)發生了硬件中斷或軟件異常。

3)guest VM執行了一些敏感指令。有一些敏感指令并不會產生VM exit,比如SYSENTER;有一些敏感指令則可以根據下面將要介紹的VM executation control fields配置來選擇是否產生VM exit。

進入VMM就意味著從non-root mode進入了root mode,反之,從VMM返回guest VM(這個過程被稱為VM entry)則是重新回到了non-root mode,mode的切換意味著上下文(context)的保存和恢復。

上下文其實是個難以定義的概念,它是從CPU的角度引出的,簡單地說,上下文就是程序(進程/中斷)運行時所需要的寄存器的最小集合,這些寄存器的后面可能代表著程序運行的一類資源。

上下文切換是指程序從一種狀態切換到另一種狀態(比如從用戶態切換到內核態),或者從一個程序切換到另一個程序(比如進程切換)時,導致上下文相關寄存器的值變化的行為。對于上下文切換時不需要改變的寄存器,也可以說它不是該程序的上下文。

VMCS

在Linux中,一個進程的相關信息保存在task_struct中。虛擬機的上下文比進程的上下文更為復雜,在VT-x中,由VMCS(Virtual-Machine Control data Structures)負責保存vCPU需要的相關狀態和上下文信息。

VMCS在使用時需要和pCPU綁定。一個pCPU可以對應多個vCPU,而一個vCPU對應一個VMCS,但在任意給定時刻,一個pCPU上只能運行一個vCPU(就像在多線程調度中,某一時刻,一個CPU上只能運行一個線程一樣)。

因此,一個pCPU只能綁定一個VMCS,一個VMCS也只能與一個pCPU綁定,可分別通過VMPTRLD/VMCLEAR指令建立/解除兩者的綁定關系。VMCS存放在內存中,一個VMCS占據4KB大小,由6個區域組成:

1)Guest state area,用于保存CPU在non-root mode下運行時的狀態。當發生VM exit的時候,CPU將自己當前的狀態保存到guest state area中,當發生VM entry的時候,guest state area保存的狀態將被自動加載到CPU中。

其實也不用一口氣將所有寄存器的值都恢復,反正都是保存在VMCS中的,可以等到該寄存器真正被guest使用到時再恢復,這就是LazySave/Restore,其基本思想是盡量將寄存器的保存/恢復延遲到最后一刻,減少無用功,提高上下文切換的效率。這種思想在Linux的實現中也比比皆是,比如copy on write, demand paging等,拖延癥也不見得是件壞事哈。

2)Host state area,用于保存CPU在root mode下運行時的狀態。需要保存的寄存器和guest state area是差不多的,但是保存/恢復的過程是剛好反過來的。

3)VM executation control fields,用于控制non-root模式下CPU的行為。出于優化的目的,VMM可以讓某些敏感指令不產生VM exit,以減少mode切換帶來的上下文開銷,而這就是由VM execution control來實現的。

比如讀取timestamp的RDTSC指令,在一些延時函數的實現中,該指令會被頻繁使用,如果每次guest執行該指令的時候都trap到VMM,那系統開銷就太大了,這時VMM可以選擇每隔一段時間讀取物理CPU真實的 timestamp值,然后填寫guest 的timestamp虛擬寄存器,來達到模擬RDTSC指令的效果。

4)VM exit control fields,用于規定VM exit時CPU的行為,比如是否應答外部中斷。

5)VM exit information fields。VMM除了通過VM exit control fields來控制VM exit的行為,還需要知道VM exit的相關信息(比如trap的具體原因),這些信息就是保存在VM exit information fields中的。

6)VM entry control fields,用于控制VM entry的過程,比如后續的文章要介紹的中斷注入。

VM executation control可理解為what to trap,就是哪些event會引起trap,哪些不會。VM exit control可理解為how to trap,VM exit information則可理解為why to trap。讀寫VMCS這段內存空間需要使用專門的VMREAD和VMWRITE指令。

小結一下,一個完整的VT-x使用流程是這樣的:首先需要通過CPUID指令檢查當前CPU是否支持虛擬化擴展。如果支持,則通過VMXON使能VT-x,建立VMCS并通過VMPTRLD綁定物理CPU。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 寄存器
    +關注

    關注

    31

    文章

    5432

    瀏覽量

    124051
  • Linux系統
    +關注

    關注

    4

    文章

    605

    瀏覽量

    28477
  • 虛擬機
    +關注

    關注

    1

    文章

    966

    瀏覽量

    29252
  • 硬件中斷
    +關注

    關注

    0

    文章

    11

    瀏覽量

    7022
  • VMM
    VMM
    +關注

    關注

    0

    文章

    11

    瀏覽量

    10213
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    #硬聲創作季 云計算:6.3 CPU虛擬-類虛擬

    cpu云計算虛擬
    Mr_haohao
    發布于 :2022年10月15日 13:23:46

    Linux上的虛擬技術歷史回顧

    虛擬技術的應用十分廣泛. 當前虛擬技術主要關注于服務器的
    發表于 07-22 07:18

    幾種主要的虛擬技術有什么不同?

    虛擬技術作為建設綠色數據中心的一項重要技術,一直在不斷發展完善,其應用領域包括操作系統、服務器、存儲以及網絡。網絡的虛擬
    發表于 08-14 06:52

    有關虛擬機及虛擬技術的幾點詮注

    虛擬機及虛擬技術給計算機應用注入了新的研究與開發點,同時也存在諸多不利因素。本文綜述了虛擬機及虛擬
    發表于 06-22 18:04 ?36次下載

    虛擬機及虛擬技術

    虛擬機及虛擬技術給計算機應用注入了新的研究與開發點,同時也存在諸多不利因素。本文綜述了虛擬機及虛擬
    發表于 09-07 10:15 ?13次下載

    CPU虛擬技術

    CPU虛擬技術             
    發表于 12-24 10:58 ?765次閱讀

    虛擬技術的應用

    虛擬技術具有可以減少服務器的過度提供、提高設備利用率、減少IT的總體投資、增強提供IT環境的靈活性、可以共享資源等優點,但虛擬
    的頭像 發表于 01-02 16:15 ?1.4w次閱讀

    虛擬技術有哪些

    本視頻主要詳細介紹了虛擬技術有哪些,分別有CPU虛擬、網絡
    的頭像 發表于 01-02 16:25 ?3.9w次閱讀

    CPU虛擬助力將會給云計算帶來什么

    虛擬技術是一套解決方案,完整的情況需要CPU、主板芯片組、BIOS和軟件的支持,例如虛擬機監視器軟件或者某些操作系統本身。
    發表于 01-02 14:10 ?730次閱讀

    服務器虛擬技術到底是什么

    是PowerKVM;以及AIX虛擬PowerVM,支持vSCSI和NPIV兩種技術虛擬出系統叫VIOS)。今天的內容覆蓋了CPU
    發表于 06-10 08:00 ?0次下載
    服務器<b class='flag-5'>虛擬</b><b class='flag-5'>化</b><b class='flag-5'>技術</b>到底是什么

    服務器虛擬技術是什么,常見虛擬架構有哪些

    服務器虛擬技術是什么?對于服務器虛擬技術其實應用是比較廣泛的,它主要是將任何的一種形式的資源
    的頭像 發表于 09-01 16:51 ?8310次閱讀

    I/O軟件模擬虛擬和類虛擬

    最復雜的部分,因為涉及到CPU、操作系統、Hypervisor以及I/O設備的相互配合。I/O虛擬也經歷了從軟件模擬虛擬、類
    的頭像 發表于 10-13 11:09 ?3015次閱讀

    I/O虛擬及Virtio接口介紹

    I/O虛擬是計算機虛擬最復雜的部分,因為涉及到CPU、操作系統、Hypervisor以及I/O設備的相互配合。I/O
    的頭像 發表于 10-26 17:21 ?4978次閱讀

    虛擬技術是什么 虛擬技術介紹

    利用率的思路,從而實現簡化管理,優化資源等目的的解決方案,就叫做虛擬技術。  以下是一些業界標準組織對虛擬的定義。  “
    發表于 07-19 11:26 ?1次下載

    云計算中的虛擬技術應用

    云計算中的虛擬技術是一種將計算機物理實體(如服務器、存儲設備、網絡設備)通過軟件技術劃分為多個虛擬實體的
    的頭像 發表于 10-24 09:22 ?1812次閱讀