ring0
Intel的x86处理器是通过Ring级别来进行访问控制的,级别共分4层,RING0,RING1,RING2,RING3。Windows只使用其中的两个级别RING0和RING3。RING0层拥有最高的许可权,RING3层拥有最低的许可权。按照Intel原有的构想,应用程式工作在RING3层,只能访问RING3层的数据,作业系统工作在RING0层,可以访问所有层的数据,而其他驱动程式位于RING1、RING2层,每一层只能访问本层以及许可权更低层的数据。如果普通应用程式企图执行RING0指令,则Windows会显示“非法指令”错误信息。
基本介绍
- 中文名:ring0
- 级别:RING0,RING1,RING2,RING3
- RING0:只给作业系统用
- RING3:谁都能用
简介
Intel的CPU将特权级别分为4个级别:RING0,RING1,RING2,RING3。Windows只使用其中的两个级别RING0和RING3,RING0只给作业系统用,RING3谁都能用。如果普通应用程式企图执行RING0指令,则Windows会显示“非法指令”错误信息。儘管有CPU的特权级别作保护,遗憾的是WINDOW98本身漏洞很多,使用Windows 98的系统一天当机n回也是正常的。
RING0的利弊
诚然,RING设计的初衷是将系统许可权与程式分离出来,使之能够让OS更好的管理当前系统资源,也使得系统更加稳定。举个RING许可权的最简单的例子:一个停止回响的应用程式,它运行在比RING0更低的指令环上,你不必大费周章的想着如何使系统恢复运作,这期间,只需要启动任务管理器便能轻鬆终止它,因为它运行在比程式更低的RING0指令环中,拥有更高的许可权,可以直接影响到RING0以上运行的程式,当然有利就有弊,RING保证了系统稳定运行的同时,也产生了一些十分麻烦的问题。比如一些OS虚拟化技术,在处理RING指令环时便遇到了麻烦,系统是运行在RING0指令环上的,但是虚拟的OS毕竟也是一个系统,也需要与系统相匹配的许可权。而RING0不允许出现多个OS同时运行在上面,最早的解决办法便是使用虚拟机,把OS当成一个程式来运行。后来才有了更新的技术解决了此问题。