99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

虛擬化技術(shù)—CPU虛擬化

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

掃碼添加小助手

加入工程師交流群

物理機(jī)器是由CPU,內(nèi)存和I/O設(shè)備等一組資源構(gòu)成的實(shí)體。虛擬機(jī)也一樣,由虛擬CPU,虛擬內(nèi)存和虛擬I/O設(shè)備等組成。VMM(VM Monitor)按照與傳統(tǒng)OS并發(fā)執(zhí)行用戶進(jìn)程的相似方式,仲裁對(duì)所有共享資源的訪問。本文將分別討論CPU虛擬化、內(nèi)存虛擬化和I/O虛擬化技術(shù)的原理和實(shí)現(xiàn)。

在虛擬化的平臺(tái)上,虛擬機(jī)(guest VM)所使用的多個(gè)虛擬CPU(以下稱vCPU)可能是共享同一個(gè)物理CPU(以下稱pCPU)的。VMM負(fù)責(zé)vCPU的調(diào)度,當(dāng)一個(gè)vCPU被調(diào)度到獲得pCPU的使用權(quán)后,基于該vCPU運(yùn)行的guest OS又可以調(diào)度OS中的各個(gè)線程/進(jìn)程了。也就是說,guest OS中的各個(gè)線程/進(jìn)程分時(shí)復(fù)用了vCPU,而各個(gè)vCPU又分時(shí)復(fù)用了pCPU。

為了從硬件上提供對(duì)vCPU調(diào)度和切換的支持,Intel推出了被稱為VT-x(Virtualization Technology for x86)的CPU虛擬化擴(kuò)展技術(shù),用戶可通過VMXON/VMXOFF指令打開/關(guān)閉這個(gè)功能。和Intel亦敵亦友的AMD也推出了被稱為AMD-V的對(duì)應(yīng)技術(shù)。

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

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

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

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

3)guest VM執(zhí)行了一些敏感指令。有一些敏感指令并不會(huì)產(chǎn)生VM exit,比如SYSENTER;有一些敏感指令則可以根據(jù)下面將要介紹的VM executation control fields配置來(lái)選擇是否產(chǎn)生VM exit。

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

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

上下文切換是指程序從一種狀態(tài)切換到另一種狀態(tài)(比如從用戶態(tài)切換到內(nèi)核態(tài)),或者從一個(gè)程序切換到另一個(gè)程序(比如進(jìn)程切換)時(shí),導(dǎo)致上下文相關(guān)寄存器的值變化的行為。對(duì)于上下文切換時(shí)不需要改變的寄存器,也可以說它不是該程序的上下文。

VMCS

在Linux中,一個(gè)進(jìn)程的相關(guān)信息保存在task_struct中。虛擬機(jī)的上下文比進(jìn)程的上下文更為復(fù)雜,在VT-x中,由VMCS(Virtual-Machine Control data Structures)負(fù)責(zé)保存vCPU需要的相關(guān)狀態(tài)和上下文信息。

VMCS在使用時(shí)需要和pCPU綁定。一個(gè)pCPU可以對(duì)應(yīng)多個(gè)vCPU,而一個(gè)vCPU對(duì)應(yīng)一個(gè)VMCS,但在任意給定時(shí)刻,一個(gè)pCPU上只能運(yùn)行一個(gè)vCPU(就像在多線程調(diào)度中,某一時(shí)刻,一個(gè)CPU上只能運(yùn)行一個(gè)線程一樣)。

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

1)Guest state area,用于保存CPU在non-root mode下運(yùn)行時(shí)的狀態(tài)。當(dāng)發(fā)生VM exit的時(shí)候,CPU將自己當(dāng)前的狀態(tài)保存到guest state area中,當(dāng)發(fā)生VM entry的時(shí)候,guest state area保存的狀態(tài)將被自動(dòng)加載到CPU中。

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

2)Host state area,用于保存CPU在root mode下運(yùn)行時(shí)的狀態(tài)。需要保存的寄存器和guest state area是差不多的,但是保存/恢復(fù)的過程是剛好反過來(lái)的。

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

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

