操作系统教程 教学课件 作者 柯丽芳 第5章 1.pptVIP

操作系统教程 教学课件 作者 柯丽芳 第5章 1.ppt

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第5章 并发进程及死锁 第5章 主要教学内容 5.1并发进程之间的制约关系 5.2用信号量机制实现进程的同步与互斥 5.3进程通信 5.4死锁 5.1并发进程之间的制约关系 在多道系统环境中,由于资源共享与进程合作,使得并发执行的进程之间可能产生相互制约关系,这些制约关系可分为两类:竞争与协作。 并发进程之间的竞争关系体现为进程互斥,并发进程之间的协作关系体现为进程同步。 5.1.1并发进程之间的同步关系 进程同步是完成同一任务的伙伴进程间因需要在某些位置上协调它们的工作或相互交换信息所产生的进程之间的直接制约关系。 1.什么是进程同步 进程同步指两个以上进程基于某个条件来协调它们的活动。一个进程的执行依赖于协作进程的消息或信号,当一个进程没有得到来自于协作进程的消息或信号时需等待,直到消息或信号到达才被唤醒。 2.同步关系分类 同步关系一般分为两类: 一类是一组合作进程在逻辑上所要求的执行顺序而引起的同步,即多个进程的并发过程中,在某些点上有着某种时序上的先后关系。 另一类是共享缓冲区的合作进程而引起的同步; 例5-2:假定进程A专门负责启动卡片输入机,每读入一张卡片后,将卡片数据送到缓冲区;进程B则专门负责将缓冲区的卡片数据输出到磁盘存储,如果有一叠卡片需要进程A、B合作进行处理,显然,进程A和进程B之间必须保持同步操作才能正确地完成任务。如图5.2所示。 5.1.2并发进程之间的互斥关系 1.什么是进程互斥 进程互斥是指若干进程都要使用同一个临界资源时,任何时刻最多允许一个进程使用,其它要使用该资源的进程必须等待,直到占有资源的进程释放该资源。 2.临界资源和临界区 (1)临界资源(Critical Resource): 把一次只允许一个进程使用的资源称为临界资源。 如独占性硬件资源卡片输入机、打印机等;若干个并发进程共享的变量、表格、队列、栈、文件等软件资源也是临界资源。 (2)临界区(Critical section) 把每个进程中访问临界资源的那段程序代码称从概念上分离出来,将其称为临界区。 即临界区是指对临界资源实施操作的程序代码段。 (3)相关临界区 相关临界区是指并发进程中涉及相同临界资源的临界区。 显然,相关临界区必须互斥执行。 例5-3:进程间争夺资源R而导致一方使用结束后另一方才可使用。 例5-4内存管理问题(永远等待) procedure borrow (var B:integer) begin if Bx then {申请进程进入等待队列等主存资源} x:=x-B; {修改主存分配表,申请进程获得主存资源} end; procedure return (var B:integer) begin x:=x+B; {修改主存分配表} {释放等主存资源的进程} end; 小结: 资源竞争的两个控制问题: 一个是死锁(Deadlock)问题, 一个是饥饿(Starvation) 问题,既要解决饥饿问题,又要解决死锁问题。 系统中并发进程的工作正确与否不仅取决于它的程序编制的正确性,而且与它在执行过程中能否与其它相关进程实施正确的同步和互斥有关。 3.对相关临界区管理的原则 (1)对于临界区的协调的准则是: ①当有若干个进程同时要求进入临界区时,应在有限时间内使一个进程进入; ②每次最多有一个进程出处于相关临界区内; ③进程在临界区内应逗留有限时间。 (2)遵循以上准则, 得到临界区的调度原则是: ①当无进程处于临界区内时,允许一个进程立即进入; ②已有进程在临界区时,其它试图进入临界区的进程必须等待; ③当一个进程离开临界区时,若还有等待者进程,则允许其中一个等待者进入临界区。 4.实现临界区互斥的锁操作法 通过对相关临界区进行加锁和开锁是一种最简单的实现进程互斥的机制。 用一个锁变量W来代表某种临界资源的状态:W=0表示资源空闲可用;W=1表示资源正被使用。 对临界区使用之前应测试W值,若W=1表示资源已被占用,返回重新测试;若W=0则表示资源可用。 在使用临界资源之前为了防止别的进程进入,设置W=1(关锁);若临界资源使用完后退出临界区时,设置W=0(开锁),这样别的进程就可以使用该临界资源了。 (1)加锁和开锁原语 加锁原语lock(W)可描述为: L:if W=1 then go to L else W=1; 开锁原语unlock(W) 可描述为: W=0 (2)用加锁和开锁原语 解决进程互斥的模型 设n个进程P1,P2, …,Pn的相关临界区分别为CS1,CS2,…,CSn,只要在每个进程的临界区两端

您可能关注的文档

文档评论(0)

开心农场 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档