死锁的原因及处理方式

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhaoxaun666/article/details/81076790

死锁的原因?


死锁是指在俩个或多个并发的进程中,如果每个进程持有某种资源而又等待别的进程释放它们现保持着的资源,否则就不能向前推进。此时,每个进程都占用了一定的资源但是又不能向前推进,则称这一组进程产生了死锁。
简单的说:就是俩个或多个进程无止境的等候,永远不会成立的条件的一种系统状态。、
产生死锁的根本原因是系统能够提供的资源个数要求比该资源的进程数少,具体原因:系统资源不足,进程推进顺序非法。

死锁的四个必要条件:


  • 互斥条件:一个资源每次只能被一个进程使用。
  • 请求和保持条件:一个进程因请求而阻塞时,对以获得的资源保持不放
  • 不可剥夺条件:进程以获得的资源,在没有使用完之前,不能强行剥夺。
  • 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源的关系

死锁的处理方式?


  • 检测死锁并恢复。
  • 仔细对资源进行动态分配,以避免死锁。
  • 通过破坏死锁产生的四个必要条件之一,来防止死锁的产生。
  • 鸵鸟算法忽略该问题。

列举几种进程的同步机制?


同步机制有:原子操作,信号量机制,自旋锁,管程,会合,分布式系统。


临界资源和临界区

一次只允许一个进程使用的共享资源称为临界资源,如打印机、公共变量等;而在并发进程中与共享变量有关的程序段称为临界区。对临界区的访问必须是互斥进行。进程进入临界区要满足一定的条件,以保证临界资源的安全使用,系统的正常运行,即对临界区的管理就遵循以下三个原则:

 (1)当有若干进程要求进入它们的临界区时,应在有限时间内使一进程进入临界区。换句话说,它们不应该相互等待而致使谁都不能进入。

 (2)每次最多有一个进程处于临界区内。

 (3)进程在临界区内逗留应在有限时间范围内。

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页