操作系统死锁同步互斥CH6c5讲解.ppt

  1. 1、本文档共159页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
1.1 计算机系统 1.硬件 一台计算机由处理器(CPU)、内存储器和输入/输出三大部件组成,它们之间按一定的方式通过系统总线进行互联,从而实现执行程序、完成用户需求的各项任务。 1.1.1 硬件与软件 Max 最大 A B C 10 5 7 Allacation 已分 A B C 2 2 1 Need 尚需 A B C Work 工作区 A B C 1 1 1 Sort 执行 次序 Finish 完成 p0 7 5 4 0 1 0 2 3 1 7 4 4 5 2 3 F p1 3 2 2 2 0 0 1 2 2 5 2 2 2 T p2 9 0 2 3 0 2 6 0 0 F p3 2 2 2 2 1 1 0 1 1 3 2 2 1 T p4 4 3 3 0 0 2 4 3 1 F T1时刻找不到安全序列,在不安全状态,系统不分配 图6-19 一个导致安全状态的请求 图6-20 一个导致不安全状态的请求 银行家算法可以推广用于处理多种资源。此时,系统要为算法设置两张表,一张记录已分配给各进程的资源数,一张记录各进程还需要的资源数。 另外还要有3个向量:向量E记录各种资源的总数,向量P记录各种资源已分配数,向量A记录各种资源的剩余数。 图6-21 多种资源的银行家算法 多种资源银行家算法的执行步骤如下: (1)假定接受一个进程提出的资源请求,修改向量P和A。 (2)检查还需资源表中是否有一个进程的行向量小于或等于向量A。如果没有,那么系统就可能会死锁,因为现在任何进程都无法完成了。 (3)如果存在这种进程,那么假定它已获得需要的所有资源,并完成工作,把它的“能执行完”标志设置成1。收回它占用的资源,更新向量A。 (4)重复以上两步,直至再也找不到行向量小于或等于向量A的进程。 (5)检查所有进程的“能执行完”标志。如果它们的这个标志都是1,那么表示都能够顺利地执行完毕。 因此,真正进行资源分配,导致的新状态是安全的;如果仍存在“能执行完”标志为0的进程,则说明这一请求所导致的状态是不安全的,应该暂时拒绝这个请求。 图6-22 安全和不安全状态的对照 6.3.4 死锁的检测并恢复(解除) 死锁的检测分为单种资源和多种资源两种。只讨论单种资源的死锁检测。 图6-23 一个带有环路的资源分配图 可以通过画当前的资源分配图,来检测在某些进程间是否已经构成了死锁。 图6-24 一种死锁的检测方法 可以通过画当前的资源分配图,来检测在某些进程间是否已经构成了死锁。 补:5个资源3个进程的情况 资源 占用进程 R1 P1 R2 P3 R3 P2 R4 P2 R5 P1 进程 等待资源 P1 R3 P2 R2 P3 R5 死锁的解除 终止进程 终止所有进程 一次终止一个进程 抢夺资源 考虑三个问题: 抢夺哪些进程的资源 代价小 被抢夺者的恢复 进程的“饿死” 找来的晚的 死锁的解除 M个资源,n个进程 X:每个进程所需资源的最大量。X[1,m] X=max{x1,x2,x3,…,xn} 满足 N(x-1)+1=m 就不死锁。 1 当m=n 时 X= m-1 1+ n 当mn时 6.3.5 高级进程通信 用P、V操作实现的通信,称为进程间的一种低级通信。仅传递信号,不传递数据。 为了使进程之间能够真正交换数据,操作系统备有高级通信命令,提供给用户在程序一级使用。 高级通信 用户只要准备好参数,利用这些命令就能够在进程之间传递数据,无须去考虑同步、互斥这些让人头疼的问题。 信箱通信、消息缓冲通信、管道通信 消息缓冲通信 1.直接通信 直接通信的基本思想是消息发送者在自己的消息发送区里形成消息,然后申请一个消息缓冲区,把数据从消息发送区移入消息缓冲区中。 通过发送命令,把这个消息缓冲区直接发送到消息接收者的消息队列里。接收者从自己的消息队列上摘下消息缓冲区,把里面的数据读到自己的消息接收区里,然后释放缓冲区。 图6-25 进程间直接通信示意图 图6-26 Send和Receive的处理流程 通信原语 Send(B,M) 把信件 M 送到指定进程B。 Receive(A,Z) 把进程 A 的信件放到指定的地址 Z 中。 信箱通信 2.间接通信 间接通信是指通过信箱来传递消息,其基本思想

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档