- 1、本文档共38页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
中断处理程序特点以异步方式运行,可能会打断关键代码的执行,甚至打断其他中断处理程序的执行;在屏蔽中断状态下运行,最坏的情况会禁止所有中断;要对硬件进行操作,有很高的时限要求;它在中断上下文中运行,故不能被阻塞。4.Linux三种任务延迟机制
tasklet、workqueue、Softirq。(1)小任务(tasklet)
tasklet能更好支持SMP,它基于软中断来实现,但比软中断接口简单,锁保护要求低;softirq保留给执行频率及时间要求特高的下半部分使用(如网络和SCSI),多数场合下可使用tasklet。使用tasklet的步骤:声明tasklet、编程tasklet、调度tasklet。BH全局串行处理,不适应SMP环境,而不同tasklet可同时运行于不同CPU上,当然,系统保证相同tasklet不会同时在不同CPU上运行,在这种情形下,tasklet就不需要是可重入的。在新版Linux中,tasklet是建议的异步任务延迟执行机制。(2)工作队列workqueue
Linux2.5内核引入-工作队列,它把一个任务延迟,并交给内核线程去完成,且该任务总是在进程上下文中执行,通过工作队列执行的代码能占尽进程上下文的优势,最重要的是工作队列允许重新调度及阻塞。如果延迟执行的任务需要阻塞,需要获取信号量或需要获得大量主存时,那么,可选择工作队列,否则可使用tasklet或softirq。(3)软中断softirq(1)
Linux沿用最早BH思想,实现了庞大和复杂的软中断子系统-softirq,它是一种软中断机制,又是一个框架,包括tasklet,及为网络操作专门设计的软中断。软中断结构:structsoftirq_action{void(*action)(structsoftirq_action*);//待执行的函数void*data;//传给函数的参数};软中断softirq(2)
最多注册32个软中断,目前预定义六个元素,enum{HI_SOFTIRQ,//高优先级taskletTIMER_SOFTIRQ//定时器下半部分NET_TX_SOFTIRQ,//发送网络数据包NET_RX_SOFTIRQ,//接收网络数据包SCSI_SOFTIRQ,//SCSI下半部分TASKLET_SOFTIRQ,//公共tasklet};软中断softirq(3)
软中断使用步骤:声明softirq、注册softirq、触发softirq、处理softirq。软中断执行时机:1)在处理完硬件中断后;2)在ksoftirqd内核线程中;3)在显式检查和执行待处理的软中断的代码中。2.2中断技术2.2.1中断概念2.2.2中断源分类2.2.3中断和异常的响应及服务2.2.4中断事件处理原则2.2.5中断优先级和多重中断2.2.6Linux中断处理2.2.1中断概念?请求系统服务,?实现并行工作,?处理突发事件,?满足实时要求,都需要打断处理器正常的工作,为此,提出了中断概念。中断定义中断是指程序执行过程中,遇到急需处理的事件时,暂时中止CPU上现行程序的运行,转去执行相应的事件处理程序,待处理完成后再返回原程序被中断处或调度其他程序执行的过程。2.2.2中断源分类
?外中断(中断或异步中断)--是指来自处理器之外的中断信号,包括时钟中断、键盘中断和设备中断等;外中断又分可屏蔽中断和不可屏蔽中断,每个不同中断具有不同的中断优先级,表示事件的紧急程度,在处理高一级中断时,往往会屏蔽部分或全部低级中断。?内中断(异常或同步中断)--是指来自处理器内部,通常由于程序执行中,发现与当前指令关联的、不正常的、或是错误的事件。中断和异常的区别(1)
?(1)中断是由与现行指令无关的中断信号触发的(异步的),且中断的发生与CPU处在用户模式或内核模式无关,在两条机器指令之间才可响应中断,一般来说,中断处理程序提供的服务不是为当前进程所需的;?异常是由处理器正在执行现行指令而引起的,一条指令执行期间允许响应异常,异常处理程序提供的服务是为当前进程所用的
文档评论(0)