操作系统原理与实践教程04.ppt

  1. 1、本文档共99页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
§4.8 死锁的检测和解除 4.8.1 死锁的检测 资源分配图可以形象直观地描述出进程的死锁状态,因此,可以利用资源分配图化简的方法来检测系统处于某一时刻的状态是否是死锁状态。资源分配图的化简方法如下: (1)在资源分配图中,找出一个既不阻塞又非独立的进程结点Pi.在顺利的情况下,Pi可获得所需资源而继续运行,直至运行完毕,再释放其所占用的全部资源,这相当于消去Pi所有的请求边和分配边,使其成为孤立结点。 (2)再把相应的资源分配给一个等待该资源的进程,即将某进程的申请边变为分配边。 (3)在进行了一系列的简化后,若能消去图中所有的边,使所有进程结点都成为孤立结点,则称该图是可完全简化的;若不能通过任何过程使该图完全简化,则称该图是不可完全简化的。 * §4.8 死锁的检测和解除 对于较复杂的资源分配图,可能有多个既未阻塞,又非孤立的进程结点,有关文献已经证明,所有的简化顺序,都将得到相同的不可化简图。同样可以证明:S状态为死锁状态的充分条件是当且仅当S状态的资源分配图是不可完全简化的。该充分条件被称为死锁定理。 * §4.8 死锁的检测和解除 4.8.2 死锁的解除 通过抢占资源实现恢复和通过杀掉进程解除死锁。 1.通过抢占资源实现恢复 即临时性地把资源从当前占有它的进程那里拿过来,分给另外某些进程,直至死锁环路被打破。 2.通过杀掉进程实现恢复 终止所有的死锁进程。 一次终止一个进程,直至消除死锁环路。 * 策略 死锁预防 死锁避免 死锁检测和恢复 很保守;对资源不做调配使用 介于预防和检测方法之间,安全状态下才分配 非常开放;申请资源就分配,但定期检测死锁 采用的不同方式 一次性分配所有资源 抢占式分配资源 资源编号,按序分配 至少应找出一个安全序列 定期调用检测算法,查看是否出现死锁 主要优点 ·适用于执行单一突发活动的进程 ·不需要抢占 ·适用于资源状态便于保存和恢复的情况 ·由于系统设计时已解决问题,不需要运行时计算 不需要抢占 ·从来不延误进程的开始执行 ·便于联机处理 主要缺点 ·效率低 ·延误进程的开始执行 ·抢占动作比实际需要的次数更多·易出现环路重启 ·不允许增加对资源的申请 ·必须知道以后对资源的申请情况 ·进程可能被阻塞很长时期 丧失固有的抢占性 * 重点概念和内容提示 进程同步和互斥的概念、临界资源和临界区 临界区使用原则 信号量的定义及物理含义 利用信号量解决进程同步和互斥问题 死锁的概念、产生的原因和必要条件 解决死锁问题的方法:死锁的预防、避免及死锁的检测和解除 Thank You Very Much! * §4.5 进程通信 4.5.3 消息缓冲队列通信 1.消息缓冲队列通信机制 在操作系统空间设置一组缓冲区。 当发送进程需要发送消息时,执行send系统调用,产生访管中断,进入操作系统。 操作系统为发送进程分配一个空缓冲区,并将所发送的消息从发送进程copy到缓冲区中,然后将该载有消息的缓冲区连接到接收进程的消息链链尾,如此就完成了发送过程。 * §4.5 进程通信 发送进程返回到用户态继续执行。 在以后某个时刻,当接收进程执行到receive接收原语时,也产生访管中断进入操作系统。 由操作系统将载有消息的缓冲区从消息链中取出,并把消息内容copy到接收进程空间,之后收回缓冲区,如此就完成了消息的接收,接收进程返回到用户态继续进行。 * §4.5 进程通信 为了实现消息缓冲队列通信,需要设置相关的数据结构,其中主要利用的数据结构是消息缓冲区。它可描述如下: type messageBuffer=record sender ; // 发送消息的进程名或标识符 size ; // 发送的消息长度 text ; // 发送的消息正文 next ; // 指向下一个消息缓冲区的指针 end 除此之外,在设置消息缓冲区队列的同时,还应增加用于对消息队列进行操作和实现同步的信号量,并将它们置入进程的PCB中。在进程的PCB中涉及通信的数据结构有: ?????mptr:消息队列队首指针 ???? mutex:消息队列互斥信号量, 初值为1 ?????sm:表示接收进程消息队列上消息的个数,初值为0,是控制收发进程同步的信号量 * §4.5 进程通信 接收进程名:Q 信件长:5c 正文: ABCDE Send(发送区首址) 发送区 消息队列首指针 mutex sm 发送进程名:P 信件长:5 正文:ABCDE 后继信件 缓冲指针 0 进程Q的PCB 发送进程名:P 信件长:5 正文: ABCDE

文档评论(0)

精品报告 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档