使用80x86处理器进行寻址时牵涉到三种不同的地址,其关系如下所示
逻辑地址------------------->线性地址-------------------------->物理地址
(分段) (分页)
分段的保护机制:
一个逻辑地址由两部分组成:段标识符和偏移量。其中偏移量是一个32位长的字段,段标识符是一个16位长的字段,称为段选择符,含有一个13位的段描述符索引,一个1位的GDT和LDT指示位和一个两位的请求者特权级。
请求者特权级(RPL)是用来指示当前CPU的特权级。0代表最高优先级,3代表最低优先级,Linux只用0和3,分别称之为内核态和用户态。
为了快速方便的找到段选择符,处理器提供了段寄存器,段寄存器的唯一目的是存放段选择符,其中CS寄存器中包含一个两位的字段,用来指明CPU的当前优先级(CPL)。
段描述符是由8个字节来表示段的特性,它被保存在全局描述符表(GDT)和局部描述符表(LDT)中,由于段描述符的内容较多,在此不一一介绍。关键的有一个两位表示的描述符特权级(DPL),主要用于限制对这个段的存取,它表示可以访问这个段的最小CPU优先级。
以上三段共提到3个特权级,分别是RPL、CPL和DPL。是不是有点晕了,不着急