中断机构和中断处理程序

Posted fusiji

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了中断机构和中断处理程序相关的知识,希望对你有一定的参考价值。

  中断在操作系统中有着重要地位,它是多道程序得以实现的基础,没有中断就没有多道程序,因此进程之间的切换是通过中断来完成的。此外,为了提高处理机的利用率和实现CPU与I/O设备的并行执行,也必须要有中断的支持。

中断和陷入

中断:是指CPU对I/O设备发来的中断信号的一种响应。CPU保护暂停当前进程,转而去处理引发中断的进程。执行完后,再返回到原进程,继续执行。I/O设备可以是字符设备(键盘),块设备(磁盘)或通信设备(网络)等。由于中断是外部造成的,所以又叫外中断。

陷入:显然,陷入是由CPU进程内部事件引发的中断,因此叫陷入或内中断。其产生的原因往往是由于进程本身出现运行时异常。

两者的区别仅仅是信号的来源

中断向量表和中断优先级

1.中断向量表

  用于记录相应中断处理程序入口地址的映射表。表中有为中断类型分配的中断号和相对应的中断处理程序的入口地址。当中断来临时,由中断控制器确定中断号,再到表中寻找程序。

2.中断优先级

  对于并发的中断请求,必须要给出合理的中断顺序,比如键盘中断和磁盘中断谁更重要等,要给出解决中断的优先级。

多中断的处理方式

试想一种情况:当处理机正在处理键盘引起的终端,此时又收到了高优先级的磁盘中断,应该如何处理?

1.屏蔽(禁止)中断

  对于新来的中断,在当前中断未完成之前,对于其他中断不予理睬,直到当前处理完。采用先来先服务的方式。

2.嵌套中断

  中断的中断。中断处理程序也是进程,当更高优先级的中断处理程序到来时,可以剥夺当前中断处理进程的处理机,及中断的中断。此种情况下,CPU总是优先响应更高优先级的中断请求。

中断处理程序的处理过程

1.测定是否有未响应的中断信号。当设备完成I/O后,设备控制器会向处理机发送中断信号,告诉I/O完成。之后要测试在中断请求队列中是否有未响应的请求。

2.保护被中断进程的CPU环境。保存现场,将进程的CPU信息全部载入进程PCB中(堆栈区),然后切换进程。

3.转入相应的设备处理程序。根据中断号找到相应程序的入口,交给设备驱动程序。

4.中断处理。检测设备控制器中相应设备的状态(正常、异常),并给予相应的解决。

5.恢复CPU现场并退出中断。如果是屏蔽中断,返回被中断进程;嵌套中断,检查优先级队列,根据是否有更高优先级中断请求,选择返回原中断还是处理更高优先级中断;

6.检测中断是否处理正确,向上层软件确定结果,报告等后续操作。

 

以上是关于中断机构和中断处理程序的主要内容,如果未能解决你的问题,请参考以下文章

《Linux内核设计与实现》学习笔记——中断中断处理程序

RISC处理器设计------中断的设计

单片机中的中断是怎么实现的?

驱动:中断中断处理程序中断上下文中处理延时及一些函数的调用规则(调IIC中断驱动有感)

对于共享中断线,如何找到要使用的中断处理程序?

中断处理程序