我们可以根据上面的分析证明这个系统不止一个安全序列
这里我们要注意如果系统进程算法是可抢夺的,如果执行这条进程序列时有外部进程进来,系统会从插入的地方开始继续计算是否让这个进程插入序列。
此算法的优缺点
缺点最明显的就是顺序是固定的,我们前面研究了司机和售票员进程,售票员的进程是不可以在司机前的,所以如果是这个算法就有问题,其次就是运行前要用大量资源,以及进入系统的进程个数资源(进程序列)是规定好的,如果有新的进程进来,重新算又要耗费资源。
上面的算法模型是理论模型
佛系派
允许死锁发生,发生系统去解锁(系统去检测)。
死锁发生检测并解锁
用图例分析锁
第一个图p3执行完将资源归还给R4和R2,p2拿到p3归还的R2,p2执行完将资源归还给R1和R3,p1拿到p2归还给R1的资源,p1执行完归还R1和R3的资源,无环无锁。
第二个图p3得不到R3的资源无法归还R2,p2拿不到R2的资源无法归还R3,p1拿不到R1的资源无法归还R3,反之亦然,这里可以看出有环且有死锁。
第三个图大家自己分析一下
环
图例申请和分配简化
初步分析
p1无法消去,因为有一个申请边资源被占用
p2可以消去
p3和p1一样
p4可以消去
消去p4和p2的边可以得到,p1和p3也可以消去。
上面的各节点可以叫做孤立节点
死锁定理
学习完上面的这些理论,我们再对死锁的解决办法进行总结
讲了这么多我们如何解除死锁
如果我们不检测、解开死锁,会产生更多死锁,然后系统崩溃,需要重启
最后一句虽然这个方法并非可行方案,但是这个方法被广泛应用
死锁发生的概率是很少的