处理器的特权级

CPU TSS硬件实现

  • CPU一共分为0,1,2,3四个特权级,操作系统内核为最高特权级0级,用户级别为最低3级
  • 由硬件结构TSS来实现,TSS包括不同特权级的栈指针
  • 特权转移只能由低特权级向高特权级转移,因此3级TSS有三个栈指针,0级有零个
  • TSS结构是需要软件填写内容,指针存储在TR寄存器;切换不同的任务(进程)时会将TR寄存器切换为对应的TSS指针
    在这里插入图片描述

CPL&DPL&RPL

  • X86体系的计算机访问内存的机制都是段基址:偏移地址的方式,不管是实模式还是保护模式
  • 保护模式下段寄存器不再是段基址,而是段选择子;段选择子在GDT或者LDT中找到相应的段描述符,在段描述符中获得段的起始地址
  • 选择子结构:0-1位RPL,2TI,3-15段描述符索引以及两位DPL
  • RPL时请求特权级
  • 当前特权级CPL保存在CS选择子的0-1位PRL

谁为代码段寄存器CS赋值?

  • 访问者的CPL是转移到访问者程序时选择子的DPL,由操作系统指定,无法伪造
  • 被访问者的特权级由段描述符的DPL描述
  • 访问者任何时候都不允许访问比自己特权更高的资源,无论受访资源是数据,还是代码
  • RPL记录了真正访问者的特权级,CPL记录了当前运行程序的特权级,可能和RPL不是同一个程序(用户程序进行了系统调用)
  • 用户程序提供的选择子的前两位都会被置为当前程序的CPL,所以即使用户从程序进行系统调用也无法向内核中写数据,因为操作之前会进行检查,要求选择子的RPL<=段描述符的DPL
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值