- 死锁是什么
- 死锁是多个进程循环等待其他进程的资源而一直僵持下去的一种局面,多个进程无限期地阻塞等待下去。
- 四个必要条件
- 互斥条件:一个资源仅同时被一个进程所调用
- 请求与保持条件:一个进程由于请求资源而陷入死锁时,该进程会保持自身的资源而不释放
- 不剥夺条件:一个资源在尚未被一个进程使用完全前,不能被其他进程强行占用
- 循环等待条件:多个进程形成一种首尾相接地循环等待资源的情况
- 可以进行死锁的预防,避免,检测与解除
- 预防:破除四个必要条件就行:
破除互斥、破除请求与保持:一次性申请完所需资源,缺点:进程时动态执行的,无法提前知道所有的所需资源;破除不剥夺:在得到新的请求不被同意,可以将自身的资源释放,破除循环占用:对资源进行编号,进程调用资源严格按照编号顺序进行,未调用编号小的进程不能直接调用编号大的进程。 - 避免:
互斥、请求与保持、不依赖这三个必要条件可以出现,主要避免出现循环等待的局面,也即进程调用资源时,严格按照编号顺序进行,使得系统始终处于安全状态。银行家算法就是这样的。<