资源描述:
《实验6 银行家算法避免死锁》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验六银行家算法避免死锁一.实验目的1、加深对死锁概念的理解2、能够利用银行家算法有效地避免死锁的发生、或检测死锁的存在二.实验内容及步骤本实验在winTC环境下实现,winTC安装程序在ftp上,请自行安装。1.利用银行家算法写一个程序,判定系统的安全性。已知某系统有5个进程P0,P1,P2,P3,P4,三类资源A、B、C。死锁检测程序工作时各进程对资源的需求和占用情况如下表,当前可用资源向量available=(0,0,0)。资源请求进程已占有资源AllocationABC尚需资源NeedABCP0 0 1 10 0 2P120
2、0222P2303000P3211100P4002002#definem3#definen5main(){inttest(intav[],intned[],all[]);intavailable[m]={0,0,0},need[n][m];intallocation[n][m]={{0,1,0},{2,0,0},{3,0,3},{2,1,1},{0,0,2}};//已占有资源inti,j,g=1;intfinish[n]={0,0,0,0,0};//已完成的进程clrscr();//清屏printf(“pleaseinputtheneedresou
3、rcedata”);for(i=0;i4、otsafestate”);}三.实验讨论 谈谈你今天上实验课的收获,存在的问题或疑问。如果有实验内容以外的发现也可谈谈。#include#definem3#definen5main(){inttest(intav[],intned[],intall[]);intavailable[m]={0,0,0},need[n][m];intallocation[n][m]={{0,1,0},{2,0,0},{3,0,3},{2,1,1},{0,0,2}};inti,j,g=1;intfinish[n]={0,0,0,0,0};//clrs
5、cr();printf("pleaseinputtheneedresourcedata");for(i=0;i6、"notsafestate");}inttest(intav,intned[n],intall[n])//安全性算法{intFinish=0;intwork;work=av;if(Finish==0&&ned[n]<=work){work=work+all[n];//变分配数return1;}return-1;}#include#definem3#definen5main(){inttest(intav[],intned[],intall[]);intavailable[m]={0,0,0},need[n][m];intalloc
7、ation[n][m]={{0,1,0},{2,0,0},{3,0,3},{2,1,1},{0,0,2}};inti,j,g=1;intfinish[n]={0,0,0,0,0};//clrscr();printf("pleaseinputtheneedresourcedata");for(i=0;i8、)finish[i]=1;j++;}while(j