2011-07-15 23 views
64

一對夫婦的關於x86處理器特權環的問題:CPU權限環:爲什麼不使用環1和2?

  • 爲什麼沒有環1和2所使用的大多數操作系統?只是爲了維護與其他架構的代碼兼容性,還是有更好的理由?

  • 是否有這實際上使用這些環的任意的操作系統?或者他們完全沒有使用?

+0

這可能幫助http://compgroups.net/comp.lang相關的開銷.asm.x86/Privilege-levels-1-and- – alexius

回答

59

作爲一個業餘愛好者的操作系統作家,我發現因爲分頁(現代保障模式的重要組成部分),只有特權(環0,1,2)和無特權,受益於環的概念1和2大大減少。

由英特爾意圖在具有環1和2是用於OS把設備驅動程序在該水平,所以他們特權,但從內核代碼的其餘部分稍微分開。

戒指1和2在某種程度上是「主要」特權。他們可以訪問管理員頁面,但是如果他們嘗試使用特權指令,他們仍然會像環3那樣工作。因此,這不是有計劃的驅動程序爲英特爾不好的地方...

這就是說,他們絕對有一些設計使用。事實上,並不總是直接由操作系統。例如,VirtualBox,即Virtual Machine,將來賓內核代碼放在第1個環中。我也確信有些操作系統確實利用了它們,我不認爲這是目前流行的設計。

+16

wHOA VirtualBox使用環1 ?!這真是太棒了!非常感謝信息,這是一個很好的答案! +1 – Mehrdad

+13

是的,詳情請參閱http://www.virtualbox.org/manual/ch10.html#idp13729504! –

+8

OS/2廣泛使用Ring 2作爲I/O代碼。這就是爲什麼它很難虛擬化。 – kinokijuf

16

從OS設計的角度來看,具有多個特權環是86的古怪 - 大多數其它CPU只有兩個模式(管理員和用戶)。因此,設計一個OS需要多個特權模式將立即防止它被移植到任何其他CPU。此外,許多現代虛擬化軟件包無法正確模擬除0和3之外的特權級別,使得使用這些級別的操作系統更難以測試。

3

根據維基百科(http://en.m.wikipedia.org/wiki/Ring_(computer_security)),環1和環2用於驅動程序(環1),來賓操作系統(環1)和I/O特權代碼(環2),超級遮罩坐在-1/0(取決於hyper-visor)而不是1,正如我之前所述。

但是,額外的兩個環從來沒有真正幫助,從而成爲很少使用。 TBH中,大多數代碼使用環1和2,這些代碼從原來的使用(例如管理程序)中將它們重新利用。大多數Windows代碼,這些天似乎系統當作僅具有兩個電平(內核和用戶),可能是由於與進入和離開內核土地

+1

我想你錯過了某處的'-'。你確定管理程序使用環1嗎? – Mehrdad

+0

嘿,沒有想到,應該在-1和客戶操作系統1中的超級遮陽板,將更新該快速 – Necrolis

+2

Windows只使用兩個環,因爲它被設計爲在其他只有兩個處理器(現已解散)上運行。 – David