根据运行程序对资源和机器指令的使用权限将处理器设置为不同状态
多数系统将处理器工作状态划分为管态和目态
管态:操作系统管理程序运行的状态,较高的特权级别,又称为特权态(特态)、系统态
目态:用户程序运行时的状态,较低的特权级别,又称为普通态(普态)、用户态
有些系统将处理器状态划分核心状态,管理状态和用户程序状态(目标状态)三种
处理器处于管态时:
1.全部指令(包括特权指令)可以执行
2. 可使用所有资源
3.并具有改变处理器状态的能力
处理器处于目态时:
只有非特权指令能执行
特权级别越高,可以运行指令集合越大
高特权级别对应的可运行指令集合包含低特权级的
x86系列处理器
386、486、Pentium系列都支持4个处理器特权级别(特权环:R0、R1、R2和R3)
从R0到R3特权能力依次降低,各个级别有保护性检查(地址校验、I/O限制).特权级别之间的转换方式不尽相同
R0相当于双状态系统的管态
R3相当于目态
R1和R2则介于两者之间,它们能够运行的指令集合具有包含关系:
四个级别运行不同类别的程序:
R0-运行操作系统核心代码
R1-运行关键设备驱动程序和I/O处理例程
R2-运行其它受保护共享代码,如语言系统运行环境
R3-运行各种用户程序
现有基于x86处理器的操作系统,多数UNIX、Linux以及Windows系列大都只用了R0和R3两个特权级别
用一个专门的寄存器来指示处理器状态,称为程序状态字(PSW Program Status Word )
程序状态字通常包括以下状态代码:
CPU的工作状态码——指明管态还是目态,用来说明当前在CPU上执行的是操作系统还是一般用户,从而决定其是否可以使用特权指令或拥有其它的特殊权力
条件码——反映指令执行后的结果特征
中断屏蔽码——指出是否允许中断
目态--管态
其转换的唯一途径是通过中断
管态--目态
可用设置PSW(修改程序状态字)可实现
特权指令:只能由操作系统使用的指令
非特权指令:只能由用户程序使用的指令。
操作系统能使用特权指令和非特权指令。
使用多道程序设计技术的计算机指令系统必须要区分为特权指令和非特权指令
特权指令一般引起处理器状态的切换
处理器通过特殊的机制将处理器状态切换到操作系统运行的特权状态(管态)
然后将处理权移交给操作系统中的一段特殊代码,这一个过程称为陷入
特权指令指具有特殊权限的指令。这类指令只用于操作系统或其他系统软件,一般不直接提供给用户使用。
特权指令如果错用,将导致整个系统崩溃。比如:清内存、设置时钟等。
中断寄存器:
有的计算机中,为了区分和不丢失中断信号,对应每个中断源分别用一固定触发器寄存中断信号,规定值为1时,表示有中断信号,为0时表示无
每个触发器称为一个中断位,所以中断寄存器是由若干个中断位组成 .