进程的死锁

进程的死锁

 

死锁:是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。 

 

死锁会带来的后果:

1.        使进程得不到正确的结果,处于死锁的进程得不到所需的资源,不能向前推进,顾得不到结果。

2.        使资源利用率降低,处于死锁的进程不释放已占有的资源,以至于这些资源不能被其他进程利用,所以资源利用率降低了。

3.        产生新的死锁。其他进程申请不到资源,也会产生死锁

最终这些后果,可能会造成系统崩溃!

进程死锁的四个必要条件:

(1) 互斥:至少有一个资源必须处于非共享模式,即一个资源一次只有一个进程使用。如果另一进程申请该资源,那么申请进程必须等到该资源被释放为止。

(2) 占有并等待:一个进程必须占有至少一个资源,并等待另一为其他进程所占有的资源。

(3) 非抢占:资源不能被抢占,即资源只能在进程完成任务后自动释放。

(4) 循环等待: 有一组等待进程{P0, P1, ..., Pn},P0等待的资源为P1所占有,P1等待的资源为P2所占有,。。。,Pn-1等待的资源为Pn所占有,最后Pn等待的资源为P0所占有,从而形成了一个等待循环。

 

死锁的预防:

只要确保至少有一个必要条件不成立,就能预防死锁发生。

 

1)     互斥——对于非共享资源,必须要有互斥条件。不过通常不能通过否定互斥条件来预防死锁:有的资源本身就是非共享的。

2)    占有并等待——打破该条件,必须保证:当一个进程申请一个资源时,它不能占有其他资源

3)    非抢占——对已分配的资源不能抢占。确保该条件不成立,可以使用如下协议:如果一个进程占有资源并申请并一个不能立即分配的资源,那么其现已分配的资源都可被抢占。即这些资源都被隐式释放。

4)    循环等待——确保该条件不成立的方法是对所有资源类型进行完全排序,且要求每个进程按递增顺序来申请资源

预防死锁的副作用降低设备的使用率和系统的吞吐率

 

死锁避免         

要求操作系统事先得到有关进程申请资源和使用资源的额外信息。通过获悉这些信息,系统将能够确定:对于一个申请,进程是否应等待。

 

 

例题:

(多选)在多重处理系统中,处理死锁的办法有两种:一是防止其发生;二是发生后进行处理。下面的方法属于防止其发生的是哪一个?   BC   

A、破坏互斥条件

B、破坏不可剥夺条件

C、破坏循环等待条件

D、杀死某个激活死锁的进程

解析:产生死锁的四个必要条件:互斥条件、请求与保持条件、不可剥夺条件、循环等待条件,互斥条件是无法破坏的,而D选项属于死锁事后处理操作

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值