- 1、本文档共29页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第 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 时间让出给非实时进程。
但是如果你
您可能关注的文档
- 第一章总论仲裁裁决.pdf
- 荣威750S1.8TMT迅雅版汽车参考资料指导书.pdf
- 网站常用标签.doc
- 一个宝宝是如何产生,母亲十月怀胎全过程.pdf
- 网站发布过程疑问探讨.pdf
- 一个北方农村妇女给孩子做零食,城里人有钱也吃不到.pdf
- 典礼演讲Ihopeyouwillbetreatedunfairly.docx
- 教学提示中南民族大学.pdf
- 枚红色单肩时尚长款新娘礼服.docx
- 一个不受雾霾侵害地方!(姑婆山).pdf
- 金融产品2024年投资策略报告:积极适应市场风格,行为金融+机器学习新发现.pdf
- 交运物流2024年度投资策略:转型十字路,峰回路又转(2023120317).pdf
- 建材行业2024年投资策略报告:板块持续磨底,重点关注需求侧复苏.pdf
- 宏观2024年投资策略报告:复苏之路.pdf
- 光储氢2024年投资策略报告:复苏在春季,需求的非线性增长曙光初现.pdf
- 公用环保2024年投资策略报告:电改持续推进,火电盈利稳定性有望进一步提升.pdf
- 房地产2024年投资策略报告:聚焦三大工程,静待需求修复.pdf
- 保险2024年投资策略报告:资产负债匹配穿越利率周期.pdf
- 政策研究2024年宏观政策与经济形势展望:共识与分歧.pdf
- 有色金属行业2024年投资策略报告:新旧需求共振&工业原料受限,构筑有色大海星辰.pdf
最近下载
- 结题报告高中物理小课题.PPT
- NB∕T 32037-2017 光伏发电建设项目文件归档与档案整理规范.pdf VIP
- 2024《高考志愿填报咨询服务意愿的影响因素实证研究》16000字.docx
- 无线网络优化模考试题(附答案).docx
- 中图版高中地理必修第二册课后习题 第四章 国土开发与保护 第一节 京津冀协同发展的地理背景 (2).doc VIP
- 工厂消防安全设备检查记录表.docx VIP
- 海绵城市监理实施细则.doc VIP
- 人教版小学二年级数学下册期中试卷.doc VIP
- 巴黎奥运樊振东乒乓球故事介绍【优质公开课】精品PPT课件模板.pptx
- 丽声北极星分级绘本第一级上 A Day with Monster Toon课件 .pptx VIP
文档评论(0)