资源简介
操作系统 课程设计任务书
银行家算法
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语言模拟文件管理系统844
- C语言课程设计
- 操作系统课设 读写者问题 c语言实现
- c语言电子商务系统
- ROS操作系统入门讲义
- 宠物管理系统课程设计(源码+数据库
- c语言课程设计:客房登记系统源码
- 银行家算法分配资源的模拟实现(m
- 8位竞赛抢答器的课程设计报告.docx
- VC++MFC课程设计的学生成绩管理系统
- Linux操作系统下C语言编程从零开始
- 操作系统存储管理实验报告c/c++
- C++实现21点游戏
- c++课程设计学生管理系统浙工大源码
- 课程设计: MFC 学生信息管理系统
- C语言实现的银行家算法 做了界面
- dsp课程设计——语音加密.zip
- 广东工业大学数据结构课程设计航空
- 数据结构课程设计扑克牌排序
- c++课程设计宾馆客房管理系统
- c语言课程设计-职工信息管理系统-单
- 飞机票订购系统C语言课程设计报告全
- c++ 课程设计_中国象棋
- 编译原理课程设计-C语言子集编译器
- 操作系统课程设计(银行家算法)附
- 用c写的航空订票系统 航班信息改变
- 信息论课程设计——LZW编码
- 人员管理系统 c语言源码 课程设计专
- MFC课程设计学生管理系统
- vc++课程设计 让计算机来猜测用户“暗
评论
共有 条评论