死锁的总结(2)

简介: 死锁的总结

我们可以根据上面的分析证明这个系统不止一个安全序列

这里我们要注意如果系统进程算法是可抢夺的,如果执行这条进程序列时有外部进程进来,系统会从插入的地方开始继续计算是否让这个进程插入序列。

此算法的优缺点

 

 

缺点最明显的就是顺序是固定的,我们前面研究了司机和售票员进程,售票员的进程是不可以在司机前的,所以如果是这个算法就有问题,其次就是运行前要用大量资源,以及进入系统的进程个数资源(进程序列)是规定好的,如果有新的进程进来,重新算又要耗费资源。

上面的算法模型是理论模型

佛系派

允许死锁发生,发生系统去解锁(系统去检测)。

 

死锁发生检测并解锁

用图例分析锁

第一个图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也可以消去。

 

上面的各节点可以叫做孤立节点

 

死锁定理

学习完上面的这些理论,我们再对死锁的解决办法进行总结

讲了这么多我们如何解除死锁

如果我们不检测、解开死锁,会产生更多死锁,然后系统崩溃,需要重启

最后一句虽然这个方法并非可行方案,但是这个方法被广泛应用

死锁发生的概率是很少的

 

相关文章
|
6月前
|
监控 算法 安全
|
3月前
死锁原因
死锁原因
36 1
|
6月前
|
安全 算法 程序员
|
6月前
|
SQL 存储 设计模式
如何与死锁斗争!!!
尽量不要改动线上数据库的字段,因为会触发锁表影响业务,严重时还可能出现死锁!数据库真的出现了死锁,业务全挂了,这种时候应该怎么办呢?本文就给大家分享一下数据库死锁的排查思路,万一出了问题,也有底气去解决。
61 1
|
6月前
|
安全 Java 测试技术
发生死锁怎么办
发生死锁怎么办
65 0
|
6月前
死锁的发生与避免
死锁的发生与避免 死锁是指两个或者多个进程在执行过程中,因争夺资源而造成的一种僵局,若无外力作用,它们都将无法推进下去。在计算机系统中,死锁是一种常见的问题,因此需要采取一些措施来避免死锁的发生。
|
算法 调度
死锁的理解
死锁的理解
81 0
|
安全 算法
初识死锁问题
关于对死锁的详解
|
程序员 Linux 芯片