kvm 一 基本理論

2021-09-25 22:25:41 字數 1876 閱讀 1940

虛擬化模型:

type1: hosted

hypervisor —-> virtual machine

type2: bare-metal

host —-> virtual machine manager

xen:

hypevisor,dom0

hypervisor === cpu memory 完成了cpu記憶體的虛擬化

dom0 —–> io等 io靠dom0來實現

虛擬化技術:

full:完全虛擬化

para:半虛擬化

hybrid:pv on hvm硬體虛擬化

kvm:依賴於完全虛擬化(hvm),利用linux系統本身的就已經提供的記憶體管理、程序排程、io棧、裝置驅動、安全子系統、網路子系統。程序管理器依然被拿來當kvm主機的程序管理器。虛擬cpu的執行緒是有kvm 模組輔助在核心中完成。

kvm模組載入後的系統的執行模式:

核心模式: guestos執行的i/o類操作,或其它特殊指令的操作;

使用者模式: 代表guest請求i/o類操作

來賓模式:guestos的非io操作;事實上,它被稱作虛擬機器使用者模式更貼切。

虛擬化要求cpu架構一致,使用者空間的程式就在虛擬機器的使用者空間就完成了執行。80%虛擬機器使用者空間執行,那麼這80%實際上就是虛擬機器的使用者空間就完成了執行。

而系統呼叫是虛擬機器發起系統呼叫,虛擬機器的kernel沒有許可權執行特權指令,從而轉換到kvm driver 來處理。偽裝返回,比如shutdown。

kvm主要兩類元件組成:

◇ /dev/kvm:管理虛擬機器的裝置檔案,使用者空間的程式可通過其ioctl()系統呼叫集來完成虛擬機器的建立啟動等管理工作;它是乙個字元裝置;其主要完成的操作包括:

 建立虛擬機器;

 為虛擬機器分配記憶體;

 讀、寫vcpu的暫存器;

 向vcpu注入中斷;

 執行vcpu;

◇ qemu程序:工作於使用者空間的元件,用於**pc機的i/o類硬體裝置;

kvm記憶體管理

kvm繼承了linux系統管理記憶體的諸多特性,比如,分配給虛擬使用的記憶體可以被交換至交換空間(swap)、能夠使用大記憶體頁(huge page)以實現更好的效能,以及對numa的支援能夠讓虛擬機器高效訪問更大的記憶體空間等。

kvm基於intel的ept(extended page table)或amd的rvi(rapid virtualization indexing)技術可以支援更新的記憶體虛擬功能,這可以降低cpu的佔用率,並提供較好的吞吐量。完成記憶體位址對映,從虛擬機器的虛擬位址空間直接到物理的實體地址空間,避免使用影子列表

支援tagged tlb

此外,kvm還借助於ksm(kernel same-page merging)這個核心特性實現了記憶體頁面共享。ksm通過掃瞄每個虛擬機器的記憶體查詢各虛擬機器間相同的記憶體頁,並將這些記憶體頁合併為乙個被各相關虛擬機器共享的單獨頁面。在某虛擬機器試圖修改此頁面中的資料時,ksm會重新為其提供乙個新的頁面副本。實踐中,執行於同一臺物理主機上的具有相同guestos的虛擬機器之間出現相同記憶體頁面的概率是很高的,比如共享庫、核心或其它記憶體物件等都有可能表現為相同的記憶體頁,因此,ksm技術可以降低記憶體占用進而提高整體效能。

硬體支援:取決於linux核心

qemu主要用到的以下幾個部分:

處理器模擬器

**io裝置

關聯模擬的裝置至真實的裝置

偵錯程式與模擬器互動的使用者介面

管理kvm虛擬機器的方案

qemu:/usr/libexec

libvirt:

安裝工具:

virt-install

virt-manager

管理工具:

vrish

virt-manager

virt-viewer

電磁基本理論

微波指頻率在300mhz到300ghz 對應波長為1m到1mm之間的交流訊號。一些頻段大體分配 波段l波段 1 2ghz s波段2 4ghz c波段4 8ghz x波段8 12ghz ku波段 12 18ghz k波段18 26ghz ka波段 26 40ghz 微波特點 第一方程 不僅傳導電流可以...

Git基本理論

檔案在這四個區域之間的轉換關係如下 git的工作流程一般是這樣的 在工作目錄中新增 修改檔案 將需要進行版本管理的檔案放入暫存區域 將暫存區域的檔案提交到git倉庫。因此,git管理的檔案有三種狀態 已修改 modified 已暫存 staged 已提交 committed 上面說檔案有4種狀態,通...

vs基本理論

4月 15日下午學習 1.csproj 是乙個專案檔案,是管理 cs檔案的。專案裡包含很多檔案。2.cs 是乙個配置檔案 3.開啟時不要直接開啟 cs 要雙擊專案檔案。開啟的整個的專案。4.sln是解決方案檔案。解決方案可以包含很多的專案。輸入輸出 再main 下邊中間裡面寫程式。console.w...