CPU 虛擬化的常見方式

2021-06-07 00:02:37 字數 721 閱讀 9115

cpu虛擬化是將乙個物理的cpu虛擬成多個虛擬cpu供虛擬機器使用。

在傳統的x86指令集中,cpu有4個特權級(0-3),第0級用來執行作業系統,擁有最高的特權,第3級用來執行應用程式,擁有最低的特權級。

虛擬機器執行的過程中,通常vmm作為管理元件,執行在宿主機的作業系統中,擁有最高特權級別,而虛擬機器上的作業系統就職能執行在第3級別了。

但是,作業系統中的某些指令,只能執行在最高特權級別,因此執行在第3級別的guest作業系統如何去執行那些只能在第0級才能執行的特權指令,就成為乙個急需解決的問題。

根據實現機制的不同,這一過程分為三類:

(1)基於模擬執行的cpu虛擬化,也就是所謂的全虛擬化。

當vmm捕獲到guest作業系統需要執行的特權指令時,用本地物理cpu的指令對該特權指令進行模擬執行,並將結果返回給guest作業系統。

這中方式的乙個優點就在於,它可以虛擬出與本地物理cpu指令集不同的虛擬cpu

如kvm, vmware

(2)作業系統輔助虛擬化,也就是所謂的半虛擬化

將guest作業系統中的特權指令通過hypercall的方式進行改寫,類似於系統呼叫

這種方式需要修改guest作業系統,

如xen

(3)硬體支援的虛擬化

現如今常見的處理器都支援,intel為 intel vt-x, amd 為 svm

在通常的cpu基礎之上,增加了乙個新的模式,通過cpu模式的切換來執行那些特權指令。

結束程序的常見方式

乙個程序由於以下五個因素將會導致終止 前三個都是正常終止,後面兩個為非正常終止 程序終止之後,都會執行相同的核心 這段 做的工作就是關閉開啟的檔案,釋放記憶體,和其他的清理工作。int exit int status 程序終止之後,都會執行相同的核心 這段 做的工作就是關閉開啟的檔案,釋放記憶體,和...

單點登入常見方式

一 使用cookie redis 1.在專案任何乙個模組進行登入,登入之後把資料放在兩個地方。1 redis 在key 生成唯一的隨機值 ip 使用者id等 在value存使用者資料。2 cookie 把redis裡面的key值放到cookie裡面 2.訪問專案其他模組,傳送請求帶著cookie進行...

JSP頁面跳轉的常見方式

jsp頁面跳轉的幾種常用方式 1 requestdispatcher.forward 在伺服器端起作用,當使用forward 時,servlet engine傳遞http請求從當前的servlet或者是jsp到另外的乙個servlet jsp 或普通html檔案,也即你的form提交至a.jsp 在...