长沙软件公司在哪里:系统死锁的四个必要条件与相应的解决方法

来源:百度文库 编辑:九乡新闻网 时间:2024/04/28 15:50:28
系统产生死锁的四个必要条件:
  (1) 互斥条件:一个资源每次只能被一个进程使用。
  (2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。
  (3) 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。
  (4) 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。处理死锁的策略1.忽略该问题。例如鸵鸟算法,该算法可以应用在极少发生死锁的的情况下。为什么叫鸵鸟算法呢,因为传说中鸵鸟看到危险就把头埋在地底下,可能鸵鸟觉得看不到危险也就没危险了吧。跟掩耳盗铃有点像。
2.检测死锁并且恢复。
3.仔细地对资源进行动态分配,以避免死锁。
4.通过破除死锁四个必要条件之一,来防止死锁产生。
  这四个条件是死锁的必要条件, 只要系统发生死锁, 这些条件必然成立, 而只要上述条件之
  一不满足,就不会发生死锁。
  
  死锁的解除与预防:
  理解了死锁的原因, 尤其是产生死锁的四个必要条件,就可以最大可能地避免、预防和
  解除死锁。所以, 在系统设计、进程调度等方面注意如何不让这四个必要条件成立, 如何确
  定资源的合理分配算法, 避免进程永久占据系统资源。此外, 也要防止进程在处于等待状态
  的情况下占用资源。因此,对资源的分配要给予合理的规划。 好象是叫CPU超频锁? 一组进程中每个进程均等待此组进程中某一其他进程所占用的 因而永远无法得到的资源 这中现象叫死锁
简单来说就是2个进程(也可简单的看做是一个有独立功能的程序)同时抢夺一个无法分配的资源 一组进程中每个进程均等待此组进程中某一其他进程所占用的 因而永远无法得到的资源 这中现象叫死锁
简单来说就是2个进程(也可简单的看做是一个有独立功能的程序)同时抢夺一个无法分配的资源相关阅读:什么是死锁?如果一个进程集合里面的每个进程都在等待只能由这个集合中的其他一个进程(包括他自身)才能引发的事件,这种情况就是死锁。这个定义可能有点拗口,一个最简单的例子就是有资源A和资源B,都是不可剥夺资源,现在进程C已经申请了资源A,进程D也申请了资源B,进程C接下来的操作需要用到资源B,而进程D恰好也在申请资源A,那么就引发了死锁。这个肯定每个人都看过了。然后套用回去定义:如果一个进程集合里面(进程C和进程D)的每个进程(进程C和进程D)都在等待只能由这个集合中的其他一个进程(对于进程C,他在等进程D;对于进程D,他在等进程C)才能引发的事件(释放相应资源)。这里的资源包括了软的资源(代码块)和硬的资源(例如扫描仪)。资源一般可以分两种:可剥夺资源(Preemptable)和不可剥夺资源(Nonpreemptable)。一般来说对于由可剥夺资源引起的死锁可以由系统的重新分配资源来解决,所以一般来说大家说的死锁都是由于不可剥夺资源所引起的。