实验二 银行家算法模拟
实验学时:2
实验类型:设计
实验要求:必修
一、实验目的
(1)进一步理解利用银行家算法避免死锁的问题;
(2)在了解和掌握银行家算法的基础上,编制银行家算法通用程序,将调试结果显示
在计算机屏幕上,再检测和笔算的一致性。
(3)理解和掌握安全序列、安全性算法
二、实验内容
(1)了解和理解死锁;
(2)理解利用银行家算法避免死锁的原理;
(3)会使用某种编程语言。
三、实验原理
(一)安全状态
指系统能按照某种顺序如<P1,P2,…,Pn>(称为<P1,P2,…,Pn>序列为安全序列),为
每个进程分配所需的资源,直至最大需求,使得每个进程都能顺利完成。
(二)银行家算法
假设在进程并发执行时进程 i 提出请求 j 类资源 k 个后,表示为 Requesti[j]=k。系统
按下述步骤进行安全检查:
(1)如果 Requesti≤Needi 则继续以下检查,否则显示需求申请超出最大需求值的错误。
(2)如果 Requesti≤Available 则继续以下检查,否则显示系统无足够资源,Pi 阻塞等
待。
(3)系统试探着把资源分配给进程 Pi,并修改下面数据结构中的数值:
Available[j]∶=Available[j]-Requesti[j];
Allocation[i,j]∶=Allocation[i,j]+Requesti[j];
Need[i,j]∶=Need[i,j]-Requesti[j];
(4)系统执行安全性算法,检查此次资源分配后,系统是否处于安全状态。若安全,才正
式将资源分配给进程 Pi,以完成本次分配;否则, 将本次的试探分配作废,恢复原来的资
源分配状态,让进程 Pi 等待。
(三)安全性算法
(1)设置两个向量:
① 工作向量 Work: 它表示系统可提供给进程继续运行所需的各类资源数目,它含有