操作系统之死锁

1. 产生死锁的必要条件

  • 互斥:任何时刻只能有一个进程使用一个资源实例。
  • 持有并等待:进程保持至少一个资源,并正在等待获取其他进程持有的资源。
  • 非抢占:资源只能在进程使用后自愿释放。
  • 循环等待。

2. 处理方法

鸵鸟策略:把头埋在沙子里,假装根本没发生问题。

死锁预防:确保系统永远不会进入死锁状态。

  • 破坏互斥条件:把互斥的共享资源封装成可同时访问。
  • 破坏占有和等待条件:进程请求资源时,要求它不持有任何其他资源;仅允许进程在开始执行时,一次请求所有需要的资源。
  • 破坏不可抢占条件:如进程请求不能立即分配的资源,则释放已有占有资源;只在能够同时获得所有所需资源时,才执行分配操作。
  • 破坏环路等待:对资源排序,要求进程按顺序请求资源。

死锁避免:在使用前进行判断,只允许不会出现死锁的进程请求资源。
银行家算法:
如果没有死锁发生,并且即使所有进程突然请求对资源的最大需求,也仍然存在某种调度次序能够使得每一个进程运行完毕,则称该状态是安全的。如果一个状态不是安全的,需要拒绝进入这个状态。

死锁检测和恢复:在检测到运行系统进入死锁状态后,进行恢复。
检测:每种类型一个资源的死锁检测可采用有向图环路检测算法;每种类型多个资源的死锁检测采用基于矩阵的算法。
恢复:进程终止;资源抢占;进程回退。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章