操作系统:死锁
1. 死锁的概念
死锁是多个进程因竞争资源而造成的一种僵局现象,若无外力的作用,这些进程都不能运行。
当然单进程也是可能出现死锁,原因是如果内存小的情况下,单进程放到外存,是挂起状态,即导致死锁。
2. 原因
1)竞争资源
当系统中供多个进程共享的资源不足以同时满足他们的需求时,引起他们对资源的竞争的死锁。
2)进程推进顺序非法
进程在运行过程中,如果请求和释放资源的顺序不当,也可能导致死锁如下图:
3. 产生死锁的必要条件
1)互斥条件
进程对分配到的资源进行排他性,独占性使用,即在一短时间内某资源只能由一个资源占用。
2)请求和保持条件
进程已经拥有并保持了至少一个资源,但是,又请求新的资源,而新请求的资源又被其他进程占用,此时请求进程被等待,但对已获得
的资源保持不放。
3)不可剥夺条件
进程所占用的资源在结束之前不能被剥夺,只能在运行结束后由自己释放
4)环路等待条件
在发生死锁时,必然存在一个“进程——资源”的环形链。
4. 处理基本方法
1)预防死锁
2)避免死锁
3)检测和接触死锁(即重启)
5.预防(早期采用的措施)
预防是通过对资源分配的原则进行限制,而使产生死锁的4个必要条件中的2,3,4个条件之一不成立即可,第一个条件,是由设备或资源的固有特性所决定,不能改变。
1)破坏“不剥夺”条件
2)破坏“请求和保持”条件
3)破坏“环路等待”条件
6.避免(现在)
前提:
系统提供资源
目前这个进程需要什么资源。
”试“分配资源并计算有没有造成死锁现象。
借上,把系统分为安全状态和不安全状态,只需让其处于安全状态即可避免死锁,但是安全状态让限制更多,导致系统的性能降低。
1)利用银行家算法避免死锁
具体算法过程偏多,在另一篇文章。
还没有评论,来说两句吧...