银里手算法是避免死锁的一种重要方法,用高级C语言实现银里手算法的代码及调试。
2016/7/8 12:35:31 25KB C语言 银行家算法
1
C#银里手算法(界面)
2020/7/5 8:21:19 85KB 银行家
1
操作系统课的实验(银里手算法)#include"malloc.h"  #include"stdio.h"  #include"stdlib.h"  #definealloclensizeof(structallocation)  #definemaxlensizeof(structmax)  #defineavalensizeof(structavailable)  #defineneedlensizeof(structneed)  #definefinilensizeof(structfinish)  #definepathlensizeof(structpath)  structallocation  {  intvalue;  structallocation*next;  };  structmax  {  intvalue;  structmax*next;  };  structavailable/*可用资源数*/  {  intvalue;  structavailable*next;  };  structneed/*需求资源数*/  {  intvalue;  structneed*next;  };  structpath  {  intvalue;  structpath*next;  };  structfinish  {  intstat;  structfinish*next;  };  intmain()  {  introw,colum,status=0,i,j,t,temp,processtest;  structallocation*allochead,*alloc1,*alloc2,*alloctemp;  structmax*maxhead,*maxium1,*maxium2,*maxtemp;  structavailable*avahead,*available1,*available2,*workhead,*work1,*work2,*worktemp,*worktemp1;  structneed*needhead,*need1,*need2,*needtemp;  structfinish*finihead,*finish1,*finish2,*finishtemp;  structpath*pathhead,*path1,*path2;  printf("\n请输入系统资源的种类数:");  scanf("%d",&colum);  printf("请输入现时内存中的进程数:");  scanf("%d",&row);  printf("请输入已分配资源矩阵:\n");  for(i=0;inext=alloc2->next=NULL;  scanf("%d",&allochead->value);  status++;  }  else  {  alloc2=(structallocation*)malloc(alloclen);  scanf("%d,%d",&alloc2->value);  if(status==1)  {  allochead->next=alloc2;  status++;  }  alloc1->next=alloc2;  alloc1=alloc2;  }  }  }  alloc2->next=NULL;  status=0;  printf("请输入最大需求矩阵:\n");  for(i=0;inext=maxium2->next=NULL;  scanf("%d",&maxium1->value);  status++;  }  else  {  maxium2=(structmax*)malloc(maxlen);  scanf("%d,%d",&maxium2->value);  if(status==1)  {  maxhead->next=maxium2;  status++;  }  maxium1->next=maxium2;  maxium1=maxium2;  }  }  }  maxium2->next=NULL;  status=0;  printf("请输入现时系统剩余的资源矩阵:\n");  for(j=0;jnext=available2->next=NULL;  work1->next=work2->next=NULL;  scanf("%d",&available1->value);  work1->value=available1->value;  status++;  }  else  {  available2=(structavailable*)malloc(avalen);  work2=(structavailable*)malloc(avalen);  scanf("%d,%d",&available2->value);  work2->value=available2->value;  if(status==1)  {  avahead->next=available2;  workhead->next=work2;  status++;  }  available1->next=available2;  available1=available2;  work1->next=work2;  work1=work2;  }  }  available2->next=NULL;  work2->next=NULL;  status=0;  alloctemp=allochead;  maxtemp=maxhead;  for(i=0;inext=need2->next=NULL;  need1->value=maxtemp->value-alloctemp->value;  status++;  }  else  {  need2=(structneed*)malloc(needlen);  need2->value=(maxtemp->value)-(alloctemp->value);  if(status==1)  {  needhead->next=need2;  status++;  }  need1->next=need2;  need1=need2;  }  maxtemp=maxtemp->next;  alloctemp=alloctemp->next;  }  need2->next=NULL;  status=0;  for(i=0;inext=finish2->next=NULL;  finish1->stat=0;  status++;  }  else  {  finish2=(structfinish*)malloc(finilen);  finish2->stat=0;  if(status==1)  {  finihead->next=finish2;  status++;  }  finish1->next=finish2;  finish1=finish2;  }  }  finish2->next=NULL;/*Initializationcompleated*/  status=0;  processtest=0;  for(temp=0;tempstat==0)  {  for(j=0;jnext,worktemp=worktemp->next)  if(needtemp->valuevalue)  processtest++;  if(processtest==colum)  {  for(j=0;jvalue+=alloctemp->value;  worktemp1=worktemp1->next;  alloctemp=alloctemp->next;  }  if(status==0)  {  pathhead=path1=path2=(structpath*)malloc(pathlen);  path1->next=path2->next=NULL;  path1->value=i;  status++;  }  else  {  path2=(structpath*)malloc(pathlen);  path2->value=i;  if(status==1)  {  pathhead->next=path2;  status++;  }  path1->next=path2;  path1=path2;  }  finishtemp->stat=1;  }  else  {  for(t=0;tnext;  finishtemp->stat=0;  }  }  else  for(t=0;tnext;  alloctemp=alloctemp->next;  }  processtest=0;  worktemp=workhead;  finishtemp=finishtemp->next;  }  }  path2->next=NULL;  finishtemp=finihead;  for(temp=0;tempstat==0)  {  printf("\n系统处于非安全状态!\n");  exit(0);  }  finishtemp=finishtemp->next;  }  printf("\n系统处于安全状态.\n");  printf("\n安全序列为:\n");  do  {  printf("p%d",pathhead->value);  }  while(pathhead=pathhead->next);  printf("\n");  return0;  }#include"string.h"#include#include#defineM5#defineN3#defineFALSE0#defineTRUE1/*M个进程对N类资源最大资源需求量*/intMAX[M][N]={{7,5,3},{3,2,2},{9,0,2},{2,2,2},{4,3,3}};/*系统可用资源数*/intAVAILABLE[N]={10,5,7};/*M个进程对N类资源最大资源需求量*/intALLOCATION[M][N]={{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}};/*M个进程已经得到N类资源的资源量*/intNEED[M][N]={{7,5,3},{3,2,2},{9,0,2},{2,2,2},{4,3,3}};/*M个进程还需要N类资源的资源量*/intRequest[N]={0,0,0};voidmain(){inti=0,j=0;charflag='Y';voidshowdata();voidchangdata(int);voidrstordata(int);intchkerr(int);showdata();while(flag=='Y'||flag=='y'){i=-1;while(i=M){printf("请输入需申请资源的进程号(从0到");printf("%d",M-1);printf(",否则重输入!):");scanf("%d",&i);if(i=M)printf("输入的进程号不存在,重新输入!\n");}printf("请输入进程");printf("%d",i);printf("申请的资源数\n");for(j=0;jNEED[i][j]){printf("进程");printf("%d",i);printf("申请的资源数大于进程");printf("%d",i);printf("还需要");printf("%d",j);printf("类资源的资源量!申请不合理,出错!请重新选择!\n");/*printf("申请不合理,出错!请重新选择!\n");*/flag='N';break;}else{if(Request[j]>AVAILABLE[j]){printf("进程");printf("%d",i);printf("申请的资源数大于系统可用");printf("%d",j);printf("类资源的资源量!申请不合理,出错!请重新选择!\n");/*printf("申请不合理,出错!请重新选择!\n");*/flag='N';break;}}}if(flag=='Y'||flag=='y'){changdata(i);if(chkerr(i)){rstordata(i);showdata();}elseshowdata();}elseshowdata();printf("\n");printf("是否继续银里手算法演示,按'Y'或'y'键继续,按'N'或'n'键退出演示:");scanf("%c",&flag);}}voidshowdata(){inti,j;printf("系统可用的资源数为:\n");printf("");for(j=0;j");}printf("\n");return0;}
2015/11/20 3:54:43 883KB 算法 银行家
1
操作系统-银里手算法课设报告及源码操作系统-银里手算法课设报告及源码操作系统-银里手算法课设报告及源码
1
QT超市收银系统可直接运转给大家一个参考
2018/9/20 1:06:09 6.88MB QT 超市收银系统
1
银里手算法c++完整实现,包括项目工程所有文件。
另可参考博客:https://blog.csdn.net/lingpy/article/details/79915768#commentsedit
2015/2/17 9:20:13 250KB 银行家算法
1
使用java完成的银里手算法,可以帮助深刻学习银里手算法
2020/7/5 8:20:18 2KB 操作系统
1
在深入研究中小餐饮企业工作流程的基础上,分析制约餐饮企业工作效率的各种因素,发现影响效率的主要因素是普遍使用手工登记菜谱的现象,本系统运用计算机系统来实现餐饮企业工作流的信息化管理,采用面向对象的开发方法以及C#语言,依靠Visualstudio2010作为开发工具,使用SqlServer2005网络数据库存储数据。
实现了客户点餐、厨师配餐、收银管理、系统设置四大功能,处理餐饮企业中客户点餐速度慢、服务员登记不清晰、厨师配餐漏配、菜谱更新不及时且不直观、会员管理混乱的现象。
2017/7/8 7:02:44 4.36MB 餐厅点餐;C#
1
实验中初次观察到了吸附于银胶体颗粒表面的邻菲啰啉(O-phenanthroline)和2,2’-联吡啶(2,2’-bipyridine)分子及其亚铁铬离子的表面增强喇曼光谱(SERS),为吡啶SER谱中200cm~(-1)处喇曼峰是N—Ag键振动的观点提供了实验依据.对加入亚铁离子前后的SER谱进行了比较,结合其他实验结果(电镜照片、透射光谱)对所发现的实验现象进行了分析和解释.
2018/10/10 5:09:22 5.69MB 论文
1
使用图形用户界面。
由收银员输入顾客的会员卡卡号(若有卡)、所购商品的货号等。
从数据库中取出有关价格信息,再把这些信息前往给收银台。
同时把该收银台的销售总量和有关种类商品的剩余量以及该持卡顾客的消费情况交数据库存储以供查询。
对没有卡的消费情况不记录该顾客的消费情况等个人信息。
如果一个未持卡顾客一次购物满200元,可为其发放一张会员卡,以后在该商场购物可向9折优惠。
2019/10/26 6:38:40 19KB java
1
共 217 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