- 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 CPU 调度器
深入理解Linux CPU 调度器 1
1. 简介 3
1.1 文件综述 3
1.2 Linux内核著作 3
1.3 排版约定 4
1.4 关于该文档 4
1.5 随书CD 4
2. Linux内核源码 5
2.1 获取源码 5
2.2 内核版本管理 5
2.3 代码组织 5
3. 进程与线程综述 6
3.1 程序和进程 6
3.2 线程 6
3.3 调度 6
3.4 CPU与IO受限的线程 7
3.5 上下文切换 7
3.6 Linux进程与线程 8
4. Linux调度目标 9
4.1 Linux的目标市场及他们在调度器上所作出的努力 9
4.2 效率 9
4.3 交互性 9
4.4 公平性与饥饿预防 10
4.5 SMP调度 10
4.6 SMT调度 10
4.7 NUMA调度 11
4.8 软实时调度 11
4.9 调度性能透视 11
5. Linux 调度器 13
5.1 起源及O(1)算法的重要性 13
5.2 运行队列 13
5.3 优先级数组 15
5.4 运算优先级及时间片 17
5.5 休眠眠与唤醒任务 19
5.6 主调度函数 21
5.7 负载均衡 22
5.8 软实时调度 23
5.9 NUMA调度 24
5.10 调度器调整 25
6. Linux 2.4.x调度器 27
6.1 算法 27
6.2 优势 28
6.3 劣势 28
7. Linux调度器的未来 30
7.1 调整实现 vs. 算法变换 30
8. 附录 31
8.1 致谢 31
8.2 关于作者 31
8.3 遵循法规(GNU FDL) 31
引用 32
1. 简介
1.1 文件综述
大量与复杂的代码源使得近年来linux的发展相对迅速。这是由于他被大量的业余爱好者,家庭用户,商业用户及教育协会所接受。Linux 内核邮件列表(内核开发者的邮件列表)在2004年的夏天观察到,几乎平均每天都有50到100个开发者发出300份消息。这个数字不包括那些专注于体系结构的论坛,那些论坛的消息是另外统计的。在2003年八月到2004年八月的一年中,超过16000份不同大小的更新被提交给了官方linux内核进行审批。高速的发展导致非常少的内核重要部件在应用时能够被文档化。
文档的匮乏导致内核开发者,学生,研究者,甚至是内核老手都难以及时理解内核实现的变化。对所有这些人来说,实现级别的文档给他们带来许多好处。很显然的,那些希望能够对内核开发做出贡献的人来说,他们必须对现有的内核实现有个比较全面的了解。但是,为什么学生和研究者也应该了解现有内核实现呢?难道是了解内核理论与内核大致工作机理还不够吗?这是由于,Linux的内核的开发重点是其实用性,而不是其理论的合理性,所以,许多关于linux内核改变的决断都是基于其使用的真实效果。这意味着,大多情况下,linux的实现会从理论基础中分离出来。通常这种情况发生时,都是出于一些很重要的原因。在实践的过程中,理解被应用的算法,以及理论与实际产生分歧的推理过程,理解理论的缺陷,这是未来算法发展的几大要素。
由于上述的种种原因,linux需要针对其内核实现的专门性文档,而不仅仅是开发者在一时间设计决断的基础理论。这篇描述linux 调度器的文章是受到了 Mel Gorman 所提出的关于linux虚拟内存系统的论文的启发,该论文是其领域内被最多linux虚拟内存系统的开发者所引用,受到最高评价的文章。
这篇文章的目的是提供一份深入的关于linux 调度器的文档。希望这篇文章能对众多希望了解调度器的实现的内核开发者和学生及研究员提供些许帮助。同时也希望这篇文章能够减少读者深入了解调度器所需要花的时间。同样 Mr.Gorman 关于linux 2.4.20虚拟内存系统的文章对理解2.6.x系列内核的虚拟内存系统仍很有帮助,希望这篇文章也能对之前版本的linux内核起到重要作用。
1.2 Linux内核著作
虽然linux内核缺乏及时更新的代码级的文档,但是仍有许多有用的高质量引导性文档。如果你希望能够深入理解linux内核的构建,所有下述的这些文章都值得一看。
《linux kernel development》 Robert Love
这本书涵盖了整个linux 2.6.x系列内核,直到2004年的秋天,恐怕这是唯一一本做到涵盖整个2.6.x系列内核的书籍。本书给出了关于每个linux组件的概述,同时描述了他们如何组织在一起。其中,包括写的非常好的linux2.6.x调度器部分。
上述这本书可能是唯一一本涵盖整个linux2.6.x内核的书籍,但是仍然有许多其他关于linux2.4.x内核的书籍,同样对理解linux
原创力文档


文档评论(0)