1.银行家算法:
如题,目标:寻找安全序列
1) 根据已分配资源(Used) 与 资源总数(ALL) 得 目前可用资源数(Avail)
计算公式:ALL - Used = Avail
R1 | R2 | R3 |
18 - 3 - 4 - 4 - 2 - 3 = 2 | 6 - 2 - 1 = 3 | 22 - 3 - 3 - 5 - 4 - 4 = 3 |
2) 根据已分配资源(Used)与最大需求数(Max) 得 现需求资源量(Need)
计算公式:Max - Used = Need
进程 | R1 | R2 | R3 |
P0 | 5 - 3 = 2 | 5 - 2 = 3 | 10 - 3 = 7 |
P1 | 1 | 3 | 3 |
P2 | 0 | 0 | 6 |
P3 | 2 | 2 | 1 |
P4 | 1 | 1 | 0 |
3) 根据 目前可用资源数(Avail)与 需求数 (Need),若可用资源数满足需求数,则给该进程进行处理,当该进程处理完毕,进行资源释放,则可用资源数增加。
计算公式:if(Avail > Need)则 更新 Avail = Avail + Used
安全序列需满足:无超限资源存在的情况,对所有进程进行资源供应,不断资源回收,实现全部进程完成任务。
例如:P3 -> P4 -> P2 -> P1 -> P0 为安全序列 P0(Avail < Need) -> P2 -> P3 -> P4 -> P1 为不安全序列