chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

一文帶你深入了解KVM的基本原理

Linux閱碼場 ? 來源:內(nèi)核工匠 ? 作者: Nick.Hu ? 2021-10-20 09:33 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一、 概述

KVM的全稱是Kernel-based Virtual Machine,其是一種基于linux內(nèi)核的采用硬件輔助虛擬化技術的全虛擬化解決方案。它最初由以色列的初創(chuàng)公司Qumranet開發(fā),并在linux-2.6.20中開始被納入在linux內(nèi)核,成為內(nèi)核源碼的一部分。KVM自誕生之初就定位于基于硬件輔助的虛擬化來提供全虛擬化的支持,其以內(nèi)核模塊的形式被加載。加載KVM模塊的linux內(nèi)核相當于變成了一個Hypervisor,同時依賴linux內(nèi)核提供的各種功能來實現(xiàn)硬件管理,擁有極高的兼容性及可擴展性。

上面提到KVM是作為一個內(nèi)核模塊出現(xiàn)的,所以它還得借助用戶空間的程序來和用戶進行交互,這就不得不提到大名鼎鼎的QEMU了。QEMU是一套由法布里斯·貝拉(Fabrice Bellard)所編寫的以GPL許可證分發(fā)源碼的模擬處理器,在GNU/Linux平臺上使用廣泛。

其本身是一個純軟件的支持CPU虛擬化、內(nèi)存虛擬化及I/O虛擬化等功能的用戶空間程序。其借助KVM提供的虛擬化支持可以將CPU、內(nèi)存等虛擬化工作交由KVM處理,自己則處理大多數(shù)I/O虛擬化的功能,可以實現(xiàn)極高的虛擬化效率。KVM及QEMU配合使用的整體接口如圖1所示。

QEMU盡管非常的強大,但也正是應為它的強大導致其對初學者非常的不友好。這里推薦大家剛開始學習KVM時可以先學習kvm tool,這是一個基于C語言開發(fā)的KVM虛擬化工具,其代碼非常精簡易懂,同時也可以支持完整的linux虛擬化,非常適合初學者入門使用。其項目地址為https://github.com/kvmtool/kvmtool。

二、 ARM64虛擬化支持

arm最早在armv7-a引入硬件虛擬化支持。到了armv8中,arm拋棄了armv7時代的特權級,引入了全新的Exception Level(EL),其如圖2所示(armv8.4-A引入了對安全世界虛擬化的支持)。

18fed650-3102-11ec-82a8-dac502259ad0.png

圖2

其中4個異常等級中的EL2留給Hypervisor用于各種虛擬化功能的訪問及配置,如:stage 2轉換、EL1/EL0指令和寄存器訪問、注入虛擬異常等。

三、 CPU虛擬化

CPU被稱為計算機的大腦,是計算機系統(tǒng)中最核心的模塊。在沒有CPU硬件虛擬化技術之前都是使用二進制指令動態(tài)翻譯技術來實現(xiàn)對客戶機操作系統(tǒng)中執(zhí)行的執(zhí)行(例如qemu的軟件虛擬化),其不僅實現(xiàn)復雜而且效率非常低下。因此硬件虛擬化技術應運而生,為KVM的誕生創(chuàng)造了必要的條件。

有時Hypervisor需要模擬一些操作,例如VM里運行的軟件試圖配置處理器的一些屬性,如電源管理或是緩存一致性時。通常你不會允許VM直接配置這些屬性,因為這會打破隔離性,從而影響其他VMs。這就需要通過以陷入的方式產(chǎn)生異常,在異常處理程序中做相應的模擬。armv8包含一些陷入控制來幫助實現(xiàn)陷入(trapping) – 模擬(emulating)。如果對相應操作配置了陷入,則這種操作發(fā)生時會陷入到更高的異常級別。

