操作系统课件第三章2资料.pptVIP

  • 69
  • 0
  • 约1.03万字
  • 约 75页
  • 2017-06-11 发布于湖北
  • 举报
处理死锁的基本方法 方法 资源分配策略 各种可能模式 主要优点 主要缺点 预防 Prevention 保守的;宁可资源闲置(从机制上使死锁条件不成立,即摒弃三个必要条件) 一次请求所有资源条件2 适用于作突发式处理的进程;不必剥夺 效率低;进程初始化时间延长 剥夺次数过多;多次对资源重新起动 不便灵活申请新资源 资源剥夺 条件3 适用于状态可以保存和恢复的资源 资源按序申请条件4 避免 Avoidance 是“预防”和“检测”的折衷(在运行时判断是否可能死锁) 寻找可能的安全的运行顺序 不必进行剥夺 使用条件:必须知道将来的资源需求;进程可能会长时间阻塞 检测 Detection 宽松的;只要允许,就分配资源 定期检查死锁是否已经发生 不延长进程初始化时间;允许对死锁进行现场处理 通过剥夺解除死锁,造成损失 可以在编译时(而不必在运行时)就进行检查 Page * * 预防死锁的方法 预防死锁 系统安全状态 利用银行家算法避免死锁 Page * * 产生死锁的原因 进程推进顺序不当引起死锁 P 2 Rel(R 1 ) P 2 Rel(R 2 ) P 2 Req(R 1 ) P 2 Req(R 2 ) P 1 Req(R 1 ) P 1 Req(R 2 ) P 1 Rel(R 1 ) P 1 Rel(R 2 ) ① ② ③ ④ D Page * * 系统安全状态 安全状态 在避免死锁的方法中,允许进程动态地申请资源,但系统在进行资源分配之前,应先计算此次资源分配的安全性。若此次分配不会导致系统进入不安全状态,则将资源分配给进程; 否则,令进程等待 所谓安全状态,是指系统能按某种进程顺序(P1, P2, …,Pn)(称〈P1, P2, …, Pn〉序列为安全序列),来为每个进程Pi分配其所需资源,直至满足每个进程对资源的最大需求,使每个进程都可顺利地完成。如果系统无法找到这样一个安全序列,则称系统处于不安全状态 Page * * 2. 安全状态之例 我们通过一个例子来说明安全性。假定系统中有三个进程P1、 P2和P3,共有12台磁带机。进程P1总共要求10台磁带机,P2和P3分别要求4台和9台。假设在T0时刻,进程P1、P2和P3已分别获得5台、2台和2台磁带机,尚有3台空闲未分配,如下表所示: 2 9 P3 2 4 P2 3 5 10 P1 可 用 已 分 配 最 大 需 求 进 程 4 1 5 10 0 10 9 3 12 存在安全序列:P2-P1-P3,系统处于安全状态。 Page * * 3. 由安全状态向不安全状态的转换 如果不按照安全序列分配资源,则系统可能会由安全状态进入不安全状态。例如,在T0时刻以后,P3又请求1台磁带机, 若此时系统把剩余3台中的1台分配给P3,则系统便进入不安全状态。 进 程 最 大 需 求 已 分 配 可 用 P1 10 5 3 P2 4 2 P3 9 2 3 2 4 0 4 不安全状态 Page * * 预防死锁的方法 预防死锁 系统安全状态 利用银行家算法避免死锁 Page * * 3.6.3 利用银行家算法避免死锁 1. 银行家算法中的数据结构 (1) 可利用资源向量Available。这是一个含有m个元素的数组,其中的每一个元素代表一类可利用的资源数目,其初始值是系统中所配置的该类全部可用资源的数目,其数值随该类资源的分配和回收而动态地改变。如果Available[j] = K,则表示系统中现有Rj类资源K个。 Page * * (2) 最大需求矩阵Max。这是一个n×m的矩阵,它定义了系统中n个进程中的每一个进程对m类资源的最大需求。如果Max[i,j] = K,则表示进程i需要Rj类资源的最大数目为K。 (3) 分配矩阵Allocation。这也是一个n×m的矩阵,它定义了系统中每一类资源当前已分配给每一进程的资源数。如果Allocation[i,j]=K,表示进程i当前已分得Rj类资源的数目为K。 (4) 需求矩阵Need。这也是一个n×m的矩阵,用以表示每一个进程尚需的各类资源数。如果Need[i,j] = K,则表示进程i还需要Rj类资源K个,方能完成其任务。 Need[i,j] = Max[i,j] – Allocation[i,j] Page * * 2. 银行家算法 设Requesti是进程Pi的请求向量,如果Requesti[j] = K,表示进程Pi需要K个Rj类型的资源。当Pi发出资源请求后,系统按下述步骤进行检查:

文档评论(0)

1亿VIP精品文档

相关文档