- 1、本文档共3页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Linux内核注释-附录A
附录A Linux2.4
附录A Linux 2.4
内核的开发人员们并没有因为我在写这本关于Linux 的书而暂停他们的工作。(我是多
么希望他们这样做……。)说真的,内核的发展进展神速,就在这本书即将出版之际,它的
必威体育精装版稳定版本,2.4.0 ,也应该面世了。尽管在写作本书时要将对内核的成千种修改都一一涵
盖到是不可能的,但是这篇附录却总结了发生在本书所涉及内核部分的最令人感兴趣的那些
改变。这些修改中的绝大部分已经在内核的 2.3.12 版本里实现了,它们被包括在附赠的
CD-ROM 上。
作者十分感谢Joe Pranevich 的论文,”Wonderful World of Linux 2.4” (http://linuxtoday.
Com/stories/8191.html ),在准备这篇附录时它提供了无价的帮助。
1
更少的“惊扰(stampedes )”
请读者回忆一下第2 章里,函数__wake_up (26829 行)唤醒等待在等待队列上的所有
进程。可以考虑一个诸如Apache 一样的Web 服务器,它试图通过在同一端口派生出许多进
程监听连接申请以缩短响应时间(正好与等待连接请求到达,并且与只通过 fork 派生一个
进程来响应的方式相反)。所有这些进程都在一个等待队列里,等待连接请求到达,而当请
求确实到达的时候,它们都会被唤醒。它们当中只有一个能够为请求提供服务,所以剩下的
又都将返回休眠状态。
这种“惊扰”现象会浪费CPU 的时钟周期——只唤醒一个等待进程会更好,因为不管
怎样只有一个能够运行。因此,一个新的任务状态位TASK_EXCLUSIVE 就被引进;在一
次调用__wake_up 里,最多有一个设置了 TASK_EXCLUSIVE 位的任务会被唤醒。
TASK_EXCLUSIVE 位是附加在其他任务状态位上的——它并不代表一个新的任务状态,
它只是为了方便而保存在任务状态信息组里的信息而已。
现在__wake_up 要检查它正在唤醒的进程是否设置了TASK_EXCLUSIVE 位,并且在
它唤醒该进程之后便不再唤醒其他进程(通过使用break 中断循环)。TASK_EXCLUSIVE
位现在只被用在有关网络的等待队列上,而且它在那种环境中效果也的确很好。对于大多数
其他等待队列来说,你需要所有进程对等待着的资源都有机会进行占用,这样可以避免饥饿
现象。不过等待在同一个端口的服务程序通常与Apache 境遇相同:所有等待的任务都是一
样的,而且重要的是只要它们中有一个能够处理请求就可以,即使每次都是同一个任务(也
无所谓)。
再见吧,Java
正如第7 章里所预言的那样,Java 二进制处理程序(binary handler )已经从内核里消失
了,它是因被杂项二进制处理程序所替代而失效的。二元处理程序的常规用法没有变化,Java
执行体仍然可被杂项二进制处理程序的适当配置所完全支持。
1 “stampede”原意是指:动物受到惊吓后纷纷逃窜。作者使用该词说明:在等待队列中休眠的进程同时被唤
醒的情况。
- 192 -
附录A Linux2.4
ELF权能位
已有非官方的修补程序可以用于(增强)ELF 执行体中权能的存储。它们还没有成为正
式内核版本的一部分,部分原因在于是否 ELF 文件头是保存这些信息的恰当位置的问题还
处于讨论之中。不过,这些修补程序也有可能已经成为正式版本的一部分了。
调度程序提速
已被高度优化了的schedule 函数(26686 行)又被作了进一步优化。大多数修改只是在
system_call (171 行)系列调用的基础上进行了重新组织——也就是说,通过允许普通情况
直接通过以及把遍布在函数里的大部分 if 语句体都分散开来的方式提高代码的(运行)速
度。举例来说,第26706 和26707 行,如果又要运行的代码它们就运行底下的下半部分(bottom
halves ),现在采用的是这种形式:
P563—1
这样一来
文档评论(0)