中断有两种,一种是CPU本身在执行程序的过程中产生的,一种是由CPU外部产生的。外部中断,就是通常所讲的“中断”(interrupt)。对于执行程序来说,这种"中断的发生完全是异步的,因为不知道什么时候会发生。CPU对其的响应也完全是被动的,可以通过“关中断”指令关闭对其的响应。由软件产生的中断一般是由专设的指令,如X86中的INTn"在程序中有意产生的,是主动的,同步的。只要CPU执行条INT指令,在开始执行下一条指令之前一定会进入中断服务程序。这种主动的中断称为“陷阱”(trap)。
命令接口。trap指令
trap指令,即陷阱指令是CPU的内部事件,是由于系统调用引起处理机中断的指令。
在系统调用中,TRAP负责由用户模式转换为内核模式,并将返回地址保存至堆栈中以备后用。
陷阱标志(TRAP FLAG,TF),用于调试时的单步方式 *** 作。当TF位为1时,每条指令执行完后产生陷阱,由系统控制计算机;当TF位为0时,CPU正常工作,不产生陷阱。
陷阱通常由处理机正在执行的现行指令引起,而中断则与现行指令无关的中断源引起。陷阱处理程序提供的服务为当前进程所用,而中断处理程序的服务不是为了当前进程的。
CPU执行一条指令后,下一条指令执行开始前响应中断,而一条指令执行中也可以响应陷阱,如错误指令处理。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)