银行家算法的实现.doc

银行家算法的实现.doc

ID:59501983

大小:23.00 KB

页数:7页

时间:2020-11-03

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

《银行家算法的实现.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、实验四银行家算法的实现1、实验目的通过编写和调试银行家算法的模拟程序以加深对避免死锁方案的理解。熟悉银行家算法的分配思想。2、实验要求设计一个银行家方案。并编写模拟程序实现之。已知系统总共的资源数、进程名、进程已分配的资源、进程运行完毕最大最资源的需求量,以书上例题为例,分析某一时刻系统的安全状态,如果安全,输出安全序列。3、算法描述银行家算法中数据结构如下:n:系统中的进程个数;m:系统中的资源类数。1)Available(m):现有资源向量。Available(j)=k表示k个未分配的j类资源2)M

2、ax(n,m):资源最大申请量矩阵。Max(i,j)=k表示第i个进程在运行过程中对第j类资源的最大申请量为k。3)Allocation(n,m):资源分配矩阵。Allocation(i,j)=k表示进程i已占有k个j类资源。4)Need(n,m):进程以后还需要的资源矩阵。Need(i,j)=k表示进程i以后还需要k个第j类资源。显然有Need[i,j]=Max[i,j]-Allocation[i,j]。5)Request(n,m):进程申请资源矩阵。Request(i,j)=k表示进程i申请k个第j

3、类资源。银行家算法思想如下:若进程i申请资源,申请资源向量为Request(i),则有如下资源分配过程:1)如果Request(i)〉Need(i),则报错返回。2)如果Request(i)〉Avaliable,则进程i进入等待资源状态,返回。3)假设进程进程i的申请已获批准,于是修改系统状态:Avaliable=Avaliable-Request(i)Allocation(i)=Allocation(i)+Request(i)Need(i)=Need(i)-Request(i)4)调用安全状态检查算法

4、。设Work(m)为临时工作向量。初始时Work=Available。令N={1,2,……n}。寻求j∈N使其满足:Need(j)<=Work,若不存在这样的j则转至3)。Work=Work+Allocation(j)N=N-{j}转至1)。如果N=空集则返回(系统安全)。如果N≠空集则返回(系统不安全)。5)若系统处于安全状态,则将进程i申请的资源分配给进程i,返回。6)若系统处于不安全状态,则不将进程i申请的资源分配给进程i,恢复原来的资源分配状态,让进程i等待。Avaliable=Avaliabl

5、e+Request(i)Allocation(i)=Allocation(i)-Request(i)Need(i)=Need(i)+Request(i)4、源程序代码#includeusingnamespacestd;#defineFalse0#defineTrue1intMax[100][100]={0};intAllocation[100][100]={0};intNeed[100][100]={0};intAvailable[100]={0};intWork[100]={0};

6、charname[100]={0};inttemp[100]={0};intS=100,P=100;intsafequeue[100]={0};intRequest[100]={0};//voidShowdata(){inti,j,k,l;cout<<"t资源分配情况"<

7、"t";}cout<

8、ame[i]<<"";}cout<

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

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

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