Linux技术大全之内核机制和模块.pdf

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
下载 第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

文档评论(0)

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

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

1亿VIP精品文档

相关文档