操作系统——利用银行家算法避免死锁

.简介

银行家算法时最有代表性的避免死锁的算法,通过进程事先声明所需资源最大量,在系统分配资源前计算此次分配资源的安全性,若分配导致系统进入不安全状态,则等待,否则进行分配。

.数据结构

Available: array[1…m]of integer; //系统可用资源
Claim: array[1…n,1…m]of integer; //进程最大需求
Allocation: array[1…n,1…m]of integer; //当前分配
Need: array[1…n,1…m]of integer; //尚需资源
Request: array[1…n,1…m]of integer; //当前请求

临时变量:
Work: array[1…m]of integer;
Finish: array[1…n]of boolean;

设X,Y为下标1…l的一维数组:
X<=Y <—>j (1<=j<=l), X[j]Y[j]
X:=Y <—>j (1<=j<=l), X[j]:=Y[j]
X:=c <—>j (1<=j<=l), X[j]:=c
X±Y <—>j (1<=j<=l), X[j]±Y[j]

.资源分配

操作系统——利用银行家算法避免死锁

.安全性检测

操作系统——利用银行家算法避免死锁

.银行家算法的保守性

可能银行家算法不安全,但进程不一定死锁。