陷阱指令是处理陷阱的指令。陷阱是指计算机系统在运行中的一种意外事故,例如电源电压不稳、存储器检验出错、存储器校验出错、输入输出设备出现故障、用户使用了未定义的指令或特权指令等意外情况,使得计算机系统不能正常工作。一旦出现陷阱,计算机应能暂停当前程序的执行,及时转入故障处理程序进行相应的处理。在一般的计算机中,陷阱指令作为隐含指令不提供给用户使用,只有在出现故障时,才由CPU自动产生并执行。也有一些计算机设置了可供用户使用的陷阱指令1。
简介计算机指令是规定计算机操作类型及操作数地址的一组二进制代码。是控制计算机动作的 “命令”。一条机器指令通常分操作码与操作数两部分,是一串若干位的二进制代码。操作码使计算机产生不同的动作,操作数指明被操作的对象,可以是操作数本身,也可是被操作数在内存中的地址。陷阱指令是处理计算机系统意外中断的指令1,是由于系统调用引起处理机中断的指令。陷阱指令可以使执行流程从用户态陷入内核并把控制权转移给操作系统,使得用户程序可以调用内核函数和使用硬件从而获得操作系统所提供的服务,比如用视频软件放一个电影,视频软件就发出陷阱使用显示器和声卡从而访问硬件。
陷阱陷阱是由于某条指令执行或结果出现异常引起的程序控制权自动转移,譬如非法指令、非法访问等异常就会引起陷阱。陷阱表中存放有两类陷阱,一种是硬件陷阱,另一种是由软件陷阱指令产生的软件陷阱。陷阱类似异常的进程调用,需中断现行程序的进程、保留现场并转到处理程序中去。的陷阱可分为大类精确型陷阱、延迟型陷阱和中断。精确型陷阱是由于特殊的指令而产生的,它发生在状态被产生陷阱的指令改变之前。延迟型陷阱也是由于特殊的指令而产生的,它发生在引起陷阱的指令将程序状态改变之后。状态的改变可以是由于执行了陷阱产生指令或是其随后的某条指令。延迟型陷阱在执行完陷阱产生指令之后会执行一条或多条指令,但是延迟型陷阱必须发生在任何一条依赖于陷阱产生指令的指令被执行之前。也就是说,延迟型陷阱不能被延迟到一条与陷阱产生指令可能会改变的寄存器、条件码或是其他软件可见状态相关的指令执行之后。同时除非是浮点异常或协处理器异常,否则延迟型陷阱也不能被延迟到精确性指令之后。中断既不是精确型陷阱也不是延迟型陷阱。它由处理器核外部的异步事件产生的中断请求引起2。
原因程序错误是指在软件运行中因为程序本身有错误而造成的功能不正常、死机、数据丢失、非正常中断等现象。系统程序错误是指系统程序本身有错误而造成的功能不正常、死机或中断等现象。有些系统程序错误会造成计算机安全隐患,此时叫做系统漏洞。
硬错误是由于硬件的损坏或缺陷造成的,因此数据总是不正确的,此类错误是无法纠正的;软错误是随机出现的,例如在内存附近突然出现电子干扰等因素,可能造成内存软错误的出现。操作系统或程序访问内存地址不在当前物理内存中,而在磁盘上的页面文件内的情况。
调用特权指令,所谓特权指令,就是在系统态时运行的指令,是关系到系统全局的指令。其对内存空间的访问范围基本不受限制,不仅能访问用户存储空间,也能访问系统存储空间,如启动各种外部设备、设置系统时钟时间、关中断、清主存、修改存储器管理寄存器、执行停机指令、转换执行状态等。特权指令只允许操作系统使用,不允许应用程序使用,否则会引起系统混乱3。
系统调用系统调用(system call),又称为系统调用,指运行在用户空间的程序向操作系统内核请求需要更高权限运行的服务。系统调用提供用户程序与操作系统之间的接口。大多数系统交互式操作需求在内核态运行。如设备IO操作或者进程间通信。操作系统的进程空间可分为用户空间和内核空间,它们需要不同的执行权限。其中系统调用运行在内核空间。系统调用和普通库函数调用非常相似,只是系统调用由操作系统内核提供,运行于内核核心态,而普通的库函数调用由函数库或用户自己提供,运行于用户态。
本词条内容贡献者为:
李岳阳 - 副教授 - 江南大学