- 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内核注释-第7章 进程和线程.pdf
第 7 章 进程和线程.doc
第 7 章 进程和线程
操作系统的存在归根结底是为了提供一个运行程序的空间。按照 Unix 的术语,将正在
运行的程序为进程。Linux 内核和其它 Unix 变种一样,都是采用了多任务技术;它可以在
许多进程之间分配时间片从而使这些进程看起来似乎在同时运行一样。这里通常是内核对有
关资源的访问作出仲裁;在这种情况下,资源就是 CPU 时间。
进程传统上都有唯一的执行程序的上下文——这是说明在某个时刻它正在处理一项内
容的流行的方法。在给定的时刻,我们可以精确地知道代码的哪一部分正在执行。但是有时
我们希望一个进程同时处理多件事情。例如,我们可能希望 Web 浏览器获取并显示 Web 页,
同时也要监视用户是否点击停止按钮。只为监视停止按钮而运行一个全新的程序显然是不必
要的,但是对于Web 浏览器来说要对其时间进行分隔也并不总是非常方便——获取一些Web
页信息,检测停止按钮,再获取一些 Web 页信息,再重新检测停止按钮,等等。
对于这个问题的比较流行的解决方法是线程。从概念上来说,线程是同一个进程中独立
的执行上下文——更简单一点地说,它们为单一进程提供了一种同时处理多件事情的方法,
就像是进程是一个自行控制的微缩化了的多任务操作系统。同一线程组中的线程共享它们的
全局变量并有相同的堆(heap ),因此使用malloc 给线程组中的一个线程分配的内存可以被
该线程组中的其它线程读写。但是它们拥有不同的堆栈(它们的局部变量是不共享的)并可
以同时在进程代码不同的地方运行。这样,你的 Web 浏览器可以让一个线程来获取并显示
Web 页,同时另外一个线程观测停止按钮是否被点击,并且在停止按钮被点击时停止第一
个线程。
和线程等价的一种观点——这是 Linux 内核使用的观点——线程只是偶然的共享相同
的全局内存空间的进程。这意味着内核无需为线程创建一种全新的机制,否则必然会和现在
已经编写完成的进程处理代码造成重复,而且有关进程的讨论绝大多数也都可以应用到线程
上。
当然,以上的说明仅仅适用于内核空间的线程。实际中也有用户空间的线程,它执行相
同的功能,但是却是在应用层实现的。用户空间的线程和内核空间的线程相比有很多优点,
也有很多缺点,但是有关这些问题的讨论超出了本书的范围。而使人更加容易造成混淆是一
个名为 kernel_thread (2426 行)的函数,尽管该函数被赋予了这样一个名字,但是它实际
和内核空间的线程没有任何关系。
部分是由于历史的原因,部分是由于 Linux 内核并没有真正区分进程和线程这两者在概
念上的不同,在内核代码中进程和线程都使用更通用的名字“任务”来引用。根据同样的思
路,本书中所出现的 “任务”和“进程”具有相同的意义。
调度和时间片
对 CPU 访问的裁决过程被称为调度(Scheduling)。良好的调度决策要尊重用户赋予的
优先级,这可以建立一种所有进程都在同时运行的十分逼真的假象。糟糕的调度决策会使操
作系统变得沉闷缓慢。这是 Linux 调度程序必须经过高度优化的一个原因。
从概念上来说,调度程序把时间分为小片断,并根据一定的原则把这些片断分配给进程。
你可能已经猜到,时间的这些小片断称为时间片。
- 81 -
第 7 章 进程和线程.doc
实时进程
Linux 提供了三种调度算法:一种传统的 Unix 调度程序和两个由 POSIX.1b (原名为
POSIX.4 )操作系统标准所规定的“实时”调度程序。因此,本书中有时会使用实时进程(从
技术上考虑,系统使用术语“非实时进程(nonrealtime process )”来作为实时进程的对应,
虽然我更倾向于使用另外一个术语 unrealtime process )。不要过分计较“实时”这个术语,
虽然——如果从硬件的角度来看待这个问题,实时意味着你可以得到有关操作系统的某种性
能保证,例如有关中断等待时间的承诺,但是这一点在 Linux 实时调度规则中并没有提供。
相反的,Linux 的调度规则是“软件实时”,也就是说如果实时进程需要,它们就只把 CPU
分配给实时进程;否则就把 CPU 时间让出给非实时进程。
但是如果你
您可能关注的文档
最近下载
- (高清版)DB42∕T 2382-2025 《社区居家养老服务机构安全应急规范》.docx VIP
- 消防基层指挥员如何做好初战控火指挥.pptx
- EN IEC 63118-1-2024 用于汽车启动、照明、点火(SLI)应用和辅助用途的12V 锂离⼦⼆次电池 第1部分:一般要求和测试方法中文版.pdf
- 《人工智能通识基础》全套教学课件.pptx
- AutomotiveSPICE_V4.0_中文版(最新版).pdf VIP
- 工程机械焊接结构图.ppt VIP
- 2025年宜昌当阳市招聘工会协理员考试笔试试题[含答案].pdf VIP
- 中职劳动教育教学课件专题四教学课件.pptx VIP
- 财务报表分析(第6版)全套PPT课件.pptx
- 双减课题小学数学作业分层设计的策略研究课题开题报告与结题报告.pdf VIP
文档评论(0)