例如,正常我們在執(zhí)行WFI指令時會使CPU進入一個低功耗的狀態(tài),但是對于HOST OS來說,如果讓CPU真正進入低功耗狀態(tài),顯然會影響其他VM的運行。如果我們配置了HCR_EL2.TWI==1時,那么Guest OS在執(zhí)行WFI時就會觸發(fā)EL2的異常,然后陷入Hypervisor,那么此時Hypervisor就可以將對應VCPU所處的線程調出出去,將CPU讓給其他的VCPU線程使用。

1929c39c-3102-11ec-82a8-dac502259ad0.png

圖3

四、 內(nèi)存虛擬化

內(nèi)存虛擬化的目的是給虛擬客戶機操作系統(tǒng)提供一個從0開始的連續(xù)的地址空間,同時在多個客戶機之間實現(xiàn)隔離與調度。

arm主要通過Stage 2轉換來提供對內(nèi)存虛擬化的支持,其允許Hypervisor控制虛擬機的內(nèi)存視圖,而在這之前則是使用及其復雜的影子頁表技術來實現(xiàn)。Stage 2轉換可以控制虛擬機是否可以訪問特定的某一塊物理內(nèi)存,以及該內(nèi)存塊出現(xiàn)在虛擬機內(nèi)存空間的位置。這種能力對于虛擬機的隔離和沙箱功能來說至關重要。

這使得虛擬機只能看到分配給它自己的物理內(nèi)存。為了支持Stage 2 轉換, 需要增加一個頁表,我們稱之為Stage 2頁表。操作系統(tǒng)控制的頁表轉換稱之為stage 1轉換,負責將虛擬機視角的虛擬地址轉換為虛擬機視角的物理地址。而stage 2頁表由Hypervisor控制,負責將虛擬機視角的物理地址轉換為真實的物理地址。虛擬機視角的物理地址在Armv8中有特定的詞描述,叫中間物理地址(intermediate Physical Address, IPA)。

stage 2轉換表的格式和stage 1的類似,但也有些屬性的處理不太一樣,例如,判斷內(nèi)存類型 是normal 還是 device的信息被直接編碼進了表里,而不是通過查詢MAIR_ELx寄存器。

19524754-3102-11ec-82a8-dac502259ad0.png

圖4

五、 I/O虛擬化

I/O設備作為一種外部設備,其虛擬化的實現(xiàn)相較于前面的CPU虛擬化及內(nèi)存虛擬化有些不同,其目前主要有以下四種虛擬化方案。

1、 設備模擬:

在虛擬機監(jiān)控器中模擬具體的I/O設備的特性,例如qemu。在KVM和qemu的組合中通過Hypervisor捕獲Guest OS的I/O請求交給用戶空間的qemu進行模擬,然后將結果再通過Hypervisor傳遞給Guest OS。這種方式能夠提供非常好的兼容性但是性能太差,同時模擬設備的功能特性支持不夠多。

2、 前后端驅動接口

在Hypervisor和Guest OS之間定義一種權限的適用于虛擬機的交互接口,比如virtio技術。這個方案相較于設備模擬在性能上有所提高,但是兼容性較差,而且在高I/O負載場景,后端驅動的CPU占用較高。

3、 設備直接分配

將一個物理設備直接分配給Guest OS使用。此方式的性能顯而易見,要比上面兩種好很多,但是需要硬件設備支持,且無法共享和動態(tài)遷移。

4、 設備共享分配

此方式是設備直接分配的一個擴展,其主要就是讓一個物理設備可以支持多個虛擬機功能接口,將不同的接口地址獨立分配給不同的Guest OS使用。如SR-IOV協(xié)議。

參考文獻:

1、《KVM實戰(zhàn):原理、進階與性能調優(yōu)》

2、https://segmentfault.com/a/1190000022797518

3、https://www.cnblogs.com/LoyenWang/

