c实现银行家算法.docx
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《c实现银行家算法.docx》由会员分享,可在线阅读,更多相关《c实现银行家算法.docx(9页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、c实现银行家算法银行家算法 银行家算法是一种最有代表性的避免死锁的算法。 要解释银行家算法,必须先解释操作系统安全状态和不安全状态。 安全状态:如果存在一个由系统中所有进程构成的安全序列P1,Pn,则系统处于安全状态。安全状态一定是没有死锁发生。 不安全状态:不存在一个安全序列。不安全状态不一定导致死锁。 那么什么是安全序列呢? 安全序列:一个进程序列P1,Pn是安全的,如果对于每一个进程Pi(1in),它以后尚需要的资源量不超过系统当前剩余资源量与所有进程Pj (j i )当前占有资源量之和。 银行家算法: 我们可以把操作系统看作是银行家,操作系统管理的资源相当于银行家管理的资金,进程向操作
2、系统请求分配资源相当于用户向银行家贷款。操作系统按照银行家制定的规则为进程分配资源,当进程首次申请资源时,要测试该进程对资源的最大需求量,如果系统现存的资源可以满足它的最大需求量则按当前的申请量分配资源,否则就推迟分配。当进程在执行中继续申请资源时,先测试该进程已占用的资源数与本次申请的资源数之和是否超过了该进程对资源的最大需求量。若超过则拒绝分配资源,若没有超过则再测试系统现存的资源能否满足该进程尚需的最大资源量,若能满足则按当前的申请量分配资源,否则也要推迟分配。 算法: n:系统中进程的总数 m:资源类总数 Available: ARRAY1.m of integer; Max: ARR
3、AY1.n,1.m of integer; Allocation: ARRAY1.n,1.m of integer; Need: ARRAY1.n,1.m of integer; Request: ARRAY1.n,1.m of integer; 符号说明: Available 可用剩余资源 Max 最大需求 Allocation 已分配资源 Need 需求资源 Request 请求资源 当进程pi提出资源申请时,系统执行下列 步骤:(“=”为赋值符号,“=”为等号) step(1)若Request=Need, goto step(2);否则错误返回 step(2)若Request=Avail
4、able, goto step(3);否则进程等待 step(3)假设系统分配了资源,则有: Available=Available-Request; Allocation=Allocation+Request; Need=Need-Request 若系统新状态是安全的,则分配完成 若系统新状态是不安全的,则恢复原状态,进程等待 为进行安全性检查,定义数据结构: Work:ARRAY1.m of integer; Finish:ARRAY1.n of Boolean; 安全性检查的步骤: step (1): Work=Available; Finish=false; step (2) 寻找满足
5、条件的i: a.Finish=false; b.Need=Work; 如果不存在,goto step(4) step(3) Work=Work+Allocation; Finish=true; goto step(2) step (4) 若对所有i,Finish=true,则系统处于安全状态,否则处于不安全状态 /* 银行家算法,操作系统概念(OS concepts Six Edition) reedit by Johnny hagen,SCAU,run at vc6.0 */ #include malloc.h #include stdio.h #include stdlib.h #defi
6、ne alloclen sizeof(struct allocation) #define maxlen sizeof(struct max) #define avalen sizeof(struct available) #define needlen sizeof(struct need) #define finilen sizeof(struct finish) #define pathlen sizeof(struct path) struct allocation int value; struct allocation *next; ; struct max int value;
7、struct max *next; ; struct available /*可用资源数*/ int value; struct available *next; ; struct need /*需求资源数*/ int value; struct need *next; ; struct path int value; struct path *next; ; struct finish int stat; struct finish *next; ; int main() int row,colum,status=0,i,j,t,temp,processtest; struct alloca
8、tion *allochead,*alloc1,*alloc2,*alloctemp; struct max *maxhead,*maxium1,*maxium2,*maxtemp; struct available *avahead,*available1,*available2,*workhead,*work1,*work2,*worktemp,*worktemp1; struct need *needhead,*need1,*need2,*needtemp; struct finish *finihead,*finish1,*finish2,*finishtemp; struct pat
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实现 银行家 算法
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内