linux内核中断

linux内核中断

ID:39465470

大小:154.50 KB

页数:45页

时间:2019-07-04

linux内核中断_第1页
linux内核中断_第2页
linux内核中断_第3页
linux内核中断_第4页
linux内核中断_第5页
资源描述:

《linux内核中断》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、1.1中断的由来及实质Linux内核要管理计算机上的硬件设备,首先要和他们通信。而处理器的速度跟外围硬件设备的速度往往不在一个数量级上,因此,如果内核采取让处理器向硬件发出一个请求,然后专门等待回应的办法,显然差强人意。既然硬件的响应这么慢,那么内核就应该在此期间处理其他事务,等到硬件真正完成了请求的操作之后,再回过头来对它进行处理。想要实现这种功能,轮询(polling)可能会是一种解决办法。可以让内核定期对设备的状态进行查询,然后做出相应的处理。不过这种方法很可能会让内核做不少无用功,因为无论硬件设备是正

2、在忙碌着完成任务还是已经大功告成,轮询总会周期性地重复执行。更好的办法是由我们来提供一种机制,让硬件在需要的时候再向内核发出信号(变内核主动为硬件主动)。这就是中断机制。由中断或异常处理程序执行的代码不是一个进程,它是一个内核控制路径,代表中断发生时正在运行的进程执行,内核控制路径比一个进程要“轻“。1.2异常和中断中断(interrupt)通常被定为一个事件,该事件改变处理器执行的指令顺序。中断通常分为同步中断和异步中断:l同步中断是当指令执行时由CPU控制单元产生的,称为同步,是因为只有在一条指令执行完成

3、后CPU才会发生中断。l异步中断是由其他硬件设备依照CPU始终信号随机产生的。同步中断又称为异常,异常是由程序的错误产生的(例如除0),或者是由内核必须处理的异常条件(例如缺页)产生的。前一种情况下,必须通知应用程序出现了异常,内核通过发送一个每个Unix程序员熟悉的信号来处理异常,后一种必须借助于内核才能修复,内核执行恢复异常需要的所有步骤。异常和异步中断的相同点:如果CPU当前不处于核心态,则发起从用户态到内核态的转变,接下来。内核中执行一个专门的中断服务例程(ISRinterruptservicerou

4、tine)。异常和异步中断的不同点:产生源的区别,产生原因的区别,及发生时间的区别。还有一方面,许多中断可以禁用,但有些不行。此后本文所说中断默认指的都是异步中断。(注意,这里是Intel划分的,并不是Linux,Linux有自己的划分方法)更进一步,Intel文档中又把中断和异常继续进行了细分:l中断:可屏蔽中断:I/O设备发出的所有的中断请求(IRQ)都产生可屏蔽中断。可屏蔽中断产生两种状态:屏蔽的(masked)或非屏蔽的(unmasked);当中断被屏蔽,则CPU控制单元就忽略它。非可屏蔽中断:总是由

5、CPU辨认。只有几个危急事件引起非屏蔽中断。l异常:1.处理器探测到得异常:1)故障(fault)通常可以纠正;一旦纠正,程序可以在不失连贯性的情况下重新开始。保存在eip中的值是引起故障的指令地址。因此,当异常处理程序停止时,那条指令会重新执行2)陷阱(trap)在陷阱指令执行后立即报告;内核把控制权返回给程序后就可以继续它的执行而不失连贯性。保存在eip中的值是一个随后要执行的指令地址。只有当没有必要重新执行已中止的指令时,才触发陷阱。陷阱的主要用途是为了调试程序。3)异常终止(abort)发生一个严重错

6、误;CPU控制单元出了问题,不能在eip寄存器中保存引起异常指令所在的确切位置。这个异常中止处理程序除了强制中止受影响的进程中止外,没有别的选择。2.编程异常(programmedexception)在编程者发出请求时发生。是由int或int3指令触发的。控制单元把编程异常作为陷阱来处理。编程异常也叫软中断。用途:执行系统调用及给调试程序通报一个特定的事件。综上所述,从广义上讲,中断可分为四类:中断、故障、陷阱、终止。这些类别之间的同点请参看表1。表1中断的类别(此表摘自《深入理解计算机系统》)类别原因异步/

7、同步返回行为中断来自I/O设备的信号异步总是返回到下一条指令陷阱有意的异常同步总是返回到下一条指令故障潜在可恢复的错误同步返回到当前指令终止不可恢复的错误同步不会返回在可能的情况下,内核试图避免禁用中断,因为禁用会损害系统性能(比如禁用键盘,就交互不友好了),但有些场合禁用中断是必要的,在处理第一个中断时,如果发生第二个中断,内核会发生严重的问题。如果内核在禁用中断的情况下,花费过多时间处理一个ISR(中断服务例程),会丢失一些系统正确运作不可必要的中断。并且因为中断随时可能发生,即中断处理程序随时可能执行,

8、必须保证中断处理程序快速执行,这样才能保证尽可能快的恢复中断代码的执行,中断处理很重要,但对系统其它部分而言,中断处理程序尽可能短时间内处理完同样重要。为了解决这些问题,一般把中断处理且为两个部分。中断处理程序是上半部,接收到中断立即开始执行,但只做有严格时限的工作,例如对中断的应答,这些工作是在所有中断被禁止的情况下完成的,能够被允许稍后完成的会推迟到下半部去。此后,在合适的时机,下半部会被开中断

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。