死锁(发生的条件以及如何解决死锁)

概念

死锁指两个或两个以上进程在执行过程中,因争夺资源而造成的相互等待的现象

原因

产生死锁必须同时满足以下四个条件,只要其中任一条件不成立,死锁就不会发生。

●互斥条件:进程对所分配到的资源不允许其他进程访问,若其他进程访问该资源,只能等待释放。

●不可剥夺条件:进程已获得的资源,在未完成使用之前,不可被剥夺,只能自己释放。

●请求和保持条件:进程已经保持了至少一个资源,但又提出了新的资源请求,而该资源已被其他进程占有,所以阻塞,并且不会释放已经占有的资源。

●环路等待条件:进程发生死锁后,必然存在一个进程-资源之间的环形链(链中每一个进程已获得的资源同时被链中下一个进程所请求)。

解决

解决死锁的方法即破坏上述四个条件之一,主要方法如下:

●资源一次性分配,从而剥夺 请求和保持条件

●可剥夺资源:即当进程新的资源未得到满足时,释放已占有的资源,从而破坏不可剥夺的条件

●资源有序分配法:系统给每类资源赋予一个序号,每个进程按编号递增的请求资源,释放则相反,从而破坏环路等待的条件

猜你喜欢

转载自blog.csdn.net/qq_36459662/article/details/113878958