CPU Ring Privilege

CPU Ring Privilege


    现代操作系统,比如Windows UNIX家族,都支持多任务(多进程)。每个任务都拥有相同的地址空间,比如在32位系统上,都具有4G的地址空间。并且任务之间彼此互不干涉,彼此可以安全的执行。这些都与CPU所支持的虚拟内存机制是密不可分的。现代CPU都提供了。
    CPU Ring
    CPU为内存管理指令,外设管理指令,虚拟划管理指令,普通计算指令提供了不同的执行权限,也就是说把他们划分在不同的Ring中。
   CPU Ring Privilege_第1张图片

           Intel x86架构的Ring模型
    在Intel架构中,分为R0~R34级,R0的执行权限最高,可以执行cpu的所有指令,R3的权限最低,只能执行普通指令。执行在Ring权限较低的程序需要访问Ring权限较高程序时只能通过CPU的Gate机制访问,不能直接访问。比如,Linux系统采用了Ring0 和Ring1两级机制,所有的应用程序都在Ring3执行,剩下的内存管理,外设管理,驱动程序都在Ring0执行。我们普通的应用程序需要想要访问Ring0的资源,比如打开一个文件,进行数据的读写,必须通过系统调用的方式,切换到内核上下文(Ring 0),通过内核来完成文件的香港操作。这里的系统调用就是 cpu的interrupt gate机制。
    Supervisor mode
    此概念就是来源与像Linux和Windows这样的系统。只是采用了user mode和kernel mode。kernel mode可以执行CPU的所有指令,拥有超级特权。
    Hypervisor mode
    对于今年来支持虚拟后的CPU,提供了 Ring -1。这样,guest 操作系统可以运行到Ring 0,而管理这写Guest 操作系统的软件可以运行到 Ring -1。
参考:
[1] http://duartes.org/gustavo/blog/post/cpu-rings-privilege-and-protection/
[2] http://en.wikipedia.org/wiki/Protection_ring

你可能感兴趣的:(CPU Ring Privilege)