操作系统--死锁

大家知道,所谓死锁,是指多个进程(或线程)在运行过程中因争夺资源而造成的一种僵局,当进程(或线程)处于这种僵局状态时,若无外力作用,他们都将无法在向前推进。

死锁原因: (1)竞争资源  (2)进程间推进顺序非法    

产生死锁的必要条件:

死锁的产生有四个必要条件:

  1. 互斥条件:指进程对所分配到的资源进行排他性使用,即在一段时间内某资源只由一个进程占用
  2. 请求和保持条件: 指进程已经保持了至少一个资源,但有提出了新的资源请求,而该资源又已被其他进程所占有,此时请求进程阻塞,但又对自己已获得的其他资源保持不放。
  3. 不剥夺条件: 指进程已获得的资源,在未使用完之前,不能被剥夺,只能在使用完由自己释放。
  4. 环路等待条件: 指在发生死锁时,必然存在一个进程---资源的环形链,即进程集合中的P0正在等待一个P1占用的资源;P1正在等待P2占用的资源..., Pn正在等待已被P0占用的资源

处理死锁的基本方法

  1. 预防死锁:通过设置某些限制条件,去破坏产生死锁的四个必要条件中的一个或几个条件,来预防发生死锁。已被防范采用。但由于所施加的条件往往太严格,因而可能会导致系统资源利用率和系统吞吐量降低。
  2. 避免死锁:是在资源动态分配的过程中,用某种方法去防止系统进入不安全状态,从而避免发生死锁。目前在较为完善的系统中常用此方法来避免死锁。
  3. 检测死锁:这种方法并不须事先采取任何限制性措施,也不必检查系统是否已经进入不安全区,而是允许系统在运行过程中发生死锁。但可通过系统所设置的检测机构,及时的检测出死锁的发生,并精确地确定与死锁有关的进程和资源;然后采取适当的措施,从系统中将已发生的死锁清除掉。
  4. 解除死锁:当检测到系统中已发生死锁时,须将进程从死锁状态中解脱出来。常用的实施方法是撤销或挂起一些进程,以便回收一些资源,再将这些资源分配给已处于阻塞状态的进程,使之转为就绪状态,以继续运行。死锁的检测和解除措施有可能使系统获得较好的资源利用率和吞吐量,但在实现难度上也最大。
阅读更多
想对作者说点什么? 我来说一句

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

不良信息举报

操作系统--死锁

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