死锁
死锁
死锁的四个必要条件
- 互斥:在一段时间内某资源仅为一进程所占用
- 请求与保持:当进程因请求资源而阻塞时,对已获得的资源保持不放
- 不可剥夺:进程已获得的资源在未使用完之前,不能剥夺,只能在使用完时由自己释放
- 循环等待:在发生死锁时,必然存在一个进程–资源的环形链
预防和破坏死锁
- 资源一次性分配:如果某进程所需的资源能够一次分配完则分配,否则不分配
- 申请新资源,必须先释放所拥有的的其他资源,若还需要此资源,需向系统重新申请
- 申请新资源失败,释放所拥有的的所有资源
- 对资源进行编号,申请编号小的资源必须先释放所拥有的编号大的资源
- 当产生死锁时,强制结束一些进程
避免死锁
银行家算法
手写一个死锁
1 | public static final String s1 = "s1"; |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 柳门竹巷!
评论