#include
#include
#define m 30//資源
#define n 20//程序
using namespace std;
int n;//程序的個數
int m;//資源的種類數
int wp;//所要請求資源的程序
int wp[m];//請求各個資源的值
int process_end[n];//判斷是否是已經執行過的程序
int tage[n];//記錄程序執行的次序
int max[n][m];//程序所最大資源值
int need[n][m];//程序所需要的資源
int all[n][m];///程序已有的資源
int resources[m];//還可以利用的資源數
int isok(int k)
}return ok;
}void chushi()
}cout<<"程序所最大資源值"<>max[i][j];
need[i][j]=max[i][j]-all[i][j];}}
cout<<"每個資源所能夠被利用的值 "<>resources[i];}}
int safe()//檢查是否安全
cout<>wp;
cout<<"請求的各個資源的值"<>wp[i];
}bank();
}return 0;
}
銀行家演算法
我們可以把作業系統看作是銀行家,作業系統管理的資源相當於銀行家管理的資金,程序向作業系統請求分配資源相當於使用者向銀行家貸款。為保證資金的安全,銀行家規定 1 當乙個顧客對資金的最大需求量不超過銀行家現有的資金時就可接納該顧客 2 顧客可以分期貸款,但貸款的總數不能超過最大需求量 3 當銀行家現有的...
銀行家演算法
銀行家演算法 banker s algorithm 是乙個避免死鎖 deadlock 的著名演算法,是由艾茲格 迪傑斯特拉在1965年為t.h.e系統設計的一種避免死鎖產生的演算法。它以銀行借貸系統的分配策略為基礎,判斷並保證系統的安全執行。就像我們從銀行貸快一樣,首先銀行會考慮到我們有沒有償還能力...
銀行家演算法
死鎖是作業系統層面的乙個錯誤,是程序死鎖的簡稱,最早在 1965 年由 dijkstra 在研究銀行家演算法時提出的,它是計算機作業系統乃至整個併發程式設計領域最難處理的問題之一。事實上,計算機世界有很多事情需要多執行緒方式去解決,因為這樣才能最大程度上利用資源,才能體現出計算的高效。但是,實際上來...