Protection ring: Difference between revisions

Content deleted Content added
Digital27 (talk | contribs)
Added virtualization support
Multics-style/Honeywell 6180-style, or x86-style, call gates aren't the only mechanism used to transfer control from a less-privileged protection domain to a more-privileged protection domain.
Line 9:
Computer operating systems provide different levels of access to resources. A protection ring is one of two or more hierarchical ''levels'' or ''layers'' of [[Privilege (computing)|privilege]] within the architecture of a [[computer system]]. This is generally hardware-enforced by some [[Central processing unit|CPU]] [[Computer architecture|architecture]]s that provide different [[CPU modes]] at the hardware or [[microcode]] [[abstraction layer|level]]. Rings are arranged in a hierarchy from most privileged (most trusted, usually numbered zero) to least privileged (least trusted, usually with the highest ring number). On most operating systems, Ring 0 is the level with the most privileges and interacts most directly with the physical hardware such as certain CPU functionality (e.g. the control registers) and I/O controllers. With the increasing prevalence of [[virtualization]], many CPUs have added another level (conceptually ring -1) for the [[hypervisor]].
 
Special call gates between ringsmechanisms are provided to allow an outer ring to access an inner ring's resources in a predefined manner, as opposed to allowing arbitrary usage. Correctly gating access between rings can improve security by preventing programs from one ring or privilege level from misusing resources intended for programs in another. For example, [[spyware]] running as a user program in Ring 3 should be prevented from turning on a web camera without informing the user, since hardware access should be a Ring 1 function reserved for [[device driver]]s. Programs such as web browsers running in higher numbered rings must request access to the network, a resource restricted to a lower numbered ring.
 
==Implementations==