死锁形成的原因和四个必要条件

死锁的概念

死锁是指两个或两个以上的进程(线程)在运行过程中因争夺资源而造成的一种僵局,若无外力作用,这些进程(线程)都将无法向前推进 ,这时就形成了死锁。处于死锁状态的进程称为死锁进

比如一扇门,你要出我要进,你在等我让,我在等你让,这时就陷入了死循环,就形成了死锁。

死锁产生的原因

先来看两个概念: 可抢占资源和不可抢占资源
可抢占资源:指某进程在获得这类资源后,该资源可以再被其他进程或系统抢占。对于这类资源是不会引起死锁的。CPU 和主存均属于可抢占性资源。
不可抢占资源:一旦系统把某资源分配给该进程后,就不能将它强行收回,只能在进程用完后自行释放。磁带机、打印机等属于不可抢占性资源

竞争不可抢占资源引起死锁如:共享文件时引起死锁系统中拥有两个进程P1和P2,它们都准备写两个文件F1和F2。而这两者都属于可重用和不可抢占性资源。如果进程P1在打开F1的同时,P2进程打开F2文件,当P1想打开F2时由于F2已结被占用而阻塞,当P2想打开1时由于F1已结被占用而阻塞,此时就会无线等待下去,形成死锁。进程推进顺序不当时也会引起死锁

产生死锁的四个必要条件

(1)互斥条件:进程对所分配到的资源不允许其他进程进行访问,若其他进程访问该资源,只能等待,直至占有该资源的进程使用完成后释放该资源
(2)请求和保持条件:进程获得一定的资源之后,又对其他资源发出请求,但是该资源可能被其他进程占有,此事请求阻塞,但又对自己获得的资源保持不放
(3)不可剥夺条件:是指进程已获得的资源,在未完成使用之前,不可被剥夺,只能在使用完后自己释放
(4)循环等待条件:是指进程发生死锁后,必然存在一个进程–资源之间的环形链

处理死锁的基本方法

1.预防死锁:通过设置一些限制条件,去破坏产生死锁必要条件的一个或多个来预防死锁
2.避免死锁:在资源分配过程中,使用某种方法避免系统进入不安全的状态,从而避免发生死锁
3.检测死锁:允许死锁的发生,但是通过系统的检测之后,采取一些措施,将死锁清除掉
4.解除死锁:当检测出死锁后,便采取适当措施将进程从死锁状态中解脱出来

发布了37 篇原创文章 · 获赞 5 · 访问量 2022

猜你喜欢

转载自blog.csdn.net/chris__x/article/details/103229109