教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 基础教育 >

操作系统课程设计-银行家算法(流程图 源代码 设计报告)

来源:网络收集 时间:2026-09-13
导读: 操作系统课程设计-银行家算法(流程图+源代码+设计报告) 一、实验目的: 熟悉银行家算法,理解系统产生死锁的原因及避免死锁的方法,加深记意。 二、实验要求: 用高级语言编写和调试一个描述银行家算法的程序。 三、实验内容: 1、设计一个结构体,用于描述

操作系统课程设计-银行家算法(流程图+源代码+设计报告)

一、实验目的:

熟悉银行家算法,理解系统产生死锁的原因及避免死锁的方法,加深记意。

二、实验要求:

用高级语言编写和调试一个描述银行家算法的程序。

三、实验内容:

1、设计一个结构体,用于描述每个进程对资源的要求分配情况。包括:进程名——name[5],要求资源数目——command[m](m类资源),还需要资源数目——need[m],已分配资源数目——allo[m]。

2、编写三个算法,分别用以完成:①申请资源;

②显示资源;③释放资源。(动态完成)

四、程序流程图

五、源程序:最新版本:bk5.c

/*bk2.c::可以自定义进程及资源数目,可选择读文件或创建新文件,但不超过10,5*/

/*可修改# define NP 10*/

/* # define NS 5 */ /*资源种类*/

/*bk3.c::可以继续分配资源(〉2)*/

/*bk4.c::可保存分析结果*/

/*bk5.c::除以上功能外,对暂时不能分配的可以进行另外一次尝试,并恢复已分配的资源*/

/*

四、程序流程图:

五、源程序:最新版本:bk5.c

/*bk2.c::可以自定义进程及资源数目,可选择读文件或创建新文件,但不超过10,5*/

/*可修改#define NP10*/

/* #define NS5*//*资源种类*/

/*bk3.c::可以继续分配资源(〉2)*/

/*bk4.c::可保存分析结果*/

/*bk5.c::除以上功能外,对暂时不能分配的可以进行另外一次尝试,并恢复已分配的资源*/ #include "string.h"

#include "stdio.h"

#include"dos.h"

#include"conio.h"

#define MOVEIN1

#define GUIYUE2

#define ACC3

#define OK1

#define ERROR0

#define MAXSH7

#define MAXSHL10

#define MAXINPUT50

#define maxsize 100

int act;

int ip=0;

int line=0; /*line为要写的行号,全局变量*/

int writeok;

int right;

char wel[30]={"Welcome To Use An_Li System"};

char ente[76]={" 警告:未经作者同意不得随意复制更改!"};

char rights[40]={"Copyright (c)2002"};

struct date today;

sssssssssssss;

ttttttttttttt

{int data[maxsize];

int top;

}stack;

int emptystack(stack*S)

{if(S->top==48&&S->data[S->top]==35)return(1); /*35is'#'*/

else return(0);

}

int push(stack*S,int x)

{if(S->top>=maxsize-1)return(-1);

else{S->top++;

S->data[S->top]=x;

return(0);

}

}

int gettop(stack*S)

{return S->data[S->top];

}

int pop(stack*S)

{if(emptystack(S)){

printf("the stack is empty\n");

exit(1);}

else S->top--;

return S->data[S->top+1];

}

void initstack(stack*S)

{int i;

S->top=0;S->data[S->top]=35;

}

/*****模拟打字机的效果*********/

delay_fun()

{

int i;

void music();

for(i=0;;i++)

{

if(wel!='\0')

{

delay(1000);

textcolor(YELLOW);

gotoxy(26+i,8);

cprintf("%c",wel);

printf("谢谢");

printf("网络");

music(1,60);

}

else break;

}

delay(500000);

for(i=0;;i++)

{

if(ente!='\0')

{

delay(1000);

textcolor(RED);/*显示警告及版权*/

gotoxy(2+i,11);

cprintf("%c",ente);

music(1,60);

}

else break;

}

delay(40000);

for(i=0;;i++)

{

if(rights!='\0')

{

delay(1000);

textcolor(YELLOW);

gotoxy(30+i,14);

cprintf("%c",rights);

music(1,60);

}

else

break;

}

getch();

}

/*********登陆后的效果**********/ logined()

{int i;

clrscr();

gotoxy(28,10);

textcolor(YELLOW);

cprintf("程序正在载入请稍候....."); gotoxy(35,12);

for(i=0;i<=50;i++)

{

gotoxy(40,12);

delay(8000);

cprintf("%02d%已完成",i*2);

gotoxy(i+15,13);

cprintf("\n");

cprintf("|");

}

main0();

}

/*********对PC扬声器操作的函数****/

void music(int loop,int f)/*f为频率*/ {int i;

for(i=0;i<30*loop;i++)

{

sound(f*20);

delay(200);}

nosound();

}

int analys(int s,int a)

{int hh,pos;

switch(a)

{case(int)'i':hh=0;break;

case(int)'+':hh=1;break;

case(int)'*':hh=2;break;

case(int)'(':hh=3;break;

case(int)')':hh=4;break;

case(int)'#':hh=5;break;

case(int)'E':hh=6;break;

case(int)'T':hh=7;break;

case(int)'F':hh=8;break;

default:{printf("\n analys()分析发现不该有的字符%c!(位置:%d)",a,ip+1); writeerror('0',"\n............分析出现错误!!!");

writeerror(a,"\n 错误类型: 不该有字符");

printf("谢谢");

printf("网");

return ERROR;

}

}

pos=(s-48)*10+hh;

switch(pos)

{case3:

case43:

case63:

case73:act=4;return MOVEIN;

case0:

case40:

case60:

case70:act=5;return MOVEIN;

case11:

case81:act=6;return MOVEIN;

case92:

case22:act=7;return MOVEIN;

case84:act=11;return MOVEIN;

/*-------------------------------------------*/

case91:

case94:

case95:

act=1;return GUIYUE;

case21:

case24:

case25:

act=2;return GUIYUE;

case101:

case102:

case104:

case105:act=3;return GUIYUE;

case31:

case32:

case34:

case35:act=4;return GUIYUE;

case111:

case112:

case114:

case115:act=5;return GUIYUE;

case51:

case52:

case54:

case55:act=6;return GUIYUE;

/*+++++++++++++++++*/

case15:return ACC;

/*******************************/

case6:return1;

case7:

case47:return2;

case8:

case48:

case68:return3;

case46:return8;

case67:return9;

case78:return10;

default:{if(a=='#')printf("");

else printf("\n analys() 分析发现字符%c 不是所期望的!(位置:%d)",a,ip+1);

writeerror(' …… 此处隐藏:12278字,全部文档内容请下载后查看。喜欢就下载吧 ……

操作系统课程设计-银行家算法(流程图 源代码 设计报告).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/339222.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)