7.3.1 特权级
在8086的系统中,由于系统程序和用户程序是放在一起的,同属一个级别,因此用户程序运行中就有可能破坏系统程序。这是早期80X86CPU一个重要的缺陷。 自从80286以后,逐步发展并完善了保护模式的功能,使系统的特权级为四级,如图7.9所示。
7.3.2 描述符
1 .选择符 选择符的格式如图7.10所示。
2. 段描述符 从80386开始,段描述符均由8个字节(64位)构成,其格式如图7.11所示。
由图711可以看到段描述符的构成: ①线性基地址(32位)用来指示某段的起始地址。 ②段限制(20位)用来限制一段的最大长度。 ③G位用于定义段限制所使用的单位。 ④ D/B位对于不同类型的段,有不同解释: 对于代码段,D=1为32位操作;D=0为16位操作。 对于堆栈段,B=1为32位操作;B=0为16位操作。 对于数据段,B=1为32位操作;B=0为兼容80286。 ⑤AVL位为系统软件所利用。 ⑥访问权限各位如图712所示。
访问权限规定了段描述符所定义段的属性。 例如,P位规定该段是否存在;DPL两位编码用来规定特权级;S=1表示代码段或属于数据类段,S=0则表示该描述符为系统描述符;E=1表示代码段,E=0表示数据类段。 ED/C和W/R对数据类段和代码段具有不同含义: (a)对于代码段 C=1为一致性代码段;C=0表示非一致性代码段。 R=1表示可读代码段;R=0表示只能执行不可读的代码段。 (b) 对数据类段 ED=0表示偏移值必须小于或等于段限制。 ED=1表示偏移值大于段限制。 W=0表示该段不可写;W=1表示可写。 3.系统描述符 系统描述符用于描述系统中的每个任务的任务状态段(TSS)的属性或局部描述符表的属性。由系统描述符中TYPE字段的编码来表征该系统描述符是属于什么描述符的。 (1)系统描述符的格式 系统描述符的格式如图7.13所示。
系统描述符中,有许多项与前面的段描述符的定义是一样的,这里不再重复。 图7.13中,系统描述符的P位指示系统描述符是否有效:P=1为有效;P=0为无效。DPL利用两位编码表示系统描述符的访问特权级0~3。 TYPE的编码用来表示不同的系统描述符,其中: 0001 表示为可用的80286TSS描述符 0010 表示为局部描述符表LDT的描述符 0011 表示为处于忙状态80286TSS描述符 1001 表示为可用TSS描述符
1011 表示处于忙状态的TSS描述符 0000 1000 1010 1100 剩余的TYPE类型编码是留给中断与异常情况的。
(2)中断描述符 中断描述符中,与前相同部分不再说明。
选择符:中断响应过程中利用选择符可以得到中断服务程序的描述符。由其线性基地址再加上中断描述符的偏移量,便 可获得中断服务程序的入口地址。
偏移量:为32位,与线性基地址一起决定中断服务程序的入口地址。偏移量对任务门是无效的。
TYPE的编码在中断描述符中的定义如下: 0100 表示为80286调用门 0101 表示为任务门 0110 表示为80286调用门 0111 表示为80286异常门 1100 表示为80386以上调用门 1110 表示为80386以上中断门 1110 表示为80386以上异常门