- 1、本文档共57页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
深入剖析Linux中断机制.doc
深入剖析Linux中断机制
--中断概述
【摘要】本文详解了Linux内核的中断实现机制。首先介绍了中断的一些基本概念,然后分析了面向对象的Linux中断的组织形式、三种主要数据结构及其之间的关系。随后介绍了Linux处理异常和中断的基本流程,在此基础上分析了中断处理的详细流程,包括保存现场、中断处理、中断退出时的软中断执行及中断返回时的进程切换等问题。最后介绍了中断相关的API,包括中断注册和释放、中断关闭和使能、如何编写中断ISR、共享中断、中断上下文中断状态等。
【关键字】中断,异常,hw_interrupt_type,irq_desc_t,irqaction,asm_do_IRQ,软中断,进程切换,中断注册释放request_irq,free_irq,共享中断,可重入,中断上下文
1 中断概述
1.1 为什么需要中断?
处理器的速度跟外围硬件设备的速度往往不在一个数量级上,因此,如果内核采取让处理器向硬件发出一个请求,然后专门等待回应的办法,显然差强人意。既然硬件的响应这么慢,那么内核就应该在此期间处理其他事务,等到硬件真正完成了请求的操作之后,再回过头来对它进行处理。想要实现这种功能,轮询(polling)可能会是一种解决办法。可以让内核定期对设备的状态进行查询,然后做出相应的处理。不过这种方法很可能会让内核做不少无用功,因为无论硬件设备是正在忙碌着完成任务还是已经大功告成,轮询总会周期性地重复执行。更好的办法是由我们来提供一种机制,让硬件在需要的时候再向内核发出信号(变内核主动为硬件主动)。这就是中断机制。
1.2 中断的表示形式
硬件设备生成中断的时候并不考虑与处理器的时钟同步—换句话说就是中断随时可以产生。因此,内核随时可能因为新到来的中断而被打断。
从物理学的角度看,中断是一种电信号,由硬件设备生成,并直接送入中断控制器的输入引脚上。然后再由中断控制器向处理器发送相应的信号。处理器一经检测到此信号,便中断自己的当前工作转而处理中断。此后,处理器会通知操作系统已经产生中断,这样,操作系统就可以对这个中断进行适当的处理了。
不同的设备对应的中断不同,而每个中断都通过一个惟一的数字标识。因此,来自键盘的中断就有别干来自硬盘的中断,从而使得操作系统能够对中断进行区分,并知道哪个硬件设备产生了哪个中断。这样,操作系统才能给不同的中断提供不同的中断处理程序。
这些中断值通常被为中断请求(IRQ)线。通常IRQ都是一些数值量。例如在PC上,IRQ0是时钟中断,而IRQ 1是键盘中断。但并非所有的中断号都是这样严格定义的。例如,对于连接在PCI总线上的设备而言,中断是动态分配的。而在嵌入式系统中,由于中断线有限,一般外设和中断都是一一匹配的,很少有动态分配中断的。不管怎样,重点在于特定的中断总是与特定的设备相关联,并且内核要知道这些信息。
1.3 异常
在操作系统中,讨论中断就不能不提及异常。广义的中断可分为同步(synchronous)中断和异步(asynchronous)中断:
同步中断:是当指令执行时由 CPU 控制单元产生,之所以称为同步,是因为只有在一条指令执行完毕后 CPU 才会发出中断,而不是发生在代码指令执行期间,比如系统调用。
异步中断:是指由其他硬件设备依照 CPU 时钟信号随机产生,即意味着中断能够在指令之间发生,例如键盘中断。
一般由处理器本身产生的同步中断称为异常(exception),异步中断被称为中断(interrupt)。中断可分为可屏蔽中断(Maskable interrupt)和非屏蔽中断(Nomaskable interrupt)。异常可分为故障(fault)、陷阱(trap)、终止(abort)三类。
表 1:中断类别及其行为
类别
原因
异步/同步
返回行为
中断
来自I/O设备的信号
异步
总是返回到下一条指令
陷阱
有意的异常
同步
总是返回到下一条指令
故障
潜在可恢复的错误
同步
返回到当前指令
终止
不可恢复的错误
同步
不会返回
在处理器执行到由于编程失误而导致的错误指令(例如被0除)的时候,或者是在执行期间出现特殊情况(例如缺页),必须靠内核来处理的时候,处理器就会产生一个异常。因为许多处理器体系结构处理异常与处理中断的方式类似,因此,内核对它们的处理也很类似。
通过软中断实现系统调用,那就是陷人内核,然后引起一种特殊的异常—系统调用处理程序异常。你将会看到,中断的工作方式与之类似,其差异只在于中断是由硬件而不是软件引起的。
1.4 中断处理程序
在响应一个特定中断的时候,内核会执行一个函数,该函数叫做中断处理程序(interrupt han
您可能关注的文档
- 浙江省无缝钢管产品质量监督检查评价规则.doc
- 浙江省燃气用埋地聚乙烯(PE)管材管件.doc
- 浙江省钢质防护门产品质量监督检查评价规则.doc
- 海南四年高考物理模块3-3试题综述.doc
- 海曙区审管办高清音视频设备系统竞价采购项目.doc
- 海淀区七年级2016~2017学年第一学期期末练习.doc
- 海门市实验学校体育器材询价采购公告.doc
- 液体压强试题.doc
- 淀粉和变性淀粉糊化特性.pdf
- 深度解读人工智能过去60年沉浮史,未来60年将彻底改变人类.doc
- 作风建设学习教育读书班交流发言提纲.docx
- 交流发言:强化机关党组织政治功能和组织功能为财政中心工作夯实思想根基.docx
- 书记在市委理论学习中心组会上学习2025年全国两会精神研讨发言材料.docx
- 区委书记学习2025年全国两会精神专题研讨发言材料.docx
- 市委副书记在全市优化营商环境大会上的讲话.docx
- 在全县村(社区)“两委” 换届工作推进会上的讲话.docx
- 国有企业2025年意识形态工作要点.docx
- 市 2025 年司法行政系统党风廉政建设工作要点.docx
- 关于街道党建引领城市基层治理调研报告.docx
- 某县纪委监委关于整治殡葬领域腐败乱象专项行动自查自纠工作进展情况的报告.docx
最近下载
- 机械测量培训课程.pptx
- 医疗器械安全有效基本要求清单填写参考模板2024年.docx
- 人教版(2024)数学一年级下册四 100以内的口算加、减法 练习.pptx
- 电气装置安装工程质量检验及评定规程DLT5161 2018.doc
- 做好客舱清洁前准备课件讲解.pptx
- 铁道信号论文-信号机维护与故障处理.doc
- ISO13485质量手册+全套程序文件.docx VIP
- 汽车机械维修工(高级技师)职业鉴定考试题库资料(高频300题).pdf
- 多维视角下梧州市普通高中体育生学训现状剖析与发展路径探索.docx
- 江南事业编招聘考试题历年公共基础知识真题汇总-综合应用能力(2010-2021.pdf VIP
文档评论(0)