死锁

网友投稿 263 2022-10-14


死锁

死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。产生死锁的原因,主要包括:

1.系统资源不足; 2.程序执行的顺序有问题; 3.资源分配不当等。

如果系统资源充足,进程的资源请求都能够得到满足,那么死锁出现的可能性就很低;否则,就会因争夺有限的资源而陷入死锁。其次,程序执行的顺序与速度不同,也可能产生死锁。产生死锁的四个必要条件:

**1.互斥条件**:一个资源每次只能被一个进程使用。 **2.请求与保持条件**:一个进程因请求资源而阻塞时,对已获得的资源保持不放。 **3.不剥夺条件**:进程已获得的资源,在末使用完之前,不能强行剥夺。 **4.循环等待条件**:若干进程之间形成一种头尾相接的循环等待资源关系。

注:这四个条件是死锁的必要条件,只要系统发生死锁,这些条件必然成立,而只要上述条件之一不满足,就不会发生死锁。

如何解决死锁?

1.一次性将资源分配,这样就不会再有请求了:(破坏请求条件); 2.只要有一个资源得不到分配,就不给这个进程分配其他的资源:(破坏请保持条件); 3.当某进程获得了部分资源,但得不到其它资源时,则释放已占有的资源(破坏不可剥夺条件); 4.系统给每类资源赋予一个编号,使每一个进程按编号递增的顺序请求资源,释放则相反(破坏环路等待条件);


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:微服务之间如何通过feign调用接口上传文件
下一篇:视频编码器h.264和mpeg4的区别?
相关文章

 发表评论

暂时没有评论,来抢沙发吧~