在阅读linux内核的时候,在linux内核的权限保护机制部分,经常会讨论几个特权级别:CPL,RPL,DPL。下面简单讲一下我自己的理解。
背景知识:
1 x86体系结构的几个段寄存器:cs,ds,es,ss.fs.gs
它们无论在实模式下还是保护模式下,都是16位的寄存器,只是功能不而已。
实模式下: 用做段寄存器,用来将逻辑地址转换到线性地址
保护模式下:段选择子,用来作为索引在GDT表或LDT表等中选择段描述符。
主要内容:
1 段选择子基本结构:
index TI RPL
13bit 1bit 2bit
因此,段选择子中最低2bit叫做RPL.
作为段选择子的时候,cs和ss比较特殊,它们的RPL代表着当前进程的特权级,因此,二者的RPL又叫CPL。
DPL就不用多说了,段描述符表中的两位。
2 举个例子
mov $0, offset(%ds)
这条指令的地址cs:ip, 那么cs中的最低两位就是cpl,即执行这条指令的当前特权级。
现在要将0写入某个地址,那么就要去查看有没有权限写入,首先检查的就是%ds中的rpl,然后再去检查%ds索引的段描述符中的dpl。假设当前cpl=0, %ds中的rpl =1, 段选择子中的dpl=3,那么cpl的特权级高于dpl,rpl的特权级高于dpl,访问合法。可以这样理解,首先拿当前特权级cpl与段选择子中的rpl比较,得出能不能访问某个段描述符的结论, 然后拿rpl去与段描述符中的dpl比较,就是拿着rpl这个特权级能不能访问实际的段。
cpl先去拿一个特权级别rpl,然后利用取得的这个特权级rpl去访问某个特权级dpl的段。
分享到:
相关推荐
操作系统篇-调用门与特权级(CPL、DPL和RPL).docx
内核 系统 DPL RPL CPL , 调用门等
intel X86中寄存器段寄存器的DPL RPL介绍 CPL是当前进程的权限级别(Current Privilege Level),是当前正在执行的代码所在的段的特权级,存在...当进程访问一个段时,需要进程特权级检查,一般要求DPL >= max {CPL, RPL}
保护模式中重要的一个思想是通过分级把代码隔离了起来,不同的代码在不同的级别 ,使大多数情况下都只和同级代码发生关系。 Intel 的80286以上的cpu可以识?4个特权级(或特权层) ,0级到3级。数值越大特权越小。一般...
C语言头文件 CPLC语言头文件 CPLC语言头文件 CPLC语言头文件 CPLC语言头文件 CPLC语言头文件 CPLC语言头文件 CPLC语言头文件 CPLC语言头文件 CPLC语言头文件 CPLC语言头文件 CPLC语言头文件 CPLC语言头文件 CPLC语言...
一个简单的通过oma获取ESE的CPLC的小程序,供大家参考只用
sysdm.cpl 系统主题。是xp经典主题
Windows辅助功能 access.cpl
安华高ACPL-332J的驱动芯片,电机控制器的驱动芯片。
win2k mmsys.cpl 代码
安装西门子软件有时回报缺失此文件,只需下载此文件后放在安装目录......Siemens\PLC Programming Tool\Bin下即可解决此问题
控制面板项目对应.cpl文件汇总 简介: 控制面板项目对应.cpl文件汇总
控制面板组件(cpl)制作工具.修改系统属性工具、
修改系统配置的CPL
恒功率负载CPL等效模型,matlab仿真simulink,可用于直流控制
本应用说明描述了Avago SPICE宏观模型的能力,以准确预测和模拟ACPL-339J智能门驱动器的UVLO和去饱和(DESAT)监测功能。
打印机CPL指令,可通过串口发送指令控制打印机
win2k的mmsys.cpl源代码 共享一段时间将删除此资源。