造成死锁有四个方面:资源互斥,不可剥夺,保持并请求,循环等待
预防死锁的方法:资源共享,可剥夺,一次性全部申请,顺序资源分配法
避免死锁的方法:银行家算法
按照一定的序列分配资源,则每个进程都能够顺利完成,这叫做安全序列,只要能够找到一个安全序列那么系统就是安全状态,银行家算法的核心就是分配资源之前首先判断分配完之后能否找到一条安全序列
银行家算法步骤:
检查此次申请是否超过了之前声明的最大需求数
检查此时系统剩余的可用资源是否还能满足这次请求
试探着分配
如果找不到一条安全序列则退回
死锁解除:
资源剥夺法
进程回退法
撤销进程法