资源简介
用C或C++语言实现一个程序演示死锁避免算法(银行家算法)。要求该演示程序能显示各进程申请和释放资源以及系统动态分配资源的过程,便于用户观察和分析;允许进程动态地申请资源分配之前,应先计算此次资源分配的安全性。若此次分配不会导致系统进入不安全状态,则将资源分配给进程;否则,令进程等待。如果系统不能分配,也应给出“系统进入不安全状态”的提示。
里面含有代码和课程设计报告!!!!本次课程设计是通过用C模拟实现,内容十分丰富。若有采纳,请在你的课设后面引用的参考文献中加入该条引用!!!望大家尊重版权!!!! 为了避免完全抄袭,里面的课设报告为PDF版,若需要word版,评价留言你的邮箱!!!!!!若觉得有用,记得好评!!绝对有用!!!
代码片段和文件信息
#include“iostream“
#include“fstream“
#include“vector“
#include“windows.h“
using namespace std;
vector Allocation[500]; //每个进程已经有的资源
vector Need[500]; //各个进程想要的资源
int pro_size; //进程数
int res_size; //资源种类数
int res[500]; //每类资源的个数
int work[500]; //当前可用资源数
vector Deadlock;
bool* visited;
bool* Dead_res;
void DeadlockChain(int beg){
visited[beg] = true;
cout << “Process:“ << beg << endl;
for(int i = 0; i < Need[beg].size(); i++)
for(int j = 0; j < Deadlock.size(); j++)
for(int k = 0; k < Allocation[ Deadlock[j] ].size(); k++)
if(Allocation[ Deadlock[j] ][k] == Need[beg][i]){
Dead_res[Need[beg][i]] = true;
if(!visited[j])
DeadlockChain(j);
}
for(int t = 0; t < Allocation[beg].size(); t++)
for(int j = 0; j < Deadlock.size(); j++)
for(int k = 0; k < Need[ Deadlock[j] ].size(); k++)
if(Need[ Deadlock[j] ][k] == Allocation[beg][t]){
Dead_res[Allocation[beg][t]] = true;
if(!visited[j])
DeadlockChain(j);
}
}
void read_data(){
ifstream in;
in.open(“D:\\deadlock detection.txt“);
if(!in)
cout << “FILE OPEN FAILED!“ << endl;
memset(res0500);
memset(work0500);
//**********************************************
//Read res
in >> res_size;
if(res_size > 500){
cout << “Number of res should be small than 500“ << endl;
exit(-1);
}
for(int i = 0; i < res_size; i++){
int temp;
in >> temp;
if(temp < 0){
cout << “Illegal No. of res!“ << endl;
cout <<“Please check your input data!“ << endl;
exit(-1);
}
res[i] = work[i] = temp;
}
//************************************************
//Read pro
in >> pro_size;
if(pro_size > 500){
cout << “Number of pro should be small than 500“ << endl;
exit(-1);
}
for(int k = 0; k < pro_size; k++){
int num;
in>> num;
int have_size;
in >> have_size;
for(int i = 0; i < have_size; i++){
int temp;
in >> temp;
if(temp >= res_size){
cout << “illegal res No.!“ << endl;
cout <<“Please check your input data!“ << endl;
exit(-1);
}
work[temp]--;
if(work[temp] < 0){
cout << “Impossible res dispatch situation!“ << endl;
cout <<“Please check your input data!“ << endl;
exit(-1);
}
Allocation[num].push_back(temp);
}
//--------------------------------------------------------
int want_size;
in >> want_size;
for(int j = 0; j < want_size; j++){
int temp;
in >> temp;
if(temp >= res_size){
cout << “illegal res No.!“ << endl;
cout <<“Please check your input data!“ << endl;
exit(-1);
}
Need[num].push_back(temp);
}
}
}
//**********************************************************
void Draw(){
HWND hWnd=FindWindow(“ConsoleWindowClass“NULL);
HDC hDc=GetDC(hWnd);
HPEN hPen1=CreatePen(PS_SOLID20x000000FF);//生成红线
HPEN hPen2=CreatePen(PS_SOLID20x0000FF00);//生成蓝线
Selectobject(hDchPen1);
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 753911 2019-08-06 15:39 死锁的避免与检测(操作系统课设)\死锁的避免与检测-夏鑫、许毅立、余创、李若晴.pdf
文件 6543 2019-01-08 20:04 死锁的避免与检测(操作系统课设)\源代码\死锁检测算法.cpp
文件 5105 2019-01-09 11:13 死锁的避免与检测(操作系统课设)\源代码\银行家算法.cpp
目录 0 2019-01-10 20:54 死锁的避免与检测(操作系统课设)\源代码
目录 0 2019-08-06 15:39 死锁的避免与检测(操作系统课设)
----------- --------- ---------- ----- ----
765559 5
相关资源
- [纯C语言 + Win32 API]一步一步写个围棋
- c语言课程设计学生学籍管理系统
- canny边缘检测的c语言实现
- 五子棋小游戏选择棋盘、棋子;双方
- 数据结构题集(C语言版) 第二版 高
- c语言程序设计(第二版)谭浩强(完
- 《c语言入门经典(第5版)》.((美
- c语言写的编译器
- C语言范例开发大全(文字版).pdf
- 21天学通C语言第7版
- C语言版STL
- 词法分析C++程序
- C语言程序设计第二版-苏小红
- 51单片机轻松入门 C语言版 基于STC
- C/C++黑马13期全套
- 基于C语言的ArcGISENGINE开发基础与技巧
- C语言课程设计——教室管理系统
- 明解C语言入门与中级篇.rar
- C语言程序设计第3版,何钦铭,颜晖主
- 歌听歌曲管理系统
- 数字图像处理各种算法 C语言实现
- c语言函数快速入门
- c语言课程设计学生信息管理系统含登
- c语言利用RDMA 实现客户端和服务器端
- 浮点数c语言除法模拟源码
- 编译原理 C语言实现词法分析
- 基于C语言的模拟KTV系统
- 数据结构与算法C语言描述原书第二版
- 蓝牙C语言程序
- 编译原理C语言实现词法分析程序带容
评论
共有 条评论