关于DPL,CPL与RPL的一个很精妙的解释

来源:互联网 发布:新手怎么样开淘宝店 编辑:程序博客网 时间:2024/06/05 17:32
1、 CPL是当前进程的权限级别(Current Privilege Level),是cs段中的
2、 RPL说明的是进程对段访问的请求权限(Request Privilege Level),意思是当前进程想要的请求权限。
3、 DPL存储在段描述符中,规定访问该段的权限级别(Descriptor Privilege Level).
下面打一个比方,中国官员分为6级国家主席1、总理2、省长3、市长4、县长5、乡长6。

假设我是当前进程。级别总理(CPL=2),我去聊城市(DPL=4)考察(呵呵),我用省长的级别(RPL=3 这样也能吓死他们)去访问,可以吧,如果我用县长的级别,人家就不理咱了(你看看电视上的微服私访,呵呵),明白了吧!为什么采用RPL,是考虑到安全的问题,就好像你明明对一个文件用有写权限,为什么用只读打开它呢,还不是为了安全!

其实上述说法有误,其次它把为什么要把有RPL的目的说反了。实际情况是这样的:
本身你是个县长(CPL=3),你去一个省访问(DPL=1),按理说你就只能接受县长待遇,访问只能由县长访问的地方(DPL=3)。访问的时候需要领一个许可证RPL,它决定你可以访问哪些地方。这个时候你想伪装成总理,于是申请了一个RPL=0许可证(实际表现为传递个操作系统一个RPL=0的段选择符),但检查部门(操作系统内核)发现了你的伪装(通过使用ARPL指令),把你打回原形(让RPL=CPL=3),最后你还是只能访问县长能访问的地方,你的伪装计划失败了。