操作系统的原理与应用-孔宪君-第2章 进程管理2.pptVIP

操作系统的原理与应用-孔宪君-第2章 进程管理2.ppt

  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文档。上传文档
查看更多
操作系统原理 Principles of Operating System 主讲:孔宪君 2.4 进程的同步机构 2.4.1 进程与资源 ⒈资源的概念 资源是计算机系统的基本结构元素。 资源可以分为软件资源和硬件资源,程序和数据属于软件资源;CPU、内存、外设则属于硬件资源。 在操作系统中一般把资源分为临界资源和共享资源, 所谓的临界资源是指在一段时间内仅允许一个进程使用资源。如打印机、输入机、磁带机、信号量和指针等,临界资源可以互斥共享; 所谓的共享资源是指允许多个进程同时访问的资源。如处理机、内存和硬盘等。 ⒉进程制约关系 ①间接相互制约。这种制约主要源于资源共享,这是不相关的进程,由于共享同一资源而引起的,即共享某类资源的进程之间由操作系统协调与控制使用该资源的次序而产生相互制约。这种制约是进程—资源—进程之间存在的约束,故称为间接制约。例如,有两个进程A和B,如果在进程A提出打印请求时,系统已将打印机分配给进程B,此时进程A阻塞。当进程B将打印机释放,进程A被唤醒,获得打印机,由阻塞状态转为就绪状态。 ②直接相互制约。这是相关进程之间为完成同一任务,进程某些操作之间在次序上存在制约关系。如果协作进程的某个操作没有完成,那么进程就会在工作到某些点上等待这个动作的完成,之后才能继续执行下去。我们称这些并发执行的进程间存在着制约关系。这种制约是进程—进程之间因共同目的而存在的直接约束,故称为直接制约。例如,输入进程A通过单缓冲向计算进程B提供数据。当缓冲区空时,计算进程B因不能获得所需数据而阻塞,当进程A把数据送入缓冲时,便唤醒进程B;反之,当缓冲区满时,进程A因不能再向缓冲中投放数据而阻塞,当进程B将缓冲内数据取走时,便唤醒进程A。 ⒊进程与资源的关系 从这样一个简单系统的管理中我们得出一个结论:操作系统的任务是控制与管理进程和资源,必须提供一些机制来协调进程与进程之间、进程与资源之间的复杂关系。 4.临界区设计原则 我们对每个进程访问临界资源的那段程序从概念上分离出来,称之为临界区。 临界区设计原则如下: ①进入区(entry section)。申请临界资源,为了进入临界区使用临界资源,在进入区要检查可否进入临界区,如果可以进入临界区,通常设置相应的“正在访问临界区”标志,以阻止其他进程同时进入临界区。 ②访问区(critical section)。进程中访问临界资源的一段代码。 ③退出区(exit section)。将“正在访问临界区”的标志清除,释放临界资源。 2.4.2 进程同步机构 ⒈进程同步与互斥的概念 在系统中有一些需要相互合作、协同工作的进程,这些进程的某些操作存在某种次序上的制约关系,这种制约关系称为进程的同步。 多个相关进程在访问临界资源在操作时间上相互排斥。这种相互排斥关系叫做进程的互斥。 各个进程互斥使用临界资源,互斥的实质是互斥共享临界资源,也可以认为互斥是同步的一种特殊形式。 ⒉同步机构应遵循的准则 ⑴空闲让进。当无进程处于临界区时,允许一个申请进入临界区的进程进入临界区。 ⑵忙则等待。当一个进程进入临界区时,其他申请进入临界区的进程必须等待。 ⑶有限等待。进程在临界区内仅停留有限的时间,对要求进入临界区的进程,应能在有限的时间内进入临界区。 ⑷让权等待。处于等待状态的进程应放弃占用CPU,以使其他进程有机会得到CPU的使用权。 ⒊上锁原语与开锁原语 实现的方法:设置锁变量w,w=1表示上锁,w=0表示开锁。 上锁原语 void lock(w){ while(w==1); w=1; } 开锁原语 void unlock(w){ w=0; } 请读者思考上锁原语与开锁原语是否符合同步机构应遵循的准则? ⒋信号量与P、V操作 信号量的值仅能由P操作、V操作改变的结构体变量。信号量的值大于等于零时代表一类可用资源个数,其值小于零时其绝对值代表被阻塞进程的个数。 信号量的描述如下: struct semaphore{ int value; queue *WQ[r]; }; wait操作描述和定义如下: semaphore s void wait(s){ --s.value; if (s.value0) block(s. WQ[r]);/*阻塞该进程*/ } V操作描述和定义如下: semaphore s void signal(s){ s.value++; if (s.value=0) wakeup(s. WQ[r]);/*唤醒阻塞队列的对首进程*/ } 2.5 经典进程同步问题 2.5.1进程互斥

文档评论(0)

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

文档有任何问题,请私信留言,会第一时间解决。

版权声明书
用户编号:7043023136000000

1亿VIP精品文档

相关文档