linux内核中的bottom half机制分析与应用

linux内核中的bottom half机制分析与应用

ID:34404138

大小:601.05 KB

页数:7页

时间:2019-03-05

linux内核中的bottom half机制分析与应用_第1页
linux内核中的bottom half机制分析与应用_第2页
linux内核中的bottom half机制分析与应用_第3页
linux内核中的bottom half机制分析与应用_第4页
linux内核中的bottom half机制分析与应用_第5页
资源描述:

《linux内核中的bottom half机制分析与应用》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、万方数据Linux内核中的BottomHalf机制分析与应用AnalysisandApplicationofBottomHalfMechanisminLinuxKemel李旭芳/LIXu_fang上海工程技术大学管理学院信息管理系,上海200336SchoolofManagement,ShanghaiUniVersityofEngineeringScience,Shanghai200336,China【摘要】针对中断服务程序的执行。重点讨论了L_nux内核中的BattomHaJf机制,介绍了从Ljnux2.O到L_n

2、ux2.6内核中所实现的BH函数接口、任务队列(taskqueue)、taskIet、软中断、工作队列(workqueues)等Bot【omHaIf机制,并分别从实现原理和具体使用方法两个方面进行了对比分析。【关■词】中断机制;Linux;BottomHaIf机制【中圈分类号】TP333【文■标识码】A【文章缩号】1000-7857(2006)05—0066—05Ab吼阳ctTheBottomHalfmechanisminIjnuxkemelisdiscussedinthepaperfortherealization

3、ofinte肿ptpmgmms.Funhe珊ore,theBottomHa址includingBHfunctioninte五∞e,taskqueue,tasklet,softirq,andworkqueues,whichwereevolved6.omlinux2.Otolinux2.6,isanalyzedindetailf如mthetwoaspectsofrealizationtlleoryand印plication.Keywonds:inte删ptmechanism;bnu】【;BottomHalfmechani

4、smCLcN帅的c11P333DOcun’1日mCOde:AA—BcIeID:1000—7857(2006)05—0066—051引言Linu)【是类UNIX操作系统,是多用户、多任务的操作系统,具有良好的开放性和可靠性,在“nu】【平台下开发数控系统具有重要意义【l】。数控系统的多任务性和实时性闼,决定了系统中断成为整个系统必不可少的重要组成部分。那么,Linux是如何执行中断服务的呢?为了避免中断嵌套而使控制复杂,中断服务一般都是在将中断请求关闭的条件下执行的,但这样做存在的问题是,如果在中断服务执行的全过程,关

5、闭中断则使CPU不能响应其它的中断请求;如果在全过程开启中断,则又可能造成中断嵌套(单CPU下中断嵌套执行,多CPU下并发执行同一中断)。“nux将中断服务程序一分为二p】,各称作“T叩Half'’和“BottomHalf”。TopHalf通常对时间要求较为严格,必须在中断请求发生后立即或至少在一定的时间限制内完成。为了保证这种处理能圆满地完成,TopHaⅡ通常是在CPU关闭中断的条件下执行的。TopHdlf的范围包括:从在IDT中登记的中断入口函数一直到驱动程序注册在中断服务队列中的ISR。BottomHalf则是

6、T0pHalf根据需要来调度执行的,这些操作允许延迟到稍后执行,它的时间要求并不严格,因此它通常是在CPU开启中断的条件下执行的。但是,“nux早期实现的BottomHalf机制BH函数接口有2个缺点:①BH代码的执行是严格“串行化”的,在任意一时刻,系统只能有1个CPU可以执行BottomHalf代码,以防止2个或多个CPU同时来执行BH函数而相互干扰;②BH函数不允许嵌套。这2个缺点在单CPU系统中是无关紧要的,但在SMP系统中却是非常致命的,因为BH函数机制的严格串行化执行显然没有充分利用SMP系统的多CPU特

7、点。为此,“nux2.4内核在BH函数机制的基础上进行了扩展,这就是所谓的“软中断请求”(softirq)机制。Linux2.6内核在保留soft岫和tasklet机制的同时,还提供了一个新的BottomHalf机制一workqueues。2BH函数接口从Linux2.0开始便实现了BH函数接口,它设置了一个函数指针数组bh-base[32],数组中的每个指针可以用来指向一个具体的BH函数,同时又设置了2个32位无符号整数bh—active和bh-rnask,每个无符号整数中的32位对应着数组bh-base[】中的3

8、2个元素,用以确定是否开启/关闭BH函数。当执行某硬件中断服务程序时,如果需要执行一个BH函数,硬件中断服务的TopHalf只需通过函数rrLark-bh()将bh—active中的相应位设成1,然后返回,剩下的工作交给相应的BH来处理。当内核每次执行完do_IRQ0中的中断服务程序之后,或者每次系统调用结束之时,函数do_bottom_hal

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

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

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