CPL, 门DPL, 描述符DPL 的关系

1. CPL要通过门(中断门,陷阱门,任务门,调用门)访问一个GDT中的描述符,必须有如下关系:
CPL <= DPL (门): 当前运行级不能低于门,如果是外部中断或CPU异常会免去这一判断
CPL >= DPL (描述符):门只能是用于保持或提升运行级别,因此GDT的描述符中的DPL均为0。如果有提升,则需要进行堆栈切换,如下:

  运行级别不变的堆栈值:
  eflag
  cs
  eip
  error code

  运行级别改变的堆栈值:
  ss
  esp
  eflag
  cs
  eip
  error code

2. 各个门的DPL解释:
中断门: 用于硬件中断,DPL为0,不允许用户态直接使用int指令访问,硬件中断免去这一判断,因此可以在用户态响应中断,见set_intr_gate
DPL0陷阱门: 用于CPU异常,DPL为0,不允许用户态直接使用int指令访问,硬件中断免去这一判断,因此可以在用户产生CPU异常,见set_trap_gate
DPL3陷阱门: 用于系统调用,DPL为3,允许用户态直接使用int指令访问,这样才能通过int80访问系统调用,只有80号向量属于此门,见set_system_gate
调用门: DPL为3,允许用户态访问,和LDT一起使用,用于特殊场景,见set_call_gate

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值