CPL, 门DPL, 描述符DPL 的关系
来源:互联网 发布:vb中名称和caption 编辑:程序博客网 时间:2024/05/17 06:00
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
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
- CPL, 门DPL, 描述符DPL 的关系
- CPL, 门DPL, 描述符DPL 的关系
- 详解 RPL、DPL、CPL 的关系
- DPL,RPL,CPL关系详解
- CPL DPL
- CPL、RPL、DPL的区别
- CPL、RPL、DPL的区别
- 中断门 gate/DPL/CPL
- DPL RPL CPL的区别和作用
- CPL/DPL/RPL/调用门 转一篇
- CPL RPL DPL
- CPL/DPL/RPL解惑
- 关于CPL、RPL、DPL
- CPL、RPL、DPL
- 不同特权级代码段之间的跳转(CPL DPL RPL之间的关系)
- DPL,RPL,CPL 资料总结
- DPL,RPL,CPL特权级别
- 关于段,CPL,DPL,RPL
- Linux进程:Linux切换机制主流程
- 关于表格的jquery插件
- 《Linux内核情景分析》经典解说--进程
- 深度学习之数学基础(线性代数篇)
- 运行级切换和门
- CPL, 门DPL, 描述符DPL 的关系
- 中断,异常,系统调用,进程切换时的堆栈变化和寄存器保存
- 1040. 有几个PAT(25)
- React Native 学习尝试
- 内核的几种内存分配与线性映射方式
- 【内存】高端内存映射
- JAVA运算符
- 漫步最优化三十二——最速下降法
- 1041. 考试座位号(15)