資源簡介
用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:“?<
for(int?i?=?0;?i? for(int?j?=?0;?j? for(int?k?=?0;?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? for(int?j?=?0;?j? for(int?k?=?0;?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!“?< memset(res0500);
memset(work0500);
//**********************************************
//Read?res
in?>>?res_size;
if(res_size?>?500){
cout?<“Number?of?res?should?be?small?than?500“?< exit(-1);
}
for(int?i?=?0;?i? int?temp;
in?>>?temp;
if(temp?0){
cout?<“Illegal?No.?of?res!“?< cout?<<“Please?check?your?input?data!“?< 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“?< exit(-1);
}
for(int?k?=?0;?k?
int?num;
in>>?num;
int?have_size;
in?>>?have_size;
for(int?i?=?0;?i? int?temp;?
in?>>?temp;
if(temp?>=?res_size){
cout?<“illegal?res?No.!“?< cout?<<“Please?check?your?input?data!“?< exit(-1);
}
work[temp]--;
if(work[temp]?0){
cout?<“Impossible?res?dispatch?situation!“?< cout?<<“Please?check?your?input?data!“?< exit(-1);
}
Allocation[num].push_back(temp);
}
//--------------------------------------------------------
int?want_size;
in?>>?want_size;
for(int?j?=?0;?j? int?temp;?
in?>>?temp;
if(temp?>=?res_size){
cout?<“illegal?res?No.!“?< cout?<<“Please?check?your?input?data!“?< 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
評論
共有 條評論