进程的死锁

来源:互联网 发布:暴雪传输数据遇到问题 编辑:程序博客网 时间:2024/06/02 07:28
产生死锁的四个条件同时具备:互斥条件、不可抢占条件、占有且申请条件、循环等待条件
为什么会有死锁:若干进程竞争有限资源,又推进顺序不当,从而构成无限循环等待的局面,这种状态叫做死锁。所谓死锁是指多个进程循环等待它方占有的资源而无限期的僵持下去的局面。
死锁原因:
  1. 一种原因是系统提供的资源太少,远不能满足并发进程对资源的需求。
  2. 二是由于进程推进顺序不合适引起的死锁。
产生死锁的必要条件:(四个必须同时具备)
  • 互斥条件:某个资源在一段时间内只能由一个进程占有;
  • 不可抢占条件:进程所获得的资源在未使用完毕之前,资源申请者不能强行从资源占有者手中夺取资源,只能由该资源的占有者主动释放;
  • 占有且申请条件:进程至少已经占有一个资源却又申请新的资源;
  • 循环等待条件:存在一个进程等待序列,形成一个进程循环等待。

解决死锁的方法(静态策略):预防、避免、检测与恢复三种
  • 死锁的预防:保证系统不进入死锁的一种策略。他的基本思想是要求进程申请资源时遵循某种协议,从而打破死锁的的四个必要条件中的一个或几个,保证系统不会进入思索状态。

  • 死锁的避免(动态策略):在资源分配过程中若预测到有发生死锁的可能性,则加以避免。
  1. 安全序列。系统中的所有进程能够按照某一种次序分配资源,并且依次的运行完毕,这种序列叫做安全序列。
  2. 银行家算法。从当前状态出发,逐个按安全序列检查各客户谁能完成其工作,然后嘉定其完成工作且归还全部贷款,再进而检查下一个能完成工作的客户。

  • 死锁的检测与恢复(多在实际操作中使用)。系统设有专门的机构,当死锁发生时,该机构能够检测到死锁发生的位置和原因。并能通过外力破坏死锁发生的必要条件,让进程从思索状态恢复出来。

  • 死锁的恢复:
  1. 系统重启;
  2. 撤销进程,剥削资源;
0 0
原创粉丝点击