編輯:jq

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

    關注

    135

    文章

    9446

    瀏覽量

    385571
  • cpu
    cpu
    +關注

    關注

    68

    文章

    11186

    瀏覽量

    221227
  • KVM
    KVM
    +關注

    關注

    0

    文章

    193

    瀏覽量

    13407
  • 驅動接口
    +關注

    關注

    0

    文章

    10

    瀏覽量

    2742

原文標題:KVM原理簡介

文章出處:【微信號:LinuxDev,微信公眾號:Linux閱碼場】歡迎添加關注!文章轉載請注明出處。

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    帶你了解海凌科毫米波雷達

    什么是毫米波雷達?毫米波雷達有什么特點?毫米波雷達有什么作用?海凌科有哪些系列毫米波雷達?帶你了解!毫米波的定義毫米波是指頻率在30GHz至300GHz之間、波長為1~10毫米的電
    的頭像 發(fā)表于 08-11 12:04 ?591次閱讀
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>帶你</b><b class='flag-5'>了解</b>海凌科毫米波雷達

    如何為不同的電機選擇合適的驅動芯片?納芯微帶你深入了解!

    在現(xiàn)代生活中,電機廣泛使用在家電產(chǎn)品、汽車電子、工業(yè)控制等眾多應用領域,每個電機的運轉都離不開合適的驅動芯片。納芯微提供豐富的電機驅動產(chǎn)品選擇,本期技術分享將重點介紹常見電機種類與感性負載應用,幫助大家更深入了解如何選擇合適的電機驅動芯片。
    的頭像 發(fā)表于 07-17 14:00 ?1548次閱讀
    如何為不同的電機選擇合適的驅動芯片?納芯微<b class='flag-5'>帶你</b><b class='flag-5'>深入了解</b>!

    帶你了解電源測試系統(tǒng)的功能!

    在當今電子與電力技術飛速發(fā)展的時代,各類電子設備、電力系統(tǒng)以及新能源相關產(chǎn)品的研發(fā)、生產(chǎn)和維護過程中,電源測試系統(tǒng)扮演著至關重要的角色。本文將帶你了解源儀電子的電源測試系統(tǒng)的功能。
    的頭像 發(fā)表于 07-02 09:10 ?426次閱讀
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>帶你</b><b class='flag-5'>了解</b>電源測試系統(tǒng)的功能!

    了解信號完整性的基本原理

    ,設計人員必須注意電路板布局并使用適當?shù)膶Ь€和連接器,從而最大限度地減少反射、噪聲和串擾。此外,還必須了解傳輸線、阻抗、回波損耗和共振等基本原理。 本文將介紹討論信號完整性時使用的些術語,以及設計人員需要考慮的問題,然后介紹
    的頭像 發(fā)表于 05-25 11:54 ?641次閱讀
    <b class='flag-5'>了解</b>信號完整性的<b class='flag-5'>基本原理</b>

    帶你深入剖析RedCap技術

    隨著3GPPR17RedCap標準的凍結,業(yè)界對RedCap技術的關注持續(xù)升溫。要將RedCap有效引入并服務于各行各業(yè),亟需明確其在5G承載體系中的能力定位,并深入分析當前5G行業(yè)發(fā)展所面臨的痛點
    的頭像 發(fā)表于 05-14 10:53 ?1877次閱讀
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>帶你</b><b class='flag-5'>深入</b>剖析RedCap技術

    STM32定時器基本原理及常見問題之培訓資料

    STM32 定時器基本原理及常見問題之培訓資料v3.10 時基單元、捕捉比較功能、主從觸發(fā)與級聯(lián)、案例分享 培訓內(nèi)容:
    發(fā)表于 04-08 16:26

    六天專修課程!電子電路基本原理66課

    介紹。應用技術部分分別給出了模擬傳感器信號處理以及數(shù)字信號處理、數(shù)字無線通信等綜合應用技術,以提高相應的綜合技術能力。全文以圖解為基礎,直觀易懂、內(nèi)容全面、講解深入、理論與實際聯(lián)系緊密,既有基本原理的介紹,同時也具有良好的實用性和解決實際問題的針對性。
    發(fā)表于 04-08 16:21

    無刷電機電調的基本原理

    有關本文所談論的無刷電機內(nèi)容, 只涉及低速飛行類航模電調的小功率無傳感器應用,講解的理論比較淺顯易懂 ,旨在讓初學者能夠對無刷電機有個比較快的認 識,掌握基本原理和控制方法,可以在短時間內(nèi)達到
    發(fā)表于 03-17 19:57

    帶你深入了解高光譜相機介紹背后所反饋的信息

    才能看懂的。 其實我們可以拆解出來,然后去對應參數(shù)指標,很多時候都需要我們進步轉化成我們更好理解的詞。例如具備超高成像速度,其實背后表達的是相機的幀頻高,也就是相機每秒能夠捕獲并顯示的圖像幀數(shù),單位為?幀
    的頭像 發(fā)表于 02-28 10:34 ?504次閱讀

    深入了解U8g2與LVGL圖形庫

    在單片機開發(fā)領域,圖形顯示功能變得越來越重要。無論是工業(yè)控制界面、智能家居設備,還是手持儀器儀表,都需要個高效且易用的圖形庫來實現(xiàn)豐富的可視化效果。U8g2 和 LVGL 就是其中兩款備受關注的圖形庫,它們各有特點,適用于不同的應用場景。今天,我們就來深入了解這兩個圖形
    的頭像 發(fā)表于 02-13 11:01 ?3054次閱讀

    BP神經(jīng)網(wǎng)絡的基本原理

    BP神經(jīng)網(wǎng)絡(Back Propagation Neural Network)的基本原理涉及前向傳播和反向傳播兩個核心過程。以下是關于BP神經(jīng)網(wǎng)絡基本原理的介紹: 、網(wǎng)絡結構 BP神經(jīng)網(wǎng)絡通常由
    的頭像 發(fā)表于 02-12 15:13 ?1294次閱讀

    AN-282: 采樣數(shù)據(jù)系統(tǒng)基本原理[中文版]

    電子發(fā)燒友網(wǎng)站提供《AN-282: 采樣數(shù)據(jù)系統(tǒng)基本原理[中文版].pdf》資料免費下載
    發(fā)表于 01-13 14:32 ?0次下載
    AN-282: 采樣數(shù)據(jù)系統(tǒng)<b class='flag-5'>基本原理</b>[中文版]

    如何為不同的電機選擇合適的驅動芯片?納芯微帶你深入了解!

    在現(xiàn)代生活中,電機廣泛使用在家電產(chǎn)品、汽車電子、工業(yè)控制等眾多應用領域,每個電機的運轉都離不開合適的驅動芯片。納芯微提供豐富的電機驅動產(chǎn)品選擇,本期技術分享將重點介紹常見電機種類與感性負載應用,幫助大家更深入了解如何選擇合適的電機驅動芯片。
    的頭像 發(fā)表于 12-23 09:58 ?1420次閱讀
    如何為不同的電機選擇合適的驅動芯片?納芯微<b class='flag-5'>帶你</b><b class='flag-5'>深入了解</b>!

    RNN的基本原理與實現(xiàn)

    RNN,即循環(huán)神經(jīng)網(wǎng)絡(Recurrent Neural Network),是種特殊類型的人工神經(jīng)網(wǎng)絡,專門設計用于處理序列數(shù)據(jù),如文本、語音、視頻等。以下是對RNN基本原理與實現(xiàn)的介紹:
    的頭像 發(fā)表于 11-15 09:49 ?1929次閱讀

    智慧公交是什么?帶你詳解智慧公交的解決方案!

    智慧公交是什么?帶你詳解智慧公交的解決方案!
    的頭像 發(fā)表于 11-05 12:26 ?1265次閱讀
    智慧公交是什么?<b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>帶你</b>詳解智慧公交的解決方案!