[面试]进程死锁

进程死锁

死锁的定义:死锁就是一个进程集合中的多个进程因为竞争资源,而造成的互相等待现象。如:A和B吃饺子,A拿着酱油,B拿着醋,A想要醋,B想要酱油,结果二者死等吃不上饺子。

死锁的原因:系统资源不足;多个进程的推进顺序不合理;资源分配不当

死锁的必要条件

(1)互斥条件(Mutual exclusion):资源不能被共享,只能由一个进程使用。

(2)请求与保持条件(Holdand wait):已经得到资源的进程可以再次申请新的资源。

(3)非剥夺条件(Nopre-emption):已经分配的资源不能从相应的进程中被强制地剥夺。

(4)循环等待条件(Circular wait):系统中若干进程组成环路,改环路中每个进程都在等待相邻进程正占用的资源。

处理死锁的方法有四种:1) 预防死锁    2) 避免死锁    3)检测和解除死锁

预防死锁:破坏四个必要条件之一即可

破坏互斥条件:让资源允许共享,如SPOOLing技术就可以允许若干个进程同时产生打印数据,

缺点: SPOOLing的技术并不适用于所有的资源,如进程表等,所以破坏资源的互斥性是比较困难的,该方法并不是很好

破坏请求和保持条件:资源一次性分配。

缺点:采取这种机制,那么进程在执行过程中就不再申请资源了,但这种方法的效率极低,资源无法得到充分的利用。

③破坏不可剥夺条件:有两种方法,一种是当其申请的资源得不到满足时,也必须放弃其原先占有的资源;另一种方法是只适用于申请资源的进程优先级比占有该资源的进程优先级高时,如果一个进程申请的资源被其它进程占用,而申请进程的优先级较高,那么它可以强迫占有资源的进程放弃。这种方法一般适用于处理机和存储资源。

④破坏循环等待条件:系统给每类资源赋予一个编号,每一个进程按编号递增的顺序请求资源,释放则相反(如:哲学家进餐问题

避免死锁的方法有两种:1) 资源按序分配   2) 银行家算法

解除死锁的方法有两种:1) 资源剥夺法   2) 撤消进程法    3)进程回退法

 

死锁定理:S为死锁的条件是当且仅当S状态的资源分配图是不可完全简化的,该条件为死锁定理。(即:资源分配图不可完全简化

如下是资源分配图的化简过程。


进程p1已经分得了2个R1资源,并又请求一个R2资源;进程p2分得了一个R1资源和一个R2资源,并又请求了一个R1资源。===>先满足p1,获得一个R2,完成后释放自己占有的2个R1资源和一个R2资源。===>p2请求一个R1资源,完成后释放自己占有的2个R1资源和一个R2资源。最后资源分配图完全简化了,说明此过程没有发生死锁。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值