【计算机操作系统】死锁产生的必要条件是什么?死锁的解决策略是什么?
发布日期:2021-06-29 15:36:30
浏览次数:2
分类:技术文章
本文共 655 字,大约阅读时间需要 2 分钟。
1.死锁产生的必要条件是什么?
死锁是两个或两个以上的进程(或线程)在执行过程中,互相占用对方所需的资源,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去;
互斥: 每个资源要么已经分配给了一个进程,要么就是可用的;
占有和等待: 已经等到某个资源的进程可用再请求新的资源;
不可抢夺: 已经分配给一个进程的资源不能强制性的被抢夺,它只能被占有它的线程显式地释放;
环路等待: 有两个或者两个以上的进程组成一条环路,该环路中的每个进程都在等待下一个进程所占有的资源;
2.死锁的解决策略
鸵鸟不做处理;
死锁检测与恢复;
死锁预防;
死锁避免;
主要有以下四种办法:
- 鸵鸟策略
把头埋在沙子里面,假装根本没发生问题。当发生死锁时不会对用户造成很大的影响或发生死锁的概率很低时,可以采用鸵鸟策略;
- 死锁检测与死锁恢复;
不试图阻止死锁,而是当检测到死锁时,采取措施进行恢复;
死锁的检测是通过检测有向图是否存在环来实现的。从一个结点出发进行深度优先搜索,对已访问过的结点进行标记,如果访问了已标记的结点,就表示有向图存在环,也就是检测到死锁的发生。
死锁的恢复:通过杀死线程恢复;通过回滚恢复;通过抢占恢复;
- 死锁预防;
针对死锁的产生条件:
破坏互斥条件: 例如打印机唯一真正请求物理打印机的进程是打印机守护进程;
破坏占有和等待条件: 规定进程在开始执行前请求所需要的全部资源;
破坏不可抢夺条件
破坏环路等待: 给资源统一编号,进程只能按照编号顺序来请求资源;
死锁避免:安全状态。
转载地址:https://codingchaozhang.blog.csdn.net/article/details/116722262 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
网站不错 人气很旺了 加油
[***.192.178.218]2024年04月06日 10时29分38秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
J-Link该如何升级固件?
2019-04-29
485通信自动收发电路,历史上最详细的解释
2019-04-29
一位头发发白的神人教你怎么写程序,运维,买电脑,写文章,平面设计!
2019-04-29
「第三篇」全国电子设计竞赛,这些你必须知道的比赛细节,文末附上近十年电赛题目下载...
2019-04-29
5G小科普(漫画版,So easy!)
2019-04-29
「第四篇」电赛控制题可以准备一些什么?
2019-04-29
「第六篇」对于电赛,我们应该看重什么?
2019-04-29
树莓派翻车了
2019-04-29
这位电子工程师,你不能错过。
2019-04-29
「重磅猜题之第二篇」2019年大学生电子设计竞赛
2019-04-29
干货分享 JVM 之第 3 篇 —— Java 内存结构相关
2019-04-29
基于 Hystrix 高并发服务限流第 2 篇 —— 服务隔离(线程池隔离、信号量隔离)
2019-04-29
SpringBoot 整合 JWT 实现统一认证
2019-04-29
TypeError: this.getOptions is not a function
2019-04-29
el-table 二维数组合并行
2019-04-29
UR5e机械臂运行一直阻塞在waitForServer
2019-04-29
ROS把pkg1下的某个头文件和源文件生成动态链接库供pkg2调用
2019-04-29
使用urdf_tutorial快速可视化urdf文件
2019-04-29
SQl 数据完整性(随堂博客)
2019-04-29