搜索研究论文-用c实现进程安全序列搜索算法

搜索研究论文-用c实现进程安全序列搜索算法

ID:21596730

大小:71.06 KB

页数:5页

时间:2018-10-23

搜索研究论文-用c实现进程安全序列搜索算法_第1页
搜索研究论文-用c实现进程安全序列搜索算法_第2页
搜索研究论文-用c实现进程安全序列搜索算法_第3页
搜索研究论文-用c实现进程安全序列搜索算法_第4页
搜索研究论文-用c实现进程安全序列搜索算法_第5页
资源描述:

《搜索研究论文-用c实现进程安全序列搜索算法》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、搜索研究论文-用C++实现进程安全序列搜索算法用C++实现进程安全序列搜索算法在多道程序系统中,可通过多个进程的并发执行来改善系统的资源利用率,提高系统的处理能力。为了避免与时间有关的错误,人们建立了各种同步机构。但是有这样一种种与时间有关的错误需要进一步研究和探讨,这就是死锁问题。所谓死锁是指两个或两个以上进程处于无休止地等待永远不成立的条件的状态。Dijkstra的银行家算法是最有代表性的避免死锁算法。允许进程动态地申请资源,系统在进行资源分配之前,先计算资源分配的安全性。若此次分配不会导致系统进入

2、不安全状态,便将资源分配给进程;否则,进程进入等待状态。所谓安全状态,是指系统能按某种顺序来为每个进程分配其所需资源,直至最大需求,使每个进程都可顺序完成。我们称序列为安全序列。若系统不存在这样一个安全序列,则称系统处于不安全状态。1算法的设计与流程算法流程图如图1所示。算法的数据结构1)可利用资源向量Available,它是一个最多含有100个元素的数组,其中的每一个元素代表一类可利用的资源的数目,其初始值是系统中所配置的该类全部可用资源数目。其数值随该类资源的分配和回收而动态地改变。如果Availa

3、ble=k,标是系统中现有j类资源k个。2)最大需求矩阵Max,这是一个nXm的矩阵,它定义了系统中n个进程中的每一个进程对m类资源的最大需求。如果Max=k,表示进程i需要j类资源的最大数目为k。3)分配矩阵Aliocation,这也是一个nXm的矩阵,它定义了系统中的每类资源当前一分配到每一个进程的资源数。如果Allocation=k,表示进程i当前已经分到j类资源的数目为k。AUocationi表示进程i的分配向量,有矩阵Allocation的第i行构成。4)需求矩阵Need,这还是一个nXm的矩

4、阵,用以表示每个进程还需要的各类资源的数目。如果Need=k,表示进程i还需要j类资源k个,才能完成其任务。Needi表示进程i的需求向量,由矩阵Need的第i行构成。5)上述三个矩阵间存在关系:Need=Max-Allocation;安全性检测1)如果RequestiSNeed,则转向步骤2;否则,认为出错,因为它所请求的资源数已超过它当前的最大需求量。2)如果Requesti^Available,则转向步骤3;否则,表示系统中尚无足够的资源满足i的申请,i必须等待。3)系统试探性地把资源分配给进程i

5、,并修改下面数据结构中的数值:Available=Available-RequestiAllocationi=Allocationi+RequestiNeedi=Needi-Requesti4)系统执行安全性算法,检查此次资源分配后,系统是否处于安全状态。如果安全才正式将资源分配给进程i,以完成本次分配;否则,将试探分配作废,恢复原来的资源分配状态,让进程i等待。2算法的实现用C++语言编写主体程序如下:#include#include^include#defineFalseO#defineTruelu

6、singnamespacestd;intMax[100][100]={0};//各进程所需各类资源的最大需求intAvaliable[100]={0}://系统可用资源charname[l00]={0};//资源的名称intAllocation[100][100]:{0};//系统己分配资源intNeed[100][100]={0}://还需要资源intRequest[100]={0}://请求资源向量inttemp[100]:{0}://存放安全序列intWork[100]={0}://存放系统可提供

7、资源intM=100://进程的最大数为intN=100;//资源的最大数为intsafe0//安全性算法{inti,k=0,m,apply,Finish[l00]={0};intj:intflag=0;Work[0]=Avaliable[0];Work[l]=Avaliable[l];Work[2]=Avaliable[2]:for(i=0;i〉i;//输入须申请的资源号cout〉Request[j]://输入需要申请的资源}for(j=0;jNeed[i][j])//判断申请是否大于需求,若大于则出

8、错{coutAvaliable[j])//判断申请是否大于当前资源,若大于则出错{cout3结束语该文通过分析银行家算法的核心思想,提出了一种在系统某一时刻进程安全序列的搜索算法,并提供了算法的流程图,结合面向对象程序设计语言的特点,利用C++语言实现了该算法。通过分析安全序列,可以对系统资源的合理分配与进程调度的优化提供支持。

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

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

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