谈谈我的理解的进程死锁,利用车道类比方便记忆。

利用车道作类比,假设车道都上的车辆速度相同,同一车道(资源)只能被一辆车(进程)占用来更好的理解进程死锁。
死锁形成要满足四个必要条件。
1.资源的互斥性。即在同一时刻资源只可以被一个进程所访问。
那么类比到车道是就是假设有一个三车道的道路,最左侧和最右侧车道都想变道到中间车道,但是中间车道一个时刻只能被其中一辆车访问(假设速度相同,一个车道一辆车)
2.资源的不可剥夺条件。资源在被其中一个进程占有时,不可以被其他的进程剥夺其已经占有的资源。
类比到车道上就是我已经占有了其中一个车道,其他车辆不可以无端冲撞抢占我已经占有的车道。(假设速度相同,一个车道一辆车)
3.请求与保持状态。 一个进程因请求资源而阻塞时,对已获得的资源保持不放。
类比到车道上就是我已经获得了最左侧车道行使权时,我想要占用中间车道,但是我变道失败时,我要持续占用我现在所处的车道。
4.循环等待条件。循环等待是若干进程之间形成一种头尾相接的循环等待资源关系。
类比到车道上的话不能形象完成循环条件,即我第一车道的想去第二车道,第二车道想去第三车道,第三车道想去第四,第四想去第一,如此循环,造成了死锁。

如何避免死锁
避免死锁只需要破坏其中一个必要条件即可,因为死锁的成立必须四个条件都满足,所以我们从这四个满足条件入手。
1.破坏互斥条件:spooling技术

将独占设备改造为共享设备。因为在SPOOLing系统的系统中,实际上并没为任何进程分配设备,而知识在输入井或输出井中为进程分配一个存储区和建立一张I/O请求表。这样,便把独占设备改造为共享设备。

夸张一点来理解的话,就是我一个车道同时开两辆车并驾齐驱。当然这不存在。

2.破坏请求与保持条件:一次性申请所有的资源。
夸张一点来理解的话,就是我一次性要申请所有我要开的车道,不准你们其他人开。

3.破坏不剥夺条件:占用部分资源的进程进一步申请其他资源而不得时主动释放已经占有的资源。
夸张来说,就是我申请不到我要变道的车道,我自己的车道也不开了。

4.破坏循环等待条件:靠按序申请资源来预防。按某一顺序申请资源,释放资源则反序释放。
夸张来说,我给了每个车道调控变道顺序,我先怎么变,他怎么变,像一个交警,控制了顺序,释放时反序即可

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值