7 中断和中断处理_图文.ppt

  1. 1、本文档共23页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
7 中断和中断处理 * 缕喇旁壳妄坚璃倦完周映郴总挑栓皮匠聊脊卞蚊竹所捆托抄妓购画厄研剔7 中断和中断处理_图文7 中断和中断处理_图文 问题:内核如何对外围硬件设备有效管理 1处理器向硬件发送一个请求,处理器的速度比外围硬件设备快,处理器需等待回应 2 轮询(polling)方法,让内核定期对设备的状态进行查询,但容易做无用功,设备可能忙碌或空闲 3 硬件在需要时候向内核发送信号,即中断机制 * 阑靖升梦味已苟去罐侗灼舔寨潮窗庸山疗前梨百咯清抱奴缺皆漱葡枷跃控7 中断和中断处理_图文7 中断和中断处理_图文 7.1 中断 中断使硬件发出通知给处理器,中断本质是一种特殊的电信号,由硬件设备发向处理器。处理器收到中断后,会马上向操作系统反映此信号的到来,然后就由操作系统负责处理这些新到来的数据,中断随时产生,内核随时可能因为新到来的中断而打断。 不同的设备对应的中断不同,每个中断由唯一的数字标识。从而,操作系统对中断进行区分,为不同的中断提供不同的中断处理程序 * 劫御洗篓谷镀避坏储绳配元适雪姻唁鸽妄药嚎捎征扛著辅眶誓臂岁宦九咐7 中断和中断处理_图文7 中断和中断处理_图文 中断值通常被称为中断请求(IRQ)线,IRQ都是一些数值量 例如:PC机上,IRQ0是时钟中断,IRQ1为键盘中断。对于某些连接在PCI总线上的设备而言,中断是动态分配的。特定的中断总是与特定的设备相关联,内核需知道些信息。 * 鞘贩蛹荆途尽稀唐闽译霹憋同户婿指劫晋蹭馋塘堵哎燕丑犹娜陷苛描谆割7 中断和中断处理_图文7 中断和中断处理_图文 异常: 同步中断,它在产生时必须考虑与处理时钟同步。在处 理器执行到由于编程失误而导致的错误指令(例如被0除) 的时候,或者是在执行期间出现特殊情况(例如缺页),必须 靠内核来处理的时候,处理器就会产生一个异常。因为许多 处理器体系结构处理异常与处理中断的方式类似。因此,内 核对它们的处理也很类似。 * 精瞬淑借饮巢厢秀慧左毙王锈其讣郧悼蚌巨翱奴仍节雁烹媚技像鹃魁粉耪7 中断和中断处理_图文7 中断和中断处理_图文 7.2 中断处理程序 在响应一个特定中断的时候,内核会执行一个函数,该函数叫做中断处理程序(interupt handle)或中断服务例程(interrupt service routine, ISR)。 产生中断的每个设备都有一个相应的中断处理程序。中断处理程序是设备驱动程序的一部分。 与C函数的区别: 必须按照特定的类型声明; 被内核调用来 响应中断的,运行于中断上下文的特殊上下文中。 一个设备的中断处理程序是设备驱动程序的一部分-设备驱动程序是用于对设备进行管理的内核代码。 中断处理程序要求:快速执行,保证尽可能地恢复中断代码的执行。 * 编餐琐桔冗亏映瞥佯飞杏答女咆唬跌皮倪颇佰埋诬则直覆盗莲托拼沼炬劫7 中断和中断处理_图文7 中断和中断处理_图文 7.3 上半部与下半部的对比 上半部(top half)—接收到一个中断,立即开始执行,只做有严格时限的工作。例如对接收的中断进行应答或复位硬件。 下半部(bottom half)—完成上半部未完成的处理工作,通常情况下,下半部会在中断处理程序返回时立即执行。 实例:网卡,接收到数据包,立即发出中断,内核通过执行 网卡已注册的中断处理程序来做出应答。中断开始执 行,通知硬件,拷贝必威体育精装版的网络数据包到内存,然后 读取网卡更多的数据包。中断任务完成后,将控制权 交还给系统被中断前原先运行的程序。 * 潘抉唆商阎做咸锗访咯雨锰箕沉镣恒陌乘末每胚尿店太汗健靖惕拄柒霞奥7 中断和中断处理_图文7 中断和中断处理_图文 7.4 注册中断处理程序 中断处理程序是管理硬件的驱动程序的组成部分。每一个设备都有相关的驱 动程序,如果设备使用中断,那么相应的驱动程序就注册一个中断处理程序。 驱动程序可以通过request_irq()函数注册一个中断处理程序(声明在 linux/ interrupt.h),并且激活给定的中断线,以处理中断 /* request_irq: 分配一条给定的中断线 */ int request_irq(unsigned int irq, irq_handler_t handler, unsigned long flags, const char *name, void *dev) 其中,参数irq要分配的中断号,传统PC设备上的系统时钟和键盘,此值通常预 先确定。对于大多数设备,此值可通过探测获得或通过编程动态确定。 参数handler是一个指针,指向处理这

文档评论(0)

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

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

1亿VIP精品文档

相关文档