操作系统方案与实现二.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
操作系统方案与实现二

第二章 进 程 我们现在开始深入地研究操作系统(特别是MINIX)是如何设计和构造的。 操作系统中最核心的概念是进程:一个对正在运行的程序的抽象。操作系统的其他所有内容都围饶着进程,所以操作系统的设计者(及学生)尽可能早地理解进程是很重要的。 2.1 进程介绍 所有现代的计算机都能同时做几件事情。当一个用户程序正在运行时,计算机还能够同时读盘,并向屏幕或打印机输出正文。 在一个多道程序系统中,CPU由这道程序向那道程序切换,使每道程序运行几十或几百毫秒。 然而严格地说,在一个瞬间,CPU只能运行一道程序。在1秒钟期间,它可能运行多道程序,这样就给用户一种并行的错觉。有时人们所说的伪并行就是指CPU在多道程序之间快速地切换,以此来区分它与多处理机(两个或更多的CPU共享物理存储器)系统真正的硬件并行。人们很难对多个并行的活动进行跟踪。因此,经过多年的努力,操作系统的设计者发展了一种模型(顺序进程),使得并行更容易处理。该模型及其使用正是本章的主题。 2.1.1 进程模型 在该模型中,计算机上所有可运行的软件,通常包括操作系统,被组织成若干顺序进程,简称进程(processes)。一个进程就是一个正在执行的程序,包括程序计数器、寄存器和变量的当前值。从概念上说,每个进程拥有它自己的虚拟CPU。 当然,实际上真正的CPU在各进程之间来回切换。但为了理解这种系统,考虑在(伪)并行情况下运行的进程集,要比我们试图跟踪CPU如何在程序间来回切换简单得多。这种快速的切换称作多道程序,正如在上一章所看到的。 在图2-1(a)中,我们看到在一个多道程序计算机的内存中有四道程序。在图2-1(b)中,我们看到四个进程各自拥有自己的控制流程(即自己的程序计数器),并且每个都独立地运行。在图2-1(C)中,我们看到在观察一段足够长的时间后,所有的进程都有所进展。但在一个给定的瞬间仅有一个进程真正在运行。 图2-1 (a)多道程序中的四道程序。 (b)四个独立、顺序进程的概念模型。 (c)在任意时刻仅有一个程序活跃。 由于CPU在各进程之间来回切换,每个进程执行运算的速度是不确定的,而且当同一进程再次运行其运算速度通常也不可再现。所以,进程的编程绝不能对时序作任何固定的假设。例如考虑一个I/O进程用流式磁带机恢复被备份的文件,它执行一个10000次的空循环以等待磁带机达到正常速度,然后发出命令读取第一个记录。如果CPU决定在空循环期间将处理机调度给其他进程,则磁带机进程可能在第一条记录通过磁头之后还未被再次调度。 当一个进程具有此类严格的实时要求时,也就是一些特定事件一定要在所指定的若干毫秒中发生,那么必须采取特殊措施来保证它们一定在这段时间中发生。然而,通常大多数进程并不受CPU多道程序或其他进程相对速度的影响。 进程和程序之间的区别是很微妙的,但却非常重要。一个类比可以使我们更容易理解这一点。想象一位有一手好厨艺的计算机科学家正在为他的女儿烘制生日蛋糕。他有做生日蛋糕的食谱,厨房里有所需的原料:面粉、鸡蛋、糖、香草汁等等。在这个比喻中,做蛋糕的食谱就是程序(即用适当形式描述的算法),计算机科学家就是处理机(CPU),而做蛋糕的各种原料就是输入数据。进程就是厨师阅读食谱、取来各种原料、以及烘制蛋糕的一系列动作的总和。 现在假设计算机科学家的儿子哭着跑了进来,说他被一只蜜蜂螫了。计算机科学家就记录下他照着食谱做到哪儿了(保存进程的当前状态),然后拿出一本急救手册,按照其中的指示处理螫伤。这里,我们看到处理机从一个进程(做蛋糕)切换到另一个高优先级的进程(实施医疗救治),每个(进程)拥有各自的程序(食谱和急救书)。当蜜蜂螫伤处理完之后,计算机科学家又回来做蛋糕,从他离开时的那一步继续做下去。 这里的关键思想是:一个进程是某种类型的一个活动,它有程序、输入、输出、及状态。单个处理机被若干进程共享,它使用某种调度算法决定何时停止一个进程的工作,并转而为另一个进程提供服务。 进程的层次结构 支持进程概念的操作系统必须提供某种途径来创建所需要的进程。在一些非常简单的系统,或那种设计为仅有一个应用运行的系统(例如,实时地控制一个设备)中,可能在系统启动时,以后所需要的所有进程都已存在。然而在多数系统中,需要有某种方法以便按需创建或撤销进程。在MINIX系统中,进程通过调用FORK系统调用来创建进程,它将创建一个与调用进程相同的进程。子进程同样也能执行FORK,所以有可能形成一棵完整的进程树。在其他操作系统中,也具有若干系统调用,用来创建一个进程、装入它的内存、并使其开始运行。不管系统调用的具体形式如何,系统

文档评论(0)

phltaotao + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档