资源简介
操作系统 课程设计任务书
银行家算法
1)了解多道程序系统中,多个进程并发执行的资源分配。
2)掌握银行家算法,了解资源在进程并发执行中的资源分配情况。
3)掌握预防死锁的方法,系统安全状态的基本概念。
设计一个n个并发进程共享m个系统资源的程序以实现银行家算法。要求:
1) 简单的选择界面;
2) 能显示当前系统资源的占用和剩余情况。
3) 为进程分配资源,如果进程要求的资源大于系统剩余的资源,不与分配并且提示分配不成功;
4) 撤销作业,释放资源。
编写和调试一个系统动态分配资源的简单模拟程序,观察死锁产生的条件,并采用适当的算法,有效地防止和避免死锁的发生。
代码片段和文件信息
#include
#include
int m=3;//m个系统资源
int n=0;//n个并发进程
int Max[20][20];//={{753}{322}{902}{222}{433}}; //最大需求矩阵
int Available[20];//={1032}; //可利用资源向量
int Allocation[20][20];//={{010}{200}{302}{211}{002}}; //分配矩阵
int Need[20][20];//={{743}{122}{600}{011}{431}}; //需求矩阵
int Request[20];
int queue[20]; //进程Pi的请求向量
//*******************************************************************************
int output() //显示各个矩阵资源分配情况
{
int klt;t=65;
printf(“\n**********************************************************\n“);
printf(“ MAX “);
for(l=0;l printf(“Allocation “);
for(l=0;l printf(“Need “);
for(l=0;l printf(“Available “);
for(l=0;l printf(“\n“);
//printf(“ A B C A B C A B C A B C “);
printf(“ “);
for(l=0;l<4;l++)
{for(k=0;k printf(“%c “65+k);
printf(“ “);}
for(k=0;k {
printf(“\nP%d “k);
for(l=0;l printf(“%d “Max[k][l]);printf(“ “);
for(l=0;l printf(“%d “Allocation[k][l]);printf(“ “);
for(l=0;l printf(“%d “Need[k][l]);printf(“ “);
if(k==0) {
for(l=0;l printf(“%d “Available[l]);
}
}
return 1;
}
//*****************************************************************************
int input() //资源分配情况的录入。
{
int ij;int t=65;
//printf(“\n请输入系统的未分配资源数:“);
// scanf(“%d%d%d“AvailableAvailable+1Available+2);
//for(i=0;i<5;i++)
printf(“\n 资源名称:“);
for(i=0;i printf(“\n请输入p%d的最大需求资源数:“n);
for(i=0;i
printf(“\n 资源名称:“);
for(i=0;i printf(“\n请输入p%d的已分配的资源数:“n);
for(i=0;i //for(i=0;i for(j=0;j
Need[n][j]=Max[n][j]-Allocation[n][j];
for(i=0;i {
Available[i]-=Allocation[n][i];
}
n++;
return 1;
}
//*****************************************************************************
int safe(){//安全性检查 返回1 表示安全 有安全队列 queue 返回0表示不安全
int doneapply=0;int t;
int ij;int work[20];
int finish[20]={0};
for(j=0;j while(apply {
t=0;
for(i=0;i {
done=0;
if(finish[i]!=false) {continue;}
for(j=0;j {
if(Need[i][j] >work[j]) {done=1; break; }
}
if(done==0)
{
for(j=0;j finish[i]=true;
queue[apply]=i;apply++;t=1;
}
}
if(t==0) return false;
}
return 1;
}
//***************************************************************
int dijkstra(in
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 839168 2013-06-29 15:40 操作系统课程设计\操作系统-课程设计报告.doc
文件 6313 2013-01-14 22:00 操作系统课程设计\源代码及运行程序\dijkstra.cpp
文件 200781 2013-01-14 22:00 操作系统课程设计\源代码及运行程序\dijkstra.exe
目录 0 2013-06-29 15:40 操作系统课程设计\源代码及运行程序
目录 0 2013-06-29 15:41 操作系统课程设计
----------- --------- ---------- ----- ----
1046262 5
- 上一篇:用C++语言设计的一个小型公司工资管理系统
- 下一篇:DES算法C++实现
相关资源
- 客房管理系统的C++课程设计
- 商品销售统计的C++课程设计
- 操作系统3种页面置换算法 C++实现
- 学生社团管理程序 c++ 课程设计
- C++ 停车场管理 数据结构 课程设计
- 银行家算法C实现
- 分数计算器课程设计
- 操作系统中的文件管理模拟
- 操作系统CPU调度算法之最短剩余时间
- 人事管理系统(使用MFC单文档程序,
- c语言课程设计之网络购物系统
- 《C++面向对象程序设计》课程设计—
- 单片机简易计算器的设计包含设计报
- 编译原理课程设计广工C语言
- c语言万年历的课程设计及源码
- c语言 课程设计 井字棋
- 高速公路收费系统C语言课程设计报告
- 20C++MFC课程设计之吹泡泡游戏
- 编译原理课程设计——算术表达式、
- 操作系统设备管理模拟 银行家算法
- 数据结构课程设计汉诺威塔
- 单片机课程设计数字温度控制器
- 广工编译原理课程设计 PL0C++改进需用
- c语言五子棋小游戏课程设计报告
- 课程设计全国交通咨询模拟系统C++实
- c++操作系统进程管理模拟
- C语言课程设计——职工管理系统
- 银行家算法c++源代码
- 数据结构课程设计应用索引文件和查
- 操作系统进程调度算法——短作业优
评论
共有 条评论