中断处理源码情景分析.PDF

  1. 1、本文档共47页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
中断处理源码情景分析.PDF

中断处理源码情景分析 作者:杨小华 E-mail: normalnotebook@126.com 2006.1.1 声明 你可以自由地随意修改本文档的任何文字内容及图表,但是如果你在自己的文档中以任 何形式直接引用了本文档的任何原有文字或图表并希望发布你的文档,那么你也得保证让所 有得到你的文档的人同时享有你曾经享有过的权利。 如果本文有什么错误,请大家指正,谢谢!发信至:normalnotebook@126.com 1. 中断概述 Linux 内核需要对连接到计算机上的所有硬件设备进行管理,这是它份内的工作。如果 要管理这些设备,首先要和他们互相通信才行。想要实现这种功能,一般有两种方法: 1. 轮询(polling ) 让内核定期对设备的状态进行查询,然后做出相应的处理; 2. 中断(interrupt )让硬件在需要的时候向内核发出信号(变内核主动为硬件主动)。 第一种方案会让内核做不少的无用功,因为轮询总会周期性的重复执行,大量地耗用 CPU 时间,因此效率及其低下,所以一般都是采用第二种方案。 从物理学的角度看,中断是一种电信号,由硬件设备产生,并直接送入中断控制器(如 8259A)的输入引脚上,然后再由中断控制器向处理器发送相应的信号。处理器一经检测到 该信号,便中断自己当前正在处理的工作,转而去处理中断。此后,处理器会通知 OS 已经 产生中断。这样,OS 就可以对这个中断进行适当的处理了。不同的设备对应的中断不同, 而每个中断都通过一个唯一的数字标识。这些中断值通常被称为中断请求线。 1.1. 中断分类 中断可分为同步(synchronous )中断和异步(asynchronous )中断: 1. 同步中断是当指令执行时由 CPU 控制单元产生,之所以称为同步,是因为只有 在一条指令执行完成后 CPU 才会发出中断。 2. 异步中断是指由其他硬件设备依照 CPU 时钟信号随机产生。 根据 Intel 官方资料,同步中断称为异常(exception ),异步中断称为中断 (interrupt )。 中断可分为: 1. 可屏蔽中断(Maskable interrupt ) I/O 设备发出的所有中断请求都会产生可屏蔽中断。一个屏蔽的中断只要还是屏蔽 的,控制单元就忽略它。 2. 非屏蔽中断(Nomaskable interrupt ) 只有几个危急事件才引起非屏蔽中断。非屏蔽中断总是由 CPU 辨认。 异常可分为: 1. 处理器探测异常 1) 故障(Fault ) 通常可以纠正;一旦纠正,程序就可以在不失连贯性的情况下重新开始。保存在 eip 中的值是引起故障的指令地址。因此,当异常处理程序终止时,那条指令会重 新被执行。 2) 陷阱(Trap) 在陷阱指令执行后立即报告;内核把控制权返回给程序后就可以继续它的执行而不 失连贯性。保存在 eip 中的值是一个随后要执行的指令地址。只有当没有必要重新 执行已中止的指令时,才出发陷阱。 3) 终止(Abort ) 发生一个严重的错误;控制单元出了问题,不能在 eip 寄存器中保存引起异常的指 令所在的确切位置。这个异常中止处理程序除了强制中止受影响的进程中止外,没 有别的选择。 2. 编程异常 控制单元把编程异常作为陷阱来处理。 综上所述,从广义上讲,中断可分为四类:中断、故障、陷阱、终止。这些类别之间的 异同点请参看表 1。 类别 原因 异步/ 同步 返回行为 中断 来自 I/O 设备的信号 异步 总是返回到下一条指令 陷阱 有意的异常 同步

文档评论(0)

tangtianxu1 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档