c实现银行家算法.docx
《c实现银行家算法.docx》由会员分享,可在线阅读,更多相关《c实现银行家算法.docx(7页珍藏版)》请在第壹文秘上搜索。
1、钺行家算法银行家算法是一种最有代表性的防止死锁的算法.要好糅银行家算法,必须先解择操作系统平安状态和不平安状态.平安状态;如果存在一个由系统中所有进程构成的平安序列P1.,,Pn,则系统处于平安状态。平安状态一定是没有死镇发生。不平安状态:不存在一个平安序列.不平安状态不一定导致死桢.那么什么是平安序列呢?平安序列:一个进程序列IP1.,Pnj是平安的,如果对于每一个进程Pi(IWiWn),它以后尚需要的资源砧不超过系统当前剩余资源乖与所有进程Pj(ji)当前占有资源址之和,银行家算法:我们可以把操作系统看作是极行家,操作系统管理的资源相当于银行家管理的资金,进程向操作系统请求分配资源相当于用
2、户向银行家贷款.操作系统按照银行家制定的规则为进程分配资源当进程首次申请资源时,要川试该进程对资源的最大需求属,如果系统现存的资源可以满足它的最大需求家则按当前的申请量分配资源,否则就推迟分配。当进程在执行中继续巾诂资源时,先测试该迸程已占用的资源数与木次申请的资源数之和是否超过了该进程对资源的最大需求量,若超过则拒绝分配资源,若没有超过则再测试系统现存的资源能否满足该进程尚需的最大资源量,若能满足则按当前的申请城分配资源,否则也要推迟分配.算法:n:系统中进程的总数m:资源类总数Avai1.ab1.e:ARRY1.ofinteger:Max:ARRAY1.r,1.inofinteger;A1
3、.1.ocation:ARRAY1.n,1.tnofinteger;Need:ARRAY1.n,1.ofinteger;Request:AKRY1.n,1.mJofinteger:符号说明:Avai1.ab1.eUr用剩余资源Max豉大需求A1.1.ocation已分配资源Need需求资淘Request请求资源当进程Pi提出资源申请时,系统执行以下步臊:(=为赋值符号,=为等号)step(1)若ReqUeSt:否则进程等待step(3)假设系统分配了资源,则有:Avai1.ab1.e=AvaiIab1.e-Request;A1.1.ocation=A1.Iocation+Rcques1.:Ne
4、ed=Need-Request若系统新状态是平安的.则分配完成若系统新状态是不平安的,则恢复原状态,进程等待为进行平安性检性,定义数据结构:WorkiARRAYt1.11Jofinteer:FinishiARRAYt1.11ofBoo1.ean:平安性检住的步骤:step:Work=Avai1.ab1.e;FiniSh=fa1.se:step(2)寻找满足条件的i:a.Finish=fa1.se;b.NeecK=Work:如果不存在gotostep(4)step(3)Work=IorkAI1.ocation;Finish=Iruc;otostcp(2)step(4)若对所有KPinishYni
5、3则系统处于平安状态否则处于不平安状态/*银行家算法操作系统概念(OSconceptsSixEdition)reeditbyJohnnyhagen.SCA1.runatvc6.0*/inc1.ude1.1.oc.h*Sinc1.ude*stdio.h*Uinc1.ude*std1.ib.h*Mefinea1.Ioc1.ensizeof(structa1.1.ocation)WefinemaxIensizeof(structmax)sizeof(structavai1.ab1.e)SdefineneedIensizeof(structneed)RdefinefiniIenSiZeOf(StnIe
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实现 银行家 算法
