软考(软件设计师)--操作系统基础知识之进程管理(三)

一、死锁

指多个进程在运行过程中因争夺资源而造成的一种僵局,当进程处于这种状态时,若无外力作用,他们都将无法再向前推进。

二、产生死锁原因

  1. 竞争资源
  2. 进程间推进顺序非法

竞争资源引起进程死锁
可把系统中的资源分为两类:

  1. 可剥夺性资源:(比如CPU)
  2. 不可剥夺资源:(指的就是不可剥夺资源)

产生死锁的必要条件:

  1. 互斥条件
  2. 请求和保持条件
  3. 不剥夺条件
  4. 环路等待条件

互斥条件:
进程访问的时临界资源,即在一段时间内某资源由一个进程占用,如果此时有其它进程请求该资源,则请求者只能等待,知道占有该资源的饿进程用完释放。
请求和保持条件
一进程在请求新的资源的同时,保持对己分配资源的占有。
不剥夺条件
进程已获得的资源,在未使用完之前,不能被剥夺,只能在使用完由自己释放。
环路等待条件
指在发生死锁时,必然存在一个进程–资源的环形链。

三、处理死锁的基本方法

  1. 预防死锁
  2. 避免死锁
  3. 检测死锁
  4. 解除死锁

预防死锁:
是一种建档的饿直管的事先预防方法。该方法是通过设置某些限制条件,去破坏产生死锁的四个必要条件的一个或几个,来预防发生死锁。

  • 摒弃“请求和保持”条件
  • 摒弃“不剥夺”条件
  • 摒弃“环路等待”条件

避免死锁:
同样属于事先预防的策略,这种方法不是预先加上各种限制条件以预防产生死锁的可能性,而是用某种方法去防止系统进入不安全状态,使死锁不至于最终发生。
(银行家算法避免死锁)记住

检测死锁:
并并不需实现采取任何限制性措施,也不必检查系统是否已经进入不安全区。
此方法允许系统在运行过程中发生死锁,但可通过系统所设置的检测机构,及时的检测出死锁的发生,并准确的确定与死锁有关的进程和资源;然后采取实当的措施,从系统中将已发生的死锁清除掉。

解除死锁:
是与死锁检测配套的一种措施。当检测到系统中已发生死锁时,需将进程从死锁状态在中解脱出来。

  • 常用的实施方法时撤销或挂起一些进程,以便回收一些资源,再将这些资源分配给已处于阻塞状态的进程,使之转为就绪状态,以继续运行。
  • 死锁的检测与解除措施,有可能使系统获得较好的饿资源利用率和吞吐量,但在实际上南多也最大。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章