预防死锁的三种方法 什么是死锁?预防死锁的方法有哪些?

在系统中已经出现死锁后 , 应该及时检测到死锁的发生 , 并采取适当的措施来解除死锁目前处理死锁的方法可归结为以下四种1 预防死锁这是一种较简单和直观的事先预防的方法方法是通过设置某些限制条件 , 去破坏产生死锁的 。

预防死锁的三种方法 什么是死锁?预防死锁的方法有哪些?

文章插图
产生死锁的必要条件是1互斥条件2不可剥夺条件不可抢占3部分分配4循环等待根据产生死锁的四个必要条件 , 只要使其中之一不能成立 , 死锁就不会出现为此 , 可以采取下列三种预防措施#1601采用资源 。
但是这种死锁预防的方法代价高昂另一 类资源的数量有限和互斥使用是资源的固有特性 , 例如系统中的共享写数据 , 各种信号量 等 , 这些资源不能通过增加资源数量来解决 , 所以这种情况下通过破坏互斥条件来预防死锁不现实二资源 。
预防死锁的三种方法 什么是死锁?预防死锁的方法有哪些?

文章插图
采用剥夺式控制方法可以破坏该条件 , 该方法是使一个已保持了某些资源的进程 , 由于新的资源要求目前得不到满足 , 它必须先暂时释放巳保持的所有资源一种剥夺式 , 然后去等待 , 以后再一起向系统提出巾请 , 这样也能防止死锁这 。
按照顺序加锁是一种有效的死锁预防机制但是 , 这种方式需要你事先知道所有可能会用到的锁译者注并对这些锁做适当的排序 , 但总有些时候是无法预知的加锁时限 另外一个可以避免死锁的方法是在尝试获取锁的时候加一个 。
【预防死锁的三种方法 什么是死锁?预防死锁的方法有哪些?】4解除死锁这是与检测死锁相配套的一种措施当检测到系统中已经发生死锁时 , 将进程从死锁状态中解脱出来常用的方法是撤销或挂起一些进程 , 以便回收一些资源 , 再将这些 资源分配 给已经处于 阻塞状态 的进程 , 使之转为 。