将死锁比喻成火灾,处理死锁的方法同样可以类比处理火灾,从而将处理死锁分为预防、避免、检测与恢复四个方面。
- 死锁预防
预防的目的就是从源头杜绝死锁的发生,确保系统永远都不会进入死锁状态。针对coffman的死锁发生的4个必要条件,从这4个必要条件入手,可以得出预防死锁的具体方法。
1.破坏互斥条件
如果一个资源不会被一个进程独自占有,那么就不会发生资源死锁。破坏这个条件的方法就是允许多个进程同时访问一个资源实例。
2.破坏占有和等待条件
禁止已持有资源的进程再等待其他资源。实现方法可以是规定进程在开始执行前就请求全部需要的资源,如果全部资源都可用,那么就分配所有请求资源给该进程,允许这个进程运行,否则则让进程等待,直到所有的请求的资源全部可用才运行程序。
3.破坏不可抢占条件
申请的资源不能立即使用则释放。
4.破坏环路条件
一种实现方法是保证每一个进程在任何时候只能占用一个资源,如果需要请求另一个资源,则必须释放当前占用的资源。另一种是将