- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Linux技术大全之内核机制与模块
下载
第9章 内核机制与模块
9.1 内核机制
本节讲述L i n u x 内核提供的几种通用任务和机制,正是在它们的支持下,内核的其他部分
才得以协调一致地工作。
9.1.1 Bottom Half控制
核态( k e r n e l )下有很多时候系统为了进行一项工作而无法再干其他的事情,中断处理就是
很好的例子,当有中断时,处理机停止当前的工作,由操作系统将中断转交给相应的设备驱
动程序,然后等待,因此设备驱动程序应快速完成中断的处理,提高系统效率。然而还有另
外一些工作,系统不必为它们停止当前的处理,因为可以稍后再进行这些工作, L i n u x 的
Bottom Half 控制程序正是为了处理这些工作而设计的。图 1 - 9 - 1给出了Bottom Half 控制程序
所用的内核数据结构,由图中可看出,一共有 3 2个不同的Bottom Half 控制程序,同时有一个
包含3 2个指针的b h _ b a s e 向量,每个指针指向一个Bottom Half控制例程。b h _ a c t i v e 和b h _ m a s k
通过其位值分别指出安装了哪些控制程序和哪些控制程序是活跃的:如果 b h _ m a s k第N 位被置
1,则表明b h _ b a s e 中的第N个指针指向了一个 Bottom Half 例程;如果b h _ a c t i v e第N 位被置 1,
则表明一旦调度进程许可,立即调用第 N 个Bottom Half 例程。这些索引值都是静态设定的,
如定时器Bottom Half 控制器具有最高优先级 (索引值0 ) ,控制台Bottom Half 控制器优先级稍
低( 索引值 1 )等等。典型的 Bottom Half 控制例程总与一个任务表相关联,比如 I m m e d i a t e
Bottom Half 控制程序负责 i m m e d i a t e任务队列 ( t q - i m m e d i a t e ) 的处理,该队列中包含了需立即
执行的任务。
图1-9-1 Bottom Half控制数据结构
有一些内核的Bottom Half 控制程序是由硬件设备所定义的,但另外一些则是通用的,如
下所示:
108 第一部分 Linux 内核
下载
T I M E R 每次系统周期性定时器中断均被调用,以驱动内核定时器队列机制
C O N S O L E 处理控制台消息
T Q U E U E 处理t t y 消息
N E T 处理通用网络运行
I M M E D I AT E 为一些设备驱动程序设计的通用控制,用于将稍后进行的工作排队
一旦设备驱动程序或内核其他部分需要调度待执行工作,首先要加入工作到相应的系统
队列中(例如定时器队列 ) ,然后通知内核去执行某些 Bottom Half 控制程序,这是通过设置
b h _ a c t i v e 中的相应位来实现的。如果驱动程序将某些工作加到了 i m m e d i a t e 队列中,并希望执
行Immediate Bottom Half 以处理这些工作,则其会把b h _ a c t i v e 的第8位置 1。在每次系统调用
之后并尚未将控制器交给调用进程之前,都要检测 b h _ a c t i v e 的各个位置,若发现某些位被置1,
则调用相应的Bottom Half控制程序,检测顺序由第 0位到第3 1位,调用完成之后b h _ a c t i v e 中相
应位清零。b h _ a c t i v e 是暂时的,仅在两次调度进程调用之间有意义,对它的使用可避免无任
何工作要做时盲目调Bottom Half控制程序。
9.1.2 任务队列
任务队列是内核用于延迟某些工作的一种方法。 L i n u x对于将工作排队稍后处理有一种通
用机制。任务队列通常用于 Bottom Half控制程序的连接,当运行定时器队列 Bottom Half控制
程序时则处理定时器队列。如图 1 - 9 - 2所示,任务队列是一种简单的数据结构,它包含了一个
t q
您可能关注的文档
- Matlab与C混合编程汇总.pdf
- 最全面的Linux信号量学习.pdf
- 提供个C#实现文件下载代码.pdf
- 用单片机驱动蜂鸣器唱歌的设计与原理.doc
- Pb通过jdbc连接mysql的配置及程序发布.pdf
- 英文期刊Automatic-door Design and Implementation Based on PLC.pdf
- 蜂鸣器简介及使用方法.doc
- app.xml配置详解.pdf
- VB编程DataGrid中的数据导入到Word和Excel.pdf
- 画笔电子学告诉你蜂鸣器为什么会响.pdf
- 长久物流-市场前景及投资研究报告-整车物流运输领先,反内卷,盈利改善.pdf
- 安徽智能家电行业市场前景及投资研究报告:百尺竿头,聚焦高质量,生态聚合,谱写篇章.pdf
- 中信银行-市场前景及投资研究报告-零售战略推进,对公根基深厚.pdf
- 九洲药业-市场前景及投资研究报告-技术创新核心,创新药CDMO一站式服务平台.pdf
- 华新水泥-市场前景及投资研究报告-水泥国际化先行者,国内反内卷.pdf
- 奢侈品行业2025年市场前景及投资研究报告:培训课件.pdf
- 社会服务行业2025年投资策略分析报告:新消费景气度,关注细分赛道投资.pdf
- 华洋赛车-市场前景及投资研究报告-国内摩托车运动代表品牌,募投项目新增产能.pdf
- 2026届江苏省东台市第一中学高三语文第一学期期末达标测试试题含解析.doc
- 2026届宁夏银川市宁夏大学附中语文高三第一学期期末教学质量检测模拟试题含解析.doc
文档评论(0)