分級保護域,經常被叫作保護環,又稱環型保護、CPU環,簡稱Rings。這是一種用來在發生故障時保護數據和功能和避免惡意操作的設計方式。
基本介紹
- 中文名:分級保護域
- 領域:計算機
簡介,實現,監控模式,系統管理模式,
簡介
電腦作業系統提供不同的資源訪問級別。在計算機體系結構中,Rings是由兩個或更多的特權態組成。在一些硬體或者微代碼級別上提供不同特權態模式的CPU架構上,保護環通常都是硬體強制的。Rings是從最高特權級(通常被叫作0級)到最低特權級(通常對應最大的數字)排列的。在大多數作業系統中,Ring 0擁有最高特權,並且可以和最多的硬體直接互動(比如CPU,記憶體)。
Rings之間的特殊門是被提供用來允許外層Ring在預定義的方式內訪問內層Ring的資源用的,內層Ring可以隨便使用外層Ring的資源。正確使用Rings間的門可以阻止某個Ring或者特權級的程式故意濫用其他程式的資源,提升安全性。例如,某個間諜軟體作為一個在Ring 3運行的用戶程式,它在不通知用戶的時候打開攝像頭應該會被阻止,因為訪問硬體需要使用被驅動程式保留的Ring 1的方法。瀏覽器一類在高Ring級別運行的程式必須請求許可權才能訪問網路,也就是受低Ring級別限制的資源。
實現
多Rings保護機制是Multics作業系統提出的革命性概念之一,Multics是今天的Unix作業系統家族的一個高安全性的前任。 由於GE 645不支持硬體Rings, 所以Multics通過軟體捕獲Rings的轉換。 它的繼承者,Honeywell 6180,硬體實現了支持8個Rings。不過,最通用的作業系統僅用了2個Rings,即使他們運行的硬體提供了更多的特權態。例如 Windows 7 和 Windows Server 2008 (還有它們的前任) 只用了2個Rings:Ring 0 對應核心模式,Ring 3對套用戶模式,原因是運行Windows早期版本的硬體只支持2個保護等級。
大部分現代CPU架構(包括很流行的Intel x86架構)中都有某種形式的保護環,但Windows NT或者Unix這類作業系統沒有完全使用這個特性。相比之下OS/2使用的更多,它用了3個Rings級別:Ring 0用於核心代碼和驅動程式, Ring 2用於某些需要特權的代碼(例如需要I/O許可權的用戶程式),Ring 3用於非特權代碼(幾乎所有的用戶程式都在這一級別)。在DOS下,核心、驅動和應用程式都運行在Ring 3(然而。這也是保護模式驅動和DOS擴展專用的級別;實模式的作業系統沒有有效的保護措施),而像EMM386這樣的386記憶體管理程式運行在Ring 0。特別的,DR-DOS的EMM3863.xx可以可選地在Ring 1運行某些模組。OpenVMS使用核心模式、管理模式、監督模式和用戶模式四種模式(為了遞減特權)。
在Xen虛擬機被廣泛使用的情況下,人們對這種設計結構又產生了新的想法。在宏核心和微核心的討論中(尤其是在Usenet郵件列表和網上論壇中),微軟的Ring 1設計結構作為他們的NGSCB和像Intel VT-x一樣的固件嵌入式Hypervisors的一部分。
監控模式
計算機術語中,監控模式是一個可以通過運行在系統級的軟體代碼變更的硬體標誌。系統級任務或執行緒會在它們運行時設定這個標誌,而用戶空間應用程式不會。這個標誌決定程式是否能否執行一些諸如修改關於各種描述符表的暫存器,或禁止中斷一類的機器碼。監控模式下的程式應該永遠不會掛掉,因為他們一掛掉整個系統就崩潰了。
在某些處理器上監控模式能夠執行的所有指令,包括特權指令,也能訪問到不同的地址空間,存儲器管理硬體和其他外圍設備,作業系統通常運行在該模式。
系統管理模式
最近Intel和AMD的CPU都提供了能使hypervisor控制Ring 0的硬體訪問的x86虛擬化指令集。雖然他們互不兼容,但是他們都創建了一個叫Ring -1的新Ring,所以客戶機作業系統可以直接運行在Ring 0上而不影響其他客戶機或者宿主系統。