4)VM exit control fields,用于規(guī)定VM exit時(shí)CPU的行為,比如是否應(yīng)答外部中斷。

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

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

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

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

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5433

    瀏覽量

    124403
  • Linux系統(tǒng)
    +關(guān)注

    關(guān)注

    4

    文章

    605

    瀏覽量

    28579
  • 虛擬機(jī)
    +關(guān)注

    關(guān)注

    1

    文章

    966

    瀏覽量

    29339
  • 硬件中斷
    +關(guān)注

    關(guān)注

    0

    文章

    11

    瀏覽量

    7030
  • VMM
    VMM
    +關(guān)注

    關(guān)注

    0

    文章

    11

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    #硬聲創(chuàng)作季 云計(jì)算:6.3 CPU虛擬-類虛擬

    cpu云計(jì)算虛擬
    Mr_haohao
    發(fā)布于 :2022年10月15日 13:23:46

    Linux上的虛擬技術(shù)歷史回顧

    虛擬技術(shù)的應(yīng)用十分廣泛. 當(dāng)前虛擬技術(shù)主要關(guān)注于服務(wù)器的
    發(fā)表于 07-22 07:18

    幾種主要的虛擬技術(shù)有什么不同?

    虛擬技術(shù)作為建設(shè)綠色數(shù)據(jù)中心的一項(xiàng)重要技術(shù),一直在不斷發(fā)展完善,其應(yīng)用領(lǐng)域包括操作系統(tǒng)、服務(wù)器、存儲(chǔ)以及網(wǎng)絡(luò)。網(wǎng)絡(luò)的虛擬
    發(fā)表于 08-14 06:52

    有關(guān)虛擬機(jī)及虛擬技術(shù)的幾點(diǎn)詮注

    虛擬機(jī)及虛擬技術(shù)給計(jì)算機(jī)應(yīng)用注入了新的研究與開發(fā)點(diǎn),同時(shí)也存在諸多不利因素。本文綜述了虛擬機(jī)及虛擬
    發(fā)表于 06-22 18:04 ?36次下載

    虛擬機(jī)及虛擬技術(shù)

    虛擬機(jī)及虛擬技術(shù)給計(jì)算機(jī)應(yīng)用注入了新的研究與開發(fā)點(diǎn),同時(shí)也存在諸多不利因素。本文綜述了虛擬機(jī)及虛擬
    發(fā)表于 09-07 10:15 ?13次下載

    CPU虛擬技術(shù)

    CPU虛擬技術(shù)             
    發(fā)表于 12-24 10:58 ?769次閱讀

    虛擬技術(shù)的應(yīng)用

    虛擬技術(shù)具有可以減少服務(wù)器的過度提供、提高設(shè)備利用率、減少IT的總體投資、增強(qiáng)提供IT環(huán)境的靈活性、可以共享資源等優(yōu)點(diǎn),但虛擬
    的頭像 發(fā)表于 01-02 16:15 ?1.4w次閱讀

    虛擬技術(shù)有哪些

    本視頻主要詳細(xì)介紹了虛擬技術(shù)有哪些,分別有CPU虛擬、網(wǎng)絡(luò)
    的頭像 發(fā)表于 01-02 16:25 ?4w次閱讀

    CPU虛擬助力將會(huì)給云計(jì)算帶來(lái)什么

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

    服務(wù)器虛擬技術(shù)到底是什么

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

    服務(wù)器虛擬技術(shù)是什么,常見虛擬架構(gòu)有哪些

    服務(wù)器虛擬技術(shù)是什么?對(duì)于服務(wù)器虛擬技術(shù)其實(shí)應(yīng)用是比較廣泛的,它主要是將任何的一種形式的資源
    的頭像 發(fā)表于 09-01 16:51 ?8333次閱讀

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

    最復(fù)雜的部分,因?yàn)樯婕暗?b class='flag-5'>CPU、操作系統(tǒng)、Hypervisor以及I/O設(shè)備的相互配合。I/O虛擬也經(jīng)歷了從軟件模擬虛擬、類
    的頭像 發(fā)表于 10-13 11:09 ?3049次閱讀

    I/O虛擬及Virtio接口介紹

    I/O虛擬是計(jì)算機(jī)虛擬最復(fù)雜的部分,因?yàn)樯婕暗?b class='flag-5'>CPU、操作系統(tǒng)、Hypervisor以及I/O設(shè)備的相互配合。I/O
    的頭像 發(fā)表于 10-26 17:21 ?5023次閱讀

    虛擬技術(shù)是什么 虛擬技術(shù)介紹

    利用率的思路,從而實(shí)現(xiàn)簡(jiǎn)化管理,優(yōu)化資源等目的的解決方案,就叫做虛擬技術(shù)?! ∫韵率且恍I(yè)界標(biāo)準(zhǔn)組織對(duì)虛擬的定義。  “
    發(fā)表于 07-19 11:26 ?1次下載

    云計(jì)算中的虛擬技術(shù)應(yīng)用

    云計(jì)算中的虛擬技術(shù)是一種將計(jì)算機(jī)物理實(shí)體(如服務(wù)器、存儲(chǔ)設(shè)備、網(wǎng)絡(luò)設(shè)備)通過軟件技術(shù)劃分為多個(gè)虛擬實(shí)體的
    的頭像 發(fā)表于 10-24 09:22 ?1839次閱讀