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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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

一、实验目的:

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

二、实验要求:

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

三、实验内容:

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);

}

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);

相关文档
最新文档