操作系统——利用银行家算法避免死锁
.简介
银行家算法时最有代表性的避免死锁的算法,通过进程事先声明所需资源最大量,在系统分配资源前计算此次分配资源的安全性,若分配导致系统进入不安全状态,则等待,否则进行分配。
.数据结构
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]
.资源分配
.安全性检测
.银行家算法的保守性
可能银行家算法不安全,但进程不一定死锁。