1)任务的4种特权级
- 特权级通过段描述符中的DPL指定给每个段。
- 当一个程序试图访问某段时,就把该程序所拥有的特权级与要访问段的DPL进行比较以决定是否访问。
0级:操作系统的核心
1级:操作系统的其他部分
2级:中间软件
3级:用户的应用程序
2)I/O的两个特权级
第一个特权级
已指定的特权级(I/O驱动程序指定1级/0级)第二个特权级
IOPL:程序的特权级≤IOPL时(指数值上的大小关系), I/O指令才能执行。
3)保护性检查与限制
- 段保护检查与限制
- 类型检查
- 限长检查
- 对数据存储的限制
- 过程切入点(入口点)限制
- 指令集限制
- 页保护检查与限制
- 可寻址区域限制
- 类型检查
4)在保护方式下访问代码和数据
## (1)系统中的各种特权级 ##
IOPL、DPL、CPL、 RPL
- IOPL :I/O特权级
- DPL:描述符特权级
- RPL:选择符中的请求特权级
- CPL:一个任务的当前特权级
一个正在运行任务的CPL是CS对应的描述符寄存器中的DPL。
## (2)访问数据段 ##
规则
- 任务的有效特权级EPL=max(RPL, CPL)
- EPL ≤ DPL
- 特殊数据段(堆栈段)DPL=CPL=RPL
注意
- DPL是数据段对应的描述符寄存器中的DPL。
RPL是数据段选择符中的RPL。
## (3)访问代码段 ##
段内调用转移(JMP、CALL—Near) 无需进行特权级检查
段间调用转移(Far)
程序控制转移:
①CPL=PRL=DPL
②CPL>DPL,且新段的符合位C=1,程序在CPL级执行。
③将程序控制转移给高特权级代码段
引入一个门描述符—-调用门
要求:
- 任务的有效特权级EPL=max(RPL,CPL)
- EPL≤调用门DPL
- 可执行段描述符DPL