日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

全虚拟化和半虚拟化的区别 cpu的ring0~ring3又是什么概念?

發(fā)布時間:2023/12/10 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 全虚拟化和半虚拟化的区别 cpu的ring0~ring3又是什么概念? 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

ring0是指CPU的運(yùn)行級別,ring0是最高級別,ring1次之,ring2更次之……
拿Linux+x86來說,
操作系統(tǒng)(內(nèi)核)的代碼運(yùn)行在最高運(yùn)行級別ring0上,可以使用特權(quán)指令,控制中斷、修改頁表、訪問設(shè)備等等。
應(yīng)用程序的代碼運(yùn)行在最低運(yùn)行級別上ring3上,不能做受控操作。如果要做,比如要訪問磁盤,寫文件,那就要通過執(zhí)行系統(tǒng)調(diào)用(函數(shù)),執(zhí)行系統(tǒng)調(diào)用的時候,CPU的運(yùn)行級別會發(fā)生從ring3到ring0的切換,并跳轉(zhuǎn)到系統(tǒng)調(diào)用對應(yīng)的內(nèi)核代碼位置執(zhí)行,這樣內(nèi)核就為你完成了設(shè)備訪問,完成之后再從ring0返回ring3。這個過程也稱作用戶態(tài)和內(nèi)核態(tài)的切換。

那么,虛擬化在這里就遇到了一個難題,因?yàn)樗拗鞑僮飨到y(tǒng)是工作在ring0的,客戶操作系統(tǒng)就不能也在ring0了,但是它不知道這一點(diǎn),以前執(zhí)行什么指令,現(xiàn)在還是執(zhí)行什么指令,那肯定不行啊,沒權(quán)限啊,玩不轉(zhuǎn)啊。所以這時候虛擬機(jī)管理程序(VMM)就要避免這件事情發(fā)生。
(VMM在ring0上,一般以驅(qū)動程序的形式體現(xiàn),驅(qū)動程序都是工作在ring0上,否則驅(qū)動不了設(shè)備)
一般是這樣做,客戶操作系統(tǒng)執(zhí)行特權(quán)指令時,會觸發(fā)異常(CPU機(jī)制,沒權(quán)限的指令,觸發(fā)異常),然后VMM捕獲這個異常,在異常里面做翻譯,模擬,最后返回到客戶操作系統(tǒng)內(nèi),客戶操作系統(tǒng)認(rèn)為自己的特權(quán)指令工作正常,繼續(xù)運(yùn)行。但是這個性能損耗,就非常的大,你想想原來,簡單的一條指令,執(zhí)行完,了事,現(xiàn)在卻要通過復(fù)雜的異常處理過程。

這時候半虛擬化就來了,半虛擬化的思想就是,讓客戶操作系統(tǒng)知道自己是在虛擬機(jī)上跑的,工作在非ring0狀態(tài),那么它原先在物理機(jī)上執(zhí)行的一些特權(quán)指令,就會修改成其他方式,這種方式是可以和VMM約定好的,這就相當(dāng)于,我通過修改代碼把操作系統(tǒng)移植到一種新的架構(gòu)上來,就是定制化。所以像XEN這種半虛擬化技術(shù),客戶機(jī)操作系統(tǒng)都是有一個專門的定制內(nèi)核版本,和x86、mips、arm這些內(nèi)核版本等價。這樣以來,就不會有捕獲異常、翻譯、模擬的過程了,性能損耗非常低。這就是XEN這種半虛擬化架構(gòu)的優(yōu)勢。這也是為什么XEN只支持虛擬化Linux,無法虛擬化windows原因,微軟不改代碼啊。

可以后來,CPU廠商,開始支持虛擬化了,情況有發(fā)生變化,拿X86 CPU來說,引入了Intel-VT 技術(shù),支持Intel-VT 的CPU,有VMX root operation 和 VMX non-root operation兩種模式,兩種模式都支持Ring 0 ~ Ring 3 這 4 個運(yùn)行級別。這下好了,VMM可以運(yùn)行在VMX root operation模式下,客戶OS運(yùn)行在VMX non-root operation模式下。也就說,硬件這層做了些區(qū)分,這樣全虛擬化下,有些靠“捕獲異常-翻譯-模擬”的實(shí)現(xiàn)就不需要了。而且CPU廠商,支持虛擬化的力度越來越大,靠硬件輔助的全虛擬化技術(shù)的性能逐漸逼近半虛擬化,再加上全虛擬化不需要修改客戶操作系統(tǒng)這一優(yōu)勢,全虛擬化技術(shù)應(yīng)該是未來的發(fā)展趨勢。

XEN是最典型的半虛擬化,不過現(xiàn)在XEN也支持硬件輔助的全虛擬化,大趨勢,拗不過啊。。。
KVM、VMARE這些一直都是全虛擬化。

轉(zhuǎn)載于:https://www.cnblogs.com/xuliangwei/p/10420932.html

總結(jié)

以上是生活随笔為你收集整理的全虚拟化和半虚拟化的区别 cpu的ring0~ring3又是什么概念?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。