多线程死锁

一、死锁

1)提出
多线程与多进程提高了系统资源的利用率,然而并发执行也会带来一些问题,如死锁。
2)概念
死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。
3)死锁在显示生活中的实例
在一个计算机系统中,只有一个打印机和一个输入设备。进程一正在占用输入设备,同时又提出使用打印机的请求,而进程二正在占用打印机,同时提出使用输入设备,就这样,两个进程只能无休止的进行等待,两个进程就会陷入死锁状态。

二、产生死锁的必要条件

产生死锁必须同时满足以下四个条件
1)互斥条件
指进程对所分配的资源进行排他性使用,即在某一时刻,某一资源只能由一个进程占用,如果其他进程请求资源,则让其他进程进行等待,直到占用进程释放。
2)请求和保持条件
指进程已经占有至少一个资源,但又提出了新的资源请求,而该资源已被其它进程占有,此时请求进程阻塞,但又对自己已获得的其它资源保持不放。
3)不剥夺条件
指进程占有某个资源后,在没有自己主动释放时,该资源不能被剥夺。
4)环路等待条件
指在发生死锁时,必然存在一个进程——资源的环形链,一个等待另一个被占用的资源。
这里写图片描述

三、处理死锁

特殊的处理方法:鸵鸟策略
就像鸵鸟一样,遇到危险就将头埋在地底下,假装看不到,将危险忽略。虽然不算是一个算法,但在实际系统中是广泛使用的,所以在计算机操作系统中,死锁发生且影响系统正常运行时,手动干预—重新启动
1.预防死锁
通过设置某些限制条件,去破坏产生死锁的四个必要条件中的一个或几个。此方法较易实现,已被广泛使用,但会降低系统资源利用率。
2.避免死锁
在资源的动态分配过程中,使用某种方法去防止系统进入不安全状态。
3.死锁检测并解除
通过系统所设置的检测机构,可以及时发现与死锁有关的进程和资源,然后将进程从死锁状态中解脱出来,常用的措施是撤销或挂起一些进程(剥夺),以便回收某些资源,再将这些资源分配给已处于阻塞状态的进程,使之变为就绪态,使之继续运行,此方法实施难度比较大。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值