中断程序和中断处理程序
中断是指CPU接受到I/O设备发送的中断信号的一种响应。CPU会暂停正在执行的程序,保留CPU环境后自动转去执行该I/O设备的中断处理程序。执行完毕后回到断点。继续执行原来的程序。中断是由外部程序引起的所以称为外中断。
由CPU内部引起的中断,例如在运算的过程中数据发生了上溢或者下溢,又或者程序出错,电源等故障。这类中断称为内中断,CPU也会暂停正在处理的程序去执行陷入该事件的中断处理程序。中断和陷入的主要区别是信号的来源。
中断向量表:
为了处理方便,会为每种设备配以相应的中断处理程序,并且将对应的中断处理程序的地址放入中断向量表中的一个表项中,当中断信号发来时,由中断控制器来确定中断号,再在中断向量表中找到相应的处理程序的地址,执行中断处理程序。
中断优先级:
在实际处理的过程中,经常会有很多中断的信号源所以系统会规定相应的中断优先级,对于不同优先级的中断信号同时发来时主要有两种处理方式:
①屏蔽中断,当处理器在处理一个中断的时候,会屏蔽掉其他的所有中断。直到处理器完成当前中断。
②嵌套中断,当处理器在处理中断的时候遇到优先级更高的中断,高优先级可以抢占低优先级的资源。优先处理高优先的中断。
中断处理程序:
中断处理程序主要分为两部分,①测定是否有未响应的中断信号,若有未处理的中断信号则先停止当前程序去转而执行中断处理程序。
②保护被中断进程的CPU环境,再把处理器的控制权交给中断处理程序的时候,需要先保存被中断的CPU环境,以便以后能够恢复运行。首先保存的是,从中断现场恢复到当前进程所需要的信息,通常由硬件自动将处理器状态字和保存在程序指令计数器中下一条指令的地址保存在中断保留区中,然后把被中断你的CPU的现场信息的内容都压入中断栈中。
③转入相应的设备处理程序。由处理器对各个中断源进行测试,确定引起本次中断的I/O程序,并且向中断信号的设备发送确认信息,再收到确认信号以后就立刻取消中断信号,再将相应设备的中断处理程序装入到程序计数器中。
④中断处理
⑤恢复CPU的现场,是否返回中断现场取决于两个因素,①是否采用了屏蔽中断,如果是屏蔽中断则直接返回CPU中断现场。
如果是嵌套式如果没有优先级更高的中断则返回CPU中断现场,如果有则执行优先级更高的中断处理。