操作系统课程设计报告——银行家算法
更新时间:2024-06-21 23:34:01 阅读量: 综合文库 文档下载
中原工学院信息商务学院 操作系统课程设计报告
操 作 系 统 课 程 设 计
报 告
课程设计名称:银行家算法的模拟实现 专 业:计算机科与技术(软件工程方向)
班 级:软件***班 学 号:*** *
学生 姓名:锦超 9817 指导 教师:杨**
2010 年 6 月 26 日星期六
中原工学院信息商务学院 操作系统课程设计报告 目录 一、实验目的…………………………………………………………………2 二、实验内容…………………………………………………………………2 三、实验步骤…………………………………………………………………3 (1) 需求分析…………………………………………………………………….3 (2) 概要设计…………………………………………………………………….3 (3) 详细设计…………………………………………………………………….3 (4) 调试分析……………………………………………………………………11 (5) 测试结果……………………………………………………………………11 (6)使用说明:………………………………………………………………….15 四、实验总结…………………………………………………………………15 五、附录:程序清单………………………………………………………15 六、参考资料………………………………………………………………….26 - 1 -
中原工学院信息商务学院 操作系统课程设计报告 银行家算法的模拟实现 一、 实验目的
( 1)了解进程产生死锁的原因,了解为什么要进行死锁的避免。
(2)掌握银行家算法的数据结构,了解算法的执行过程,加深对银行家算法的 理解。 二、 实验内容
编制银行家算法通用程序 ,并检测所给状态的系统安全性 。 ( 1)银行家算法中的数据结构 :
可利用资源向量 Available。这是一个含有 m 个元素的数组 ,其中的 每一个元素代表一类可利用的资源数目 ,其初始值是系统中所配置的该类 全部可用资源的数目 ,其数值随该类资源的分配和回收而动态地改变 。Available[j]=K,则表示系统中现有 Rj 类资源 K 个 。
最大需求矩阵 Max 。这是一个 n*m 的矩阵 ,它定义了系统中 n 个进程 中的每一个进程对 m 类资源的最大需求 。如果 Max[i,j]=K,则表示进程 i 需要 Rj 类资源的最大数目为 K。
分配矩阵 Allocation。这也是一个 n*m 的矩阵 ,它定义了系统中每一 类资源 当前已分配给没一进程的资源数 。如果 Allocation[i ,j]=K ,则 表示 进程 i 当前已分得 Rj 类资源的数目为 K。
需求矩阵 Need。这也是一个 n*m 的矩阵 ,用以表示每一个进程尚需的 各类资源数 。如果 Need[i,j]=K,则表示进程 i 还需要 Rj 类资源 K 个 ,方 能完成其任务 。 上述三个矩阵存在如下关系 :
Need[i,j]= Max[i,j]- Allocation[i,j] 2)银行家算法
设 Request[i] 是进程 Pi 的请求向量 ,如果 Request[i ,j]=K,表示 进程 Pi 需要 K 个 Rj 类型的资源 。当 Pi 发出资源请求后 ,系统按下述步 骤进行检查 :
如果 Request[i ,j]<= Need[i,j] ,便转向步骤 2;否则认为出错 , 因为它所需要的资源数已超过它所宣布的最大值 。
- 2 -
中原工学院信息商务学院 操作系统课程设计报告 二、 实验步骤 (1)需求分析 编写银行家算法通用程序 ,并检测所给状态的系统安全性 ,可利用资 源向量 Available 。这是一个含有 N 个元素的数组 ,其中的每一个元素代 表一类可利用的资源数 ,其初始值是系统中所配置的该类全部可用资源的 数目 ,其数值随该类资源的分配和回收而动态地改变 。 最大需求矩阵 Max 这是一个 M*N 的矩阵 ,它定义了系统中 M 个进程中 的每一个进程对 N 类资源的最大需求 。如果 Max[i][j]=K ,则表示进程 i 需要 Rj 类资源的最大数目为 K。 分配矩阵 Allocation。这也是一个 n*m 的矩阵 ,它定义了系统中每一 类资源 当前已分配给没一进程的资源数 。如果 Allocation[i][j]=K ,则 表示 进程 i 当前已分得 Rj 类资源的数目为 K。 需求矩阵 Need。这也是一个 M*N 的矩阵 ,用以表示每一个进程尚需的 各类资源数 。如果 Need[i][j]= Max[i][j]- Allocation[i][j],则表示 i 个进程对 j 类资源需求量 ,方能完成其任务 。 设 Request[i] 是进程 Pi 的请求向量 ,如果 Request[i][j]=K,表示 进程 Pi 需要 K 个 Rj 类型的资源 。当 Pi 发出资源请求后 ,系统按下述步 骤进行检查 : 如果 Request[i][j]<= Need[i][j],便转向步骤 2;否则认为出错 , 因为它所需要的资源数已超过它所宣布的最大值 ,不能进行资源分配 。 (2)概要设计 从主函数开始,通过调用函数 system(\改变字体以颜色,密码函数 mima( ),进入银行家算法系统,通过调用 SLEEP()函数暂缓进入系统时间并清 屏,接着使用 while 循环语句,在循环语句中首先调用 version()显示主菜单, 选择菜单项目,调用函数 system(\清理屏幕,最后使用 switch 语句分别 调用函数:1、初始化可用资源和进程并检查安全性函数 init();2、增加资源, 并 检 测 安 全 性 函 数 addresources();3 、 删 除 资 源 , 并 检 测 安 全 性 函 数 delresources(); 4、修改资源,并检测安全性函数 changeresources(); 5、分 配 资 源 , 并 检 测 安 全 性 函 数 share();6 、 增 加 进 程 , 并 检 测 安 全 性 函 数 addprocess();7、删除进程,并检测安全性函数 delprocess() 0、退出系统系统 函数 exit(0)。 (3)详细设计 1、此程序调用函数所用的头文件和全局变量 #include
- 3 -
中原工学院信息商务学院 操作系统课程设计报告 #include
#include
int Max[100][100]={0};//各进程所需各类资源的最大需求 int Avaliable[100]={0};//系统可用资源 char name[100]={0};//资源的名称 int Allocation[100][100]={0};//系统已分配资源 int Need[100][100]={0};//还需要资源 int Request[100]={0};//请求资源向量 int temp[100]={0};//存放安全序列 int Work[100]={0};//存放系统可提供资源 int M=100;//进程的最大数为 100 int N=100;//资源的最大数为 100 2,休眠函数 SLEEP()用于延缓进入系统时间 void SLEEP()
{ int i; for (i=10;i>=0;i--) { cout< cout<<\\cout<<\\cout<<\\cout<<\\cout<<\\cout<<\\☆★\★☆ \3,显示可用资源和各个进程资源非配情况的函数 showdata() void showdata()//显示资源矩阵 {int i,j; cout<<\系统目前可用的资源[Avaliable]:\ for(i=0;i - 4 - 中原工学院信息商务学院 操作系统课程设计报告 cout<<\进程名\for(j=0;j<3;j++){for(i=0;i cout< 中原工学院信息商务学院 操作系统课程设计报告 cout<<\请输入要求分配的资源进程号(0-\ cin>>i;//输入须申请的资源号 cout<<\请输入进程 P \申请的资源:\for(j=0;j for(int i=0;i for(i=0;i for(i=0;i 中原工学院信息商务学院 操作系统课程设计报告 if(i>=M) cout<<\该进程名称不存在,请重新输入:\for(int m=0;m { Avaliable[i]= Avaliable[i]+Allocation[i][m];//将删除的进程已分配的资源存入可 用资源中去 } for(j=i;j Allocation[j][m]= Allocation[j+1][m]; Need[j][m]= Need[j+1][m];}} M=M-1;showdata();safe();} 10,修改资源数量,并检测安全性 changeresources() void changeresources()//修改资源函数 cout<<\系统目前可用的资源[Avaliable]:\for(int i=0;i 中原工学院信息商务学院 操作系统课程设计报告 cout<<\┃ 6: 增加进程,并检测安全性 ┃\cout<<\┠───────────────────────┨\cout<<\┃ 7: 删除进程,并检测安全性 ┃\cout<<\┠───────────────────────┨\cout<<\┃ 0: 退出系统系统 ┃\cout<<\┗━━━━━━━━━━━━━━━━━━━━━━━┛\cout< 13,初始化资源种类和大小、进程,并检测安函数 init() void init()//初始化进程,分配资源 并检测安全性 {int i,j,number,m,n,flag;char Name; cout<<\请首先输入系统可供资源种类的数量:\for(i=0;i if(flag) cout<<\已分配的资源大于最大需求量,请重新输入!\\n\}while(flag);showdata();safe();} 14,密码初始化函数 char *get_password(const char *prompt) char *get_password(const char *prompt) {static char buffer[128];int i = 0; char letter=NULL;printf( prompt ); // 最多可输入 127 个字符,最后一个留个'\\0' while ((i<127) && (letter!='\\r')) {letter = getch(); // 当前输入的字符为退格'\\b' if ( letter==BACKSPACE) { // buffer 中有字符存在 if(i>0){// 缓冲区中字符退一个 buffer[--i] = NULL;// 当前光标正等着你输入一个字符,而 //你却按下了退格键, 屏幕上字符也应该退一个,这里相当于 putchar( '\\b' ); // 这 样 就 将 光 标 退 到 了 上 一 个 字 符 的 位 置 putchar(BACKSPACE); // 这里光标在要删除的字符上面闪烁,输出一个空格就 将'*'号换掉了 putchar(' '); - 8 - 中原工学院信息商务学院 操作系统课程设计报告 // 因为你的空格操作导致光标又跳到了下一个字符位置,所 以还需要退一次,以使光标在正确位置显示 putchar(BACKSPACE);} else{ putchar(7);}} else if ( letter != '\\r' ){buffer[ i++ ] = letter;putchar( '*' );}} buffer[i] = '\\0'; return buffer;// 加上字符串结束标志,在 C++编译器 下这上语句是错的, buffer = NULL; 可以这样处理 } 15,密码设置函数 mima( ) void mima( ) {char *password; for(int i=1;i<=3;i++) { cout<<\您第\次\password = get_password( \输入密码:\if((i!=3)&&strcmp( password, \cout<< \您的密码有误 ,请重新输入密 码!\else if((i==3)&&strcmp( password, \{ cout< case 1: init();break; case 2: share();break; case 3: delresources();break; case 4: addresources();break; case 5: changeresources();break; case 6: addprocess();break; case 7: delprocess();break; case 0: exit(0); default: cout<<\请正确选择功能号(0-7)!\ - 9 - 中原工学院信息商务学院 操作系统课程设计报告 画出函数和过程调用关系流程图 主函数 void main() 字体颜色改变函数 system(\ 密码 mima( ); F while(choice) T 菜单函数显示 version(); 输入 choice 清屏函数 system(\); Case 1 初始资源 创建进程 init(); Case2 Case 3 switch(choice) Case4 Cas5 Case 6 Case7 Case0 请求分配 资 源 share(); 删除资源 delresour ces(); 增 加资源 addresour ces(); 修 改 资 源 增加进 程 addproces s(); 删除进程 delproces s(); changer 选 项 错 退 出 系 统 exit(0) 显 示 各 种 资 源 showdat a(); 安 全 检 测 函 数 safe(); 显 示 各 种 资 源 showdat a(); 显 示 各 种 资 源 showdat a(); 显 示 各 种 资 源 showdat a(); 显 示 各 种 资 源 showdat a(); 显 示 各 种 资 源 showdat a(); 显 示 各 种 资 源 showdat a(); 安 全 检 测 函 数 safe(); 安 全 检 测 函 数 safe(); 安 全 检 测 函 数 safe(); 安 全 检 测 函 数 safe(); 安 全 检 测 函 数 safe(); 安 全 检 测 函 数 safe(); 停止 - 10 - 中原工学院信息商务学院 操作系统课程设计报告 (4)调试分析 1、安全检测 safe()函数中不能实现多个资源的检测,进审查修改使用循环语 句 for(i=0;i { cout< 中原工学院信息商务学院 操作系统课程设计报告 3、选择功能号 1 初始化资源种类和大小、进程,并检测安全性 4、选择功能号 2 请求分配资源,并检测安全性 - 12 - 中原工学院信息商务学院 操作系统课程设计报告 5、选择功能号 3 删除资源,并检测安全性 6、选择功能号 4 增加资源,并检测安全性选择功能号 7、选择功能号 5 修改资源,并检测安全性 - 13 - 中原工学院信息商务学院 操作系统课程设计报告 8、选择功能号 6 增加进程,并检测安全性 9、选择功能号 7 删除进程,并检测安全性 10、 选择功能号 0 退出系统系统 - 14 - 中原工学院信息商务学院 操作系统课程设计报告 (6)使用说明: 输入正确密码,进入银行家算法系统,显示主菜单以后,按序号选择功能号,首 先选择功能号 1 初始化可用资源、和进程,然后选择其他功能号,按找每项功能 的提示做出相应的操作,若要推出系统请选择 0 号,退出银行家算法系统。 四、实验总结 通过本次课程设计,我收获很多,首先我对十大算法之一的银行家算法有了 清楚的认识,认真分析了进程产生死锁的原因,了解为什么要进行死锁的避免, 掌握银行家算法的数据结构,了解了算法的执行过程,加深了对银行家算法的理 解。其次,我对编程有了个清楚的认识,编程就是将先现实中的规律模拟成电脑 能运行的程序,方便我们的工作和学习生活。最后,我也清楚认识到理论联系实 际重要性,动手操作能力和编程逻辑思维能力的提高的重要性,对自己所编写的 程序要学会调试,不断改进,向更加全面的方向考虑,同时也要考虑程序的可行 性和健壮性。总而言之,我在编写程序方面有了更加深入的认识。 五、附录:程序清单 #include #include int Max[100][100]={0};//各进程所需各类资源的最大需求 int Avaliable[100]={0};//系统可用资源 - 15 - 中原工学院信息商务学院 操作系统课程设计报告 char name[100]={0};//资源的名称 int Allocation[100][100]={0};//系统已分配资源 int Need[100][100]={0};//还需要资源 int Request[100]={0};//请求资源向量 int temp[100]={0};//存放安全序列 int Work[100]={0};//存放系统可提供资源 int M=100;//进程的最大数为 100 int N=100;//资源的最大数为 100 void SLEEP() { int i; for (i=10;i>=0;i--) { cout< cout<<\┏━━━━━━━━━━━━━━━━━━━━━━━┓ \cout<<\\cout<<\\cout<<\\cout<<\\cout<<\\Sleep(i); system(\} } void showdata()//显示资源矩阵 { int i,j; cout<<\系统目前可用的资源[Avaliable]:\cout< ┃☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆┃ ┃ 正在进入银行家算法系统 ┃ ┃☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆┃ ┗━━━━━━━━━━━━━━━━━━━━━━━┛ \☆★\★☆ \ 中原工学院信息商务学院 操作系统课程设计报告 cout< cout< cout<<\for(j=0;j int changdata(int i)//进行资源分配 { int j; for (j=0;j int safe()//安全性算法 {int i,k=0,m,apply,Finish[100]={0}; int j; for(i=0;i apply++;//当需求资源数目都小于可用资源数时,改变分配资源数目 if(apply==N) {for(m=0;m Work[m]=Work[m]+Allocation[i][m];//变分配数 Finish[i]=True; temp[k]=i;//记录调度进程的安全序列 i=-1; //用于返回上一级寻找需求资源小于可用资源的进程 k++;} } } } - 17 - 中原工学院信息商务学院 操作系统课程设计报告 for(i=0;i cout<<\系统是安全的!\如果安全,输出成功 cout<<\分配的序列:\for(i=0;i cout<<\if(i 中原工学院信息商务学院 操作系统课程设计报告 } } if(ch=='y') {changdata(i);//根据进程需求量变换资源 showdata();//根据进程需求量显示变换后的资源 safe();//根据进程需求量进行银行家算法判断 } } void addresources()//添加资源 {int n,flag; cout<<\\cout<<\\cout<<\\cout<<\\cout<<\┗━━━━━━━━━━━━━━━━━━━━━━━┛ \cout<<\请输入需要添加资源种类的数量:\flag=N;N=N+n; for(int i=0;i showdata();safe(); } void delresources()//删除资源 {char ming;int i,flag=1; cout<<\\cout<<\\cout<<\\┃ 删除资源,并检测安全性 - 19 - ┏━━━━━━━━━━━━━━━━━━━━━━━┓ ┃☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆┃ ┃ 添加资源,并检测安全性 ┃ ┃☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆┃ ┏━━━━━━━━━━━━━━━━━━━━━━━┓ ┃☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆┃ ┃ 中原工学院信息商务学院 操作系统课程设计报告 cout<<\\cout<<\\┃☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆┃ ┗━━━━━━━━━━━━━━━━━━━━━━━┛ cout<<\请输入需要删除的资源名称:\do {cin>>ming; for(i=0;i for(j=i;j int Nam,j; int i,flag=1; cout<<\\cout<<\\cout<<\\cout<<\\cout<<\\cout<<\请输入需要删除的进程名称:P\ - 20 - ┏━━━━━━━━━━━━━━━━━━━━━━━┓ ┃☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆┃ ┃ 删除进程,并检测安全性 ┃ ┃☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆┃ ┗━━━━━━━━━━━━━━━━━━━━━━━┛ 中原工学院信息商务学院 操作系统课程设计报告 do//查找要删除的与输入进程名相同的进程 {cin>>Nam; for(i=0;i { Avaliable[i]= Avaliable[i]+Allocation[i][m];//将删除的进程已分配的资源存入可 用资源中去 } for(j=i;j {Max[j][m]=Max[j+1][m]; Allocation[j][m]= Allocation[j+1][m]; Need[j][m]= Need[j+1][m];} } M=M-1;showdata();safe(); } void changeresources()//修改资源函数 { cout<<\\cout<<\\cout<<\\cout<<\\cout<<\\cout<<\系统目前可用的资源[Avaliable]:\ for(int i=0;i - 21 - ┏━━━━━━━━━━━━━━━━━━━━━━━┓ ┃☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆┃ ┃ 修改资源数量,并检测安全性 ┃ ┃☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆┃ ┗━━━━━━━━━━━━━━━━━━━━━━━┛ 中原工学院信息商务学院 操作系统课程设计报告 void addprocess()//添加进程 { int flag=M; M=M+1; cout<<\\cout<<\\cout<<\\cout<<\\cout<<\┗━━━━━━━━━━━━━━━━━━━━━━━┛ \cout<<\请输入该进程的最大需求量[Max]\{cout< for(int k=0;k void version() //显屏函数 { cout<<\cout<<\cout<<\cout<<\cout<<\cout<<\cout<<\cout<<\cout<<\cout<<\cout<<\cout<<\cout<<\cout<<\cout<<\cout<<\cout<<\┏━━━━━━━━━━━━━━━━━━━━━━━┓\┃ 欢迎进入银行家算法系统 ┃\┠───────────────────────┨\┃ 1:初始化资源种类和大小、进程,并检测安全性┃\┠───────────────────────┨\┃ 2: 请求分配资源,并检测安全性 ┃\┠───────────────────────┨\┃ 3: 删除资源,并检测安全性 ┃\┠───────────────────────┨\┃ 4:增加资源,并检测安全性 ┃\┠───────────────────────┨\┃ 5: 修改资源,并检测安全性 ┃\┠───────────────────────┨\┃ 6: 增加进程,并检测安全性 ┃\┠───────────────────────┨\┃ 7: 删除进程,并检测安全性 ┃\┠───────────────────────┨\ - 22 - ┏━━━━━━━━━━━━━━━━━━━━━━━┓ ┃☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆┃ ┃ 添加进程,并检测安全性 ┃ ┃☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆┃ 中原工学院信息商务学院 操作系统课程设计报告 cout<<\┃ 0: 退出系统系统 ┃\cout<<\┗━━━━━━━━━━━━━━━━━━━━━━━┛\cout< void init()//初始化进程,分配资源 并检测安全性 {int i,j,number,m,n,flag;char Name; cout<<\┏━━━━━━━━━━━━━━━━━━━━━━━┓ \cout<<\┃☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆┃ \cout<<\\cout<<\\cout<<\┗━━━━━━━━━━━━━━━━━━━━━━━┛ \cout<<\请首先输入系统可供资源种类的数量:\cin>>n; N=n; for(i=0;i flag=0; cout<<\请输入各进程已分配的资源量(\矩阵)[Allocation]:\for(i=0;i cin>>Allocation[i][j]; if(Allocation[i][j]>Max[i][j]) flag=1; Need[i][j]=Max[i][j]-Allocation[i][j]; } if(flag) cout<<\已分配的资源大于最大需求量,请重新输入!\\n\} - 23 - ┃ 初始化资源种类和大小、进程 ,并检测安 ┃ ┃☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆┃ 中原工学院信息商务学院 操作系统课程设计报告 while(flag); showdata();//显示各种资源 safe();//用银行家算法判定系统是否安全 } char *get_password(const char *prompt) { static char buffer[128]; int i = 0; char letter=NULL; printf( prompt ); // 最多可输入 127 个字符,最后一个留个'\\0' while ((i<127) && (letter!='\\r')) { letter = getch(); // 当前输入的字符为退格'\\b' if ( letter==BACKSPACE) { // buffer 中有字符存在 if(i>0) { // 缓冲区中字符退一个 buffer[--i] = NULL;// 当前光标正等着你输入一个字符,而你却按下了 退格键, 屏幕上字符也应该退一个,这里相当于 putchar( '\\b' ); // 这样就将光标退到了上一个字符的位置, putchar(BACKSPACE); // 这里光标在要删除的字符上面闪烁,输出一个空格就将'*'号换掉了 putchar(' '); // 因为你的空格操作导致光标又跳到了下一个字符位置,所以还需要退 一次,以使光标在正确位置显示 putchar(BACKSPACE); } else { putchar(7);} } else if ( letter != '\\r' ) {buffer[ i++ ] = letter;putchar( '*' );} } buffer[i] = '\\0'; return buffer;// 加上字符串结束标志,在 C++编译器下这上语句 是错的, buffer = NULL; 可以这样处理 } void mima( ) {char *password; cout<<\┏━━━━━━━━━━━━━━━━━━━━━━━┓ - 24 - 中原工学院信息商务学院 操作系统课程设计报告 \cout<<\┃☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆┃ \ cout<<\┃ 请输入密码,您最多可以输入三次 ┃ \ cout<<\┃☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆┃ \ cout<<\┗━━━━━━━━━━━━━━━━━━━━━━━┛ \ for(int i=1;i<=3;i++) { cout<<\您第\次\password = get_password( \输入密码:\if((i!=3)&&strcmp( password, { cout< cout<< \您的密码有误,请重新输入密码!\continue; } else if((i==3)&&strcmp( password, \{ cout< {printf( \你的密码正确,欢迎进入银行家算法系 统!\\n\ } } void main()//主{ system(\ mima( );//密SLEEP(); int choice; while(choice) { version(); cout<<\*\cout<<\请选择功能号(0-7):\cin>>choice; system(\switch(choice) { case 1: init();break; case 2: share();break; case 3: delresources();break; - 25 - 函码\);break;}数b\数 函 中原工学院信息商务学院 操作系统课程设计报告 case 4: addresources();break; case 5: changeresources();break; case 6: addprocess();break; case 7: delprocess();break; case 0: cout< cout<<\┏━━━━━━━━━━━━━━━━━━━━━━━┓ \cout<<\\cout<<\\cout<<\\cout<<\\ cout< }}} ┗━━━━━━━━━━━━━━━━━━━━━━━┛ ┃☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆┃ ┃ 谢谢使用银行家算法 ┃ ┃☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆┃ 六、 参考资料 计算机操作系统(第二版);汤小丹,梁红冰,哲凤屏,汤子瀛;西 安电子科技大学出版社。 数据结构(c 语言版);严蔚敏,吴伟民;清华大学出版社。 C 程序设计教程;谭浩强;清华大学出版社。 - 26 - 中原工学院信息商务学院 操作系统课程设计报告 case 4: addresources();break; case 5: changeresources();break; case 6: addprocess();break; case 7: delprocess();break; case 0: cout< cout<<\┏━━━━━━━━━━━━━━━━━━━━━━━┓ \cout<<\\cout<<\\cout<<\\cout<<\\ cout< }}} ┗━━━━━━━━━━━━━━━━━━━━━━━┛ ┃☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆┃ ┃ 谢谢使用银行家算法 ┃ ┃☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆┃ 六、 参考资料 计算机操作系统(第二版);汤小丹,梁红冰,哲凤屏,汤子瀛;西 安电子科技大学出版社。 数据结构(c 语言版);严蔚敏,吴伟民;清华大学出版社。 C 程序设计教程;谭浩强;清华大学出版社。 - 26 -
正在阅读:
操作系统课程设计报告——银行家算法06-21
信托市场研究 - 图文04-28
徐州汉之源净水中小学校校园直饮水工程建设和维护基本要求08-26
歌曲今夜无眠02-17
室内消火栓检查表03-28
中学生汉字书写情况及存在的问题的调查报告11-11
电力拖动自动控制系统-运动控制系统阮毅陈伯时课后思考题答案09-22
第八章 建设中国特色社会主义总布局04-20
组织行为学总复习资料一、二、三10-03
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 银行家
- 算法
- 操作系统
- 课程
- 报告
- 设计
- 我的教育教学案例
- 铁路行车组织考研复试真题整理
- 高中政治 3.10.2创新是民族进步的灵魂教案 新人教必修4
- Dell XPS M1530拆解详细教程
- 浅谈英汉成语的对比及其翻译
- 最新高考物理一轮复习 第二章 相互作用(学案+练习 共5讲)
- 负利率
- 16秋学期《第一次把事情做对》在线作业
- 《水乡的日子》史良高 阅读答案及考点分析
- 宅基地使用权和集体建设用地使用权确权登记发证项目D级GPS控制测
- 关于印发2012年山东省重大节能技术产业化奖励资金项目申报指南的
- 环境化学答案完整版
- 独立人防地下室基坑围护方案
- 研究生入学思想汇报范文1000字-精选word文档(1页)
- 2017年执业医师考试重点-传染病性传播疾病 - 图文
- 党建观摩示范点简介定稿
- 长春市社会工作发展调研报告
- 马达加斯加2电影中英文对白
- 中国生态城镇发展目标和实施措施初探
- 培养学生数学应用能力的几点体会(精)