死锁

一、死锁产生的4个条件:
1.互斥条件:资源是独占的且排他使用,进程互斥使用资源,即任意时刻一个资源只能给一个进程使用,其他进程若申请一个资源,而该资源被另一进程占有时,则申请者等待直到资源被占有者释放
2.不可剥夺条件:进程未使用完的资源不能被其他进程剥夺,只能由自己释放
3.阻塞和保持条件:进程每次申请它所需要的一部分资源,在申请新的资源的同时,继续占用已分配到的资源。
4.循环阻塞条件:多个进程循环链,每个进程在等待下一个进程释放资源。在发生死锁时必然存在一个进程等待队列{P1,P2,…,Pn},其中P1等待P2占有的资源,P2等待P3占有的资源,…,Pn等待P1占有的资源,形成一个进程等待环路,环路中每一个进程所占有的资源同时被另一个申请,也就是前一个进程占有后一个进程所申请地资源
当死锁产生时,4个条件必定同时存在
二、死锁产生的原因:
1.系统资源配置不足,引起进程争夺资源
2.系统各并发进程请求资源的随机性
3.各进程在系统中异步向前推进,造成进程推进顺序的非法性(进程行进速度)
二、解决死锁的方法有4种:
1.忽略不计,出现死锁时,重启启动系统
1)杀死进程
2)重启机器
2.预防死锁,通过破坏死锁的4个必要条件

1)破坏互斥条件
资源是否共享由资源本身性质决定,不能破坏
将一台独享设备改造成多台设备,满足多个进程共享

2)破坏阻塞和保持条件
进程开始运行前,必须获得全部资源,如果系统不能满足,则该进程等待
系统合理的分配资源给各个进程

3)破坏不可剥夺条件
进程进入阻塞状态前强行使其他进程释放资源,这个办法不可行,因为保护进程放弃资源时的现场以及以后现场恢复,系统付出代价很高

4)破坏循环阻塞条件
采用有序分配资源,将系统全部资源按类进行全局编号排序

通常微型计算机采用1,2这两种方法

3.避免死锁,进程请求分配资源时,采用银行家算法防止系统进入不安全状态
系统确定是安全状态才给进程分配资源

4.检测和恢复死锁,通过设置一个死锁检测机构,进行死锁检测,一旦检测出系统存在死锁,通过逐一撤销进程等方法使系统恢复。
1)死锁的检测

2)死锁的恢复
①终止一些进程
a.杀死所有死锁进程,原先计算作废,以后重新计算
b.杀死一个进程,后期需要进行探测,是否死锁已经解除
②资源剥夺
a.挂起进程并剥夺资源给另一个进程使用(依赖于进程本身特性是否容易重新得到资源)
b.回滚一些进程,将不在环路(不是死锁)的进程设置到没有获得资源时的状态,把这个资源分配给死锁的进程

https://www.cnblogs.com/withscorpion/p/9454490.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章