特权指令和非特权指令
#[object Object]
2020年11月09日
对于一个单用户、单任务方式下使用的微型计算机系统,普通的非系统用户通常都可使用该计算机指令系统中的全部指令。但是在多用户或多任务的多道程序设计环境中,则它的指令系统中的指令必须区分成两部分:特权指令和非特权指令。
所谓特权指令是指:在指令系统中那些只能由操作系统使用的指令。这些特权指令是不允许一般的用户使用的,因为如果允许用户随便使用这些指令(如设置程序状态字、启动某设备、设置中断屏蔽、设置时钟指令、清内存指令和建立存储保护指令等等),就有可能使系统陷入混乱。
所以一个使用多道程序设计技术的计算机的指令系统中的指令必须区分为特权指令和非特权指令用户只能使用非特权指令,只有操作系统才能使用所有的指令(包括特权指令和非特权指令)。如果一个用户程序需要使用特权指令,一般将引起一次处理器状态的切换,这时处理器通过特殊的机制,将处理器状态切换到操作系统运行的特权状态,然后将处理权移交给操作系统中的一段特殊代码。这一个过程通常形象地称为陷人(Trap)。
如果在某种计算机的指令系统中不能区分特权指令和非特权指令,那么在这样的硬件环境下,要设计出一个具有多道程序运行的操作系统是相当困难的。至于处理器如何知道当前运行的是操作系统还是一般应用软件,则有赖于处理器状态的标识。