系统进程死锁是什么原因如何让进程不死锁
系统进程死锁的原因
- 资源竞争方面
- 当系统资源不足时,多个进程竞争有限的资源可能导致死锁。例如系统中的打印机、公用队列等资源数量不能满足进程需求时,就容易引发这种情况。
- 进程推进顺序方面
- 进程在运行时请求和释放资源的顺序不当,也会产生死锁。比如多个进程互相持有对方需要的资源,同时又在等待对方释放资源,就会陷入僵局,无法继续推进。
让进程不死锁的方法
一、预防死锁
- 破坏互斥条件(局限性较大)
- 允许多个进程同时访问资源可破坏互斥条件,但很多资源固有特性是必须互斥访问,像打印机不能多个进程同时使用(否则输出混乱),所以这种方法在很多场合行不通。
- 破坏占有和等待条件
- 采用资源静态分配法。在进程运行前一次性分配其运行所需的全部资源。若有足够资源分配给进程就全部分配,这样进程运行期间不再请求资源,等待条件不成立;若有一种资源不能满足,则其他资源也不分配,避免进程等待期间占用资源。但此方法会使使用时间短的资源被长时间占用,降低资源利用率,还会使未获得全部资源的进程推迟运行。
- 破坏不可剥夺条件
- 采用剥夺式控制方法。让保持了某些资源的进程在新资源要求得不到满足时,先暂时释放已保持的所有资源,然后等待,之后再一起向系统申请。不过此方法实现困难,要保护进程放弃资源的现场及后续恢复,代价高昂,并且只适用于处理机和存储器资源,对其他资源不适用。
- 破坏循环等待条件
- 采用资源顺序分配法。把系统全部资源分成多个层次,进程得到某一层的一个资源后只能申请更高一层的资源;释放某层资源时,要先释放所占有的更高层资源;获得某层一个资源后再申请该层另一个资源时,要先释放已占有的该层资源。不过使用这种方法要注意资源层次安排,并且存在低层次资源空闲等待浪费、设备资源层次不易改动、对资源使用顺序不符的进程会造成资源浪费等缺陷。
二、避免死锁
- 并不直接破坏死锁的四个必要条件,而是在资源动态分配过程中,采用某种方法防止系统进入不安全区,避免死锁发生。
三、检测死锁
- 事先不采取限制措施,允许死锁发生。但通过系统设置的检测机构,及时检测出死锁的发生,精确确定与死锁有关的进程和资源,然后采取措施清除死锁。不过这种方法实现难度较大。
四、解除死锁
- 当检测到死锁后,采取措施解除死锁。这一方法可能会使系统获得较好的资源利用率和吞吐量,但实现难度最大。
本篇文章所含信息均从网络公开资源搜集整理,旨在为读者提供参考。尽管我们在编辑过程中力求信息的准确性和完整性,但无法对所有内容的时效性、真实性及全面性做出绝对保证。读者在阅读和使用这些信息时,应自行评估其适用性,并承担可能由此产生的风险。本网站/作者不对因信息使用不当或误解而造成的任何损失或损害承担责任。
