您好、欢迎来到现金彩票网!
当前位置:2019手机棋牌游戏平台 > 系统中断 >

在计算机系统中请解释什么是中断请用流程图画出一次中断处理流程

发布时间:2019-08-05 09:45 来源:未知 编辑:admin

  主要经营计算机网络服务,设计、制作、代理、发布国内各类广告,健康信息咨询。

  操作系统对中断信号的处理实际是对硬件中断的一种模拟, CPU在INTR引脚上接到一个中断请求信号,如果此时IF=1,CPU就会在当前指令执行完以后开始响应外部的中断请求,这时,CPU在INTA引脚连续发两个负脉冲,外设在接到第二个负脉冲以后,在数据线上发送中断类型码,接到这个中断类型码后,CPU做如下动作: 1)将中断类型码放入暂存器保存; 2)将标志寄存器内容压入堆栈,以保护中断时的状态; 3)将IF和TF标志清0。 目的是防止在中断响应的同时又来别的中断,而将TF清0是为了防止CPU以单步方式执行中断处理子程序。这时要特别提醒,因为CPU在中断响应时自动关闭了IF标志,因此用户如要进行中断嵌套时,必须在自己的中断处理子程序中用开中断指令来重新设置IF; 4)保护断点。 断点指的是在响应中断时,主程序当前指令下面的一条指令的地址。保护断点就是将当前的IP和CS的内容入栈,为了以后正确地返回主程序; 5)根据取到的中断类型码,在中断向量表中找出相应的中断向量,将其装入IP和CS,即呆自动转向中断服务子程序。 对NMI进入的中断请求,由于其类型码固定为2,因此CPU不用从外设读取类型码,也不需计算中断向量表的地址,只要将中断向量表中0000:0008H~0000:000BH单元内容分别装入IP和CS即可。 关于.图3 中断处理过程 的几点说明: 1)8086/8088除软件中断外,内部“非屏蔽中断”、“可屏蔽中断”均设立有优先级,其中内中(除单步外)――即0、1、3、4号中断的优先级高于非屏蔽中断,非屏蔽中断高于可屏蔽中断,单步中断优先级最低; 2)只有在可屏蔽中断的情况下才判IF=1?,才取中断类型码,其余的没有这个动作。 3)关于单步中断,它是每执行一条指令中断一次,显示出当时各寄存器的内容,供用户参考,当进入单步中断响应时,CPU自动清除了TF,在中断返回后,由于恢复了响应时的标志寄存器的值,因此TF=1,执行完一条指令后又进入单步中断,直到程序将TF改为0为止。 4)关于中断的嵌套,NMI总是可以响应的,若在中断处理子程序中设立了开中断指令,INTR的请求也能响应。 5)弹出IP、CS、标志,返回断点的动作由IRET指令完成。 6)当遇到等待指令或串操作指令时,允许在指令执行的过程中进入中断。这时需注意在中断处理子程序中保护现场,以保证中断返回后能继续正确地执行这些指令。 扯了那么多8086的东西, 该说说正题了。操作系统在从内核态返回用户态之前(系统可能是一个系统调用, 也可能是一个时钟中断而导致进入内核模式), 将检查是否有需要的投递的信号。一旦检测到需要信号投递时, 内核将改变用户空间的数据(跟调用exec类似, 系统会改变用户空间的数据)。建立一个新的栈桢。当返回到用户空间的时候, IP指向的将是新的栈, 所以执行的下一个指令将是信号处理函数(signal_handler)。当信号出来函数返回时, 执行的将是sigreturn, 所以系统将重新进入内核模式。这个时候系统将把栈清除。恢复原来的IP值, 当重新再次返回用户模式的时候, 程序就像什么都没有发生一样继续往下执行。因为上下文是保存在用户空间, 并且是以链的形式保存, 所以信号出来的递归是没有问题的。信号处理函数sigreturn返回一次将执行一次类似弹栈操作, 直到栈为空为止。对于系统调用的自动重启, 只要把IP恢复为执行前一条指令, 那么系统调用自然自动被再次调用。不过由于带有超时参数的函数在执行signal_handler的时候会费掉时间, 再次进入系统调用将造成不必要的麻烦(两义性), 所以对于这类函数是不会自动重启的。 1 回答者:

http://keithpaine.com/xitongzhongduan/590.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有