OS- -死锁(二) 文章目录 OS- -死锁(二) 一、死锁 1.死锁避免 单个资源的银行家算法 2.破坏死锁 破坏互斥条件 破坏保持等待的条件 破坏不可抢占条件 破坏循环等待条件 3.其他问题 两阶段加锁 通信死锁 活锁 饥饿 4.总结 一、死锁 1.死锁避免 单个资源的银行家算法 银行家算法是Dijkstra在1965年提出的一种调度算法,它本身是一种死锁的调度算法。 它的模型是基 于一个城镇中的银行家,银行家向城镇中的客户承诺了一定数量的贷款额度。 算法要做的就是判断请求 是否会进入一种不安全的状态。 如果是,就拒绝请求,如果请求后系统是安全的,就接受该请求。 比如下面的例子,银行家一共为所有城镇居民提供了 15单位个贷款额度,一个单位表示1k美元,如 下所示: 城镇居民都喜欢做生意,所以就会涉及到贷款,每个人能贷款的最大额度不一样,在某一时刻, A/B/C/D的贷款金额如下: