,本次不能分配给他。请进程等待
2算法描述
1)如果Requesti是进程Pi的请求向量,如果Requesti,jK表示进程Pi需要K个Rj类型的资源。当Pi发出资源请求后,系统按下述步骤进行检查:如果RequestijNeedij,便转向步骤2;否则认为出错,因为它所需要的资源数已超过它所宣布的最大值。
2)如果RequestijAvailablej便转向步骤3,否则,表示尚无足够资源,进程Pi须等待。
3)系统试探着把资源分配给进程Pi,并修改下面数据结构中的数值:AvailablejAvailablejRequestijAllocatio
ijAllocatio
ijRequestijNeedijNeedijRequestij
第3页共14页
f、
4系统执行安全性算法,检查此次资源分配后,系统是否处于安全状态。若安全,才正式将资源分配给进程Pi,以完成本次分配;否则,将本次的试探分配作废,恢复原来的资源分配状态,让进程pi等待。
3数据结构
1可利用资源向量AVAILABLE。这是一个含有M个元素的数组,其中的每一个元素代表一类可利用的资源数目,其3初始值是系统中所配置的该类全部可哦那个资源的数目,其数值随该类资源的分配和回收而动态的改变。
2最大需求矩阵MAX。这是一个MN的矩阵,它定义了系统中N个进程中的每一个进程对M类资源的最大需求。
3分配矩阵ALLOCATION。这也是一个MN的矩阵,它定义了系统中每一类资源当前已分配给每一进程的资源数。
4需求矩阵NEED。这也是一个MN的矩阵,用以表示每一个进程尚需的各类资源数。5NEEDRWMAXRWALLOCATIONRW
4主要函数说明
主要的常量变量
defi
eW10最大进程数W10
defi
eR20最大资源总数R20
i
tAVAILABLER可利用资源向量
i
tMAXWR最大需求矩阵
i
tALLOCATIONWR分配矩阵
i
tNEEDWR
需求矩阵
i
tRequestR进程请求向量
voidcha
gdatai
tk进程请求资源数据改变
i
tchkseci
ts系统安全性的检测
主要模块
voidi
putdatavoidshowdatavoidcha
gdatai
tkvoidrestoredatai
tki
tchkseci
tsi
tchkmaxi
ts
第4页共14页
f、
5算法流程图
三、调试记录与分析
调试通过程序未出错
第5页共14页
f、
四、运行结果及说明1执行结果
第6页共14页
f、
2结果分析
银行家算法就是当接收到一个系统资源的分配后找到一个安全序列,使得进程间不会发生死锁,若发生死锁则让进程等待。
第7页共14页
f、
五、课程设计总结
通过本次银行家算法实验,加深了我对银行家算法的了解,掌握了如何利用银行家算法避免死锁。实验中遇到点问题,通过查阅资料、询问老师顺利解决。通过这次的实践,使我的理论知识更加的牢固。
附r