银行家算法实验报告.doc

银行家算法实验报告.doc

ID:49545915

大小:36.00 KB

页数:7页

时间:2020-03-02

银行家算法实验报告.doc_第1页
银行家算法实验报告.doc_第2页
银行家算法实验报告.doc_第3页
银行家算法实验报告.doc_第4页
银行家算法实验报告.doc_第5页
资源描述:

《银行家算法实验报告.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、银行家算法实验报告一、目的和要求银行家算法是避免死锁的一种重要方法,本实验要求用高级语言编写和调试一个简单的银行家算法程序。本实验可以加深对银行家算法的步骤和相关数据结构用法的更好理解,加深了解有关资源申请、避免死锁等概念,并体会和了解死锁和避免死锁的具体实施方法。二、实验环境TurboC2.0/3.0或VC++6.0三、实验内容用C++语言编写一个简单的银行家算法模拟程序,用银行家算法实现资源分配。程序能模拟多个进程共享多种资源的情形。进程可动态地申请资源,系统按各进程的申请动态地分配资源。要求程序具有显示和打印各进程的某一时刻的资源分配表和安全序列;显示和打印各进程

2、依次要求申请的资源数量以及为某进程分配资源后的有关资源数据的情况。四、银行家算法的思路:1),进程一开始向系统提出最大需求量.2),进程每次提出新的需求(分期贷款)都统计是否超出它事先提出的最大需求量.3),若正常,则判断该进程所需剩余剩余量(包括本次申请)是否超出系统所掌握的剩余资源量,若不超出,则分配,否则等待。五、实验说明实验中进程的数量、资源的种类以及每种资源的总量Total[j]最好允许动态指定。初始时每个进程运行过程中的最大资源需求量Max[i,j]和系统已分配给该进程的资源量Allocation[i,j]均为已知(这些数值可以在程序运行时动态输入),而算法

3、中其他数据结构的值(包括Need[i,j]、Available[j])则需要由程序根据已知量的值计算产生。1.数据结构假设有n个进程m类资源,则有如下数据结构:MAX[n*m]n个进程对m类资源的最大需求量AVAILABLE[m]系统可用资源数ALLOCATION[n*m]n个进程已经得到m类资源的资源量NEED[n*m]n个进程还需要m类资源的资源量2.银行家算法设进程I提出请求Request[m],则银行家算法按如下规则进行判断。(1)如果Request[m]<=NEED[I,m],则转(2);否则,出错。(2)如果Request[m]<=AVAILABLE,则转(

4、3);否则,出错。(3)系统试探分配资源,修改相关数据:AVAILABLE=AVAILABLE-REQUESTALLOCATION=ALLOCATION+REQUESTNEED=NEED-REQUEST(4)系统执行安全性检查,如安全,则分配成立;否则试探险性分配作废,系统恢复原状,进程等待。3.安全性检查(1)设置两个工作向量WORK=AVAILABLE;FINISH[n]=FALSE(2)从进程集合中找到一个满足下述条件的进程,FINISH[i]=FALSENEED<=WORK如找到,执行(3);否则,执行(4)(3)设进程获得资源,可顺利执行,直至完成,从而释放资

5、源。WORK=WORK+ALLOCATIONFINISH=TRUEGOTO2(4)如所有的进程Finish[n]=true,则表示安全;否则系统不安全。六、源程序:#definen5#definem3main(){/*voidinput(int*av,int**al,int**need);*//*intread_req(int*request,int*k);*//*intsecurity(int*av,int**al,int**need);*/intrequest[m],Available[m],Alloc[n][m],Need[n][m];inti,j,k,t=0;i

6、nput(Available,Alloc,Need);while(1){t=0;if(read_req(request,&k))break;for(i=0;i

7、=Available[i]-request[i];Alloc[k-1][i]=Alloc[k-1][i]+request[i];Need[k-1][i]=Need[k-1][i]-request[i];}if(security(Available,Alloc,Need))printf("completefengpei!");else{for(i=0;i

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。