什么是死锁和如何解决死锁

如果一组进程中每一个进程都在等待仅由该组进程中的其他进程才能引发的事件,那么该组进程是死锁的。

举例来说:有两个进程A和B,A持有资源a等待b资源,B持有资源b等待a资源,两个进程都在等待另一个资源的同时不释放资源,就形成死锁。

形成死锁的四个必要条件:

(1) 互斥条件:一个资源每次只能被一个进程使用。

(2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。

(3) 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。

(4) 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。

处理死锁的思路如下:

预防死锁:破坏四个必要条件中的一个或多个来预防死锁

避免死锁:在资源动态分配的过程中,用某种方式防止系统进入不安全的状态。

检测死锁:运行时产生死锁,及时发现思索,将程序解脱出来。

解除死锁:发生死锁后,撤销进程,回收资源,分配给正在阻塞状态的进程。

预防死锁的办法:

破坏请求和保持条件:1.一次性的申请所有资源。之后不在申请资源,如果不满足资源条件则得不到资源分配。2.只获得初期资源运行,之后将运行完的资源释放,请求新的资源。

破坏不可抢占条件:当一个进程获得某种不可抢占资源,提出新的资源申请,若不能满足,则释放所有资源,以后需要,再次重新申请。

破坏循环等待条件:对资源进行排号,按照序号递增的顺序请求资源。若进程获得序号高的资源想要获取序号低的资源,就需要先释放序号高的资源。


死锁的解除办法:

1、抢占资源。从一个或多个进程中抢占足够数量的资源,分配给死锁进程,以解除死锁状态。

2、终止(撤销)进程:将一个或多个思索进程终止(撤销),直至打破循环环路,使系统从死锁状态解脱。



个人公号:【排骨肉段】,可以关注一下。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 资源问题 在系统中有许多不同类型的资源,其中可以引起死锁的主要是,需要采用互补访问方式的、不可以被抢占的资源,即临...
    NoFacePeace阅读 1,132评论 0 0
  • 一.死锁的概念以及产生死锁的原因 1.死锁的定义 在多道程序系统中,由于多个进程的并发执行,改善了系统资源的利用率...
    Chasel_H阅读 1,169评论 0 4
  • 1、竞态条件: 定义:竞态条件指的是一种特殊的情况,在这种情况下各个执行单元以一种没有逻辑的顺序执行动作,从而导致...
    Hughman阅读 1,359评论 0 7
  • 死锁概念和产生原因 死锁是指多个进程循环等待彼此占有的资源而无限期的僵持等待下去的局面。原因是: 系统提供的资源太...
    heamon7阅读 10,641评论 2 9
  • 别离处 烟雨起苍茫 击筑声犹在 易水寒且长 君远去 拔剑刎颈项 不祭苍天不祭地 血洒泪两行
    蓝潭星海阅读 314评论 1 5