死锁四个必要条件及解决方法

目录

四个必要条件

解决死锁的方法


四个必要条件

  1. 互斥条件:资源不能被共享,只能由一个进程使用。
  2. 请求和保持条件:—个进程应占有至少一个资源,并等待另一个资源,而该资源为其他进程所占有。
  3. 不剥夺条件:已经分配的资源不能从相应的进程中被强制地剥夺。
  4. 循环等待条件:系统中若干进程组成环路,该环路中每个进程都在等待相邻进程正占用的资源。

解决死锁的方法

也就是想办法破除4个必要条件的一个或多个。其中,1由系统保证,不能也不应该破除。

  • 破除2请求和保持条件:不让部分分配 -> 预先静态分配资源。一次配置所有需要的资源,不做多次请求资源。
  • 破除3不剥夺条件:剥夺 -> 线程申请新资源,必须释放以前申请的资源,之后再重新申请。
  • 破除4循环等待条件顺序资源分配法。首先给系统中的资源编号,规定每个线程,必须按编号递增的顺序请求资源,只能申请编号比之前大的资源。

你可能感兴趣的:(C和Cpp学习之路,计算机基础,死锁)