abcyzy 发表于 2023-5-23 17:23:56

成电资料

银行家算法

当用户申请资源时,系统判断如果把这些资源分出去,系统是否还处于安全状态。

若是,就可以分配这些资源; 否则,暂时不分配,阻塞进程。

安全性算法

设Work和Finish分别是长度为m和n的向量,按如下方式进行初始化:
Work = Available
Finish = false for i = 1,2, …, n.
查找这样的i使其满足:
Finish = false
Need <= Work
如果未找到,转第4步.
Work = Work + Allocation; Finish = True;返回第2步
如果对所有的i, Finish==True,那么处于安全状态,否则不安全状态。
资源分配算法

Requesti为进程Pi的请求向量。如果Requesti = k 那么进程Pi 所需要的资源类型Rj的实例数量为k。当进程Pi做出资源请求时,执行:
若Requesti <=Needi 转1.2;否则,出错退出;
若Requesti <=Available 转2; 否则 Pi阻塞;
假定系统可以分配给进程Pi所请求的资源,并按如下方式修改状态:
Available = Available - Requesti;
Allocationi = Allocationi + Requesti;
Needi = Needi – Requesti;
系统执行安全性算法
如果处于安全状态,那么Pi可分配到其所需资源;
如果新状态不安全,那么进程Pi必须等待,并恢复到原先资源分配状态
实例



死锁检测
如果一个系统既不采用死锁预防算法也不采用死锁避免算法,那么可能会出现死锁。因此,系统应该提供:用来检查系统状态是否出现死锁的检测算法、从死锁状态中恢复的方法。

死锁检测
没有任何预先限制措施
资源分配时不检查系统是否会进入不安全状态,被请求的资源都被授予给进程
系统可能出现死锁
周期性检测是否出现死锁(执行检测算法)
检测时机
在每个资源请求时都进行
定时检测
系统资源利用率下降时检测死锁
简化资源分配图
简化规则:若已分配和申请能满足需求,则删除边,使其成为孤立点→运行完毕后资源释放;
在经过一系列的简化后,若能消去图中的所有边,使所有的进程都成为孤立结点,则称该图是可完全简化的;反之的是不可完全简化的。
死锁定理:死锁状态的充要条件:资源分配图不可完全简化
死锁定理与不安全状态的关系
死锁定理:当前请求(request)
不安全状态:所有剩余请求(need)

页: [1]
查看完整版本: 成电资料