// 銀行家演算法.cpp : 定義控制台應用程式的入口點。
//#include "stdafx.h"
#include
using
namespace
std;
#define m 5/*程序數*/
#define n 3/*資源數*/
#define false 0
#define true 1
int **ailable[n]=;//系統可用資源數
int max[m][n]=,,,,};//m個程序對n類資源最大資源需求
int allocation[m][n]=,,,,};//m個程序已分配到的資源
int need[m][n]=,,,,};//m個程序還需要得到的資源情況
void showdata();//列印陣列
int check();//安全性檢測
void main()}}
while(1)
}}//判斷request≤**ailable && need
/******** 插入** ********/
for ( i = 0; i < n; i++)}}
if(flag==n)
}int wflag=check();
if(wflag!=0)//如果系統不安全,回滾到原來的狀態
}else
if(count1==n)//當程序各類資源都滿足need<=work時
finish[i]=true;
temp[k]=i;//記錄下滿足條件的程序
k++;
}count1=0;
if (i==m-1)}}
for(i=0;i//任何程序不滿足,系統即為不安全狀態
}cout
<"經安全性檢查,系統處於安全狀態"
<<"本次安全序列:";
for(i=0;i//列印安全系統的程序呼叫順序
cout
void showdata()//顯示陣列的狀態
cout
<<"\t*****各程序已分配資源情況 allocation *****"
<<"\t資源類別:r0 r1 r2"
<<"\t"
<"號程序:";
for(j=0;jcout
<<" "
<" ";
}cout
<<"\t*********各程序還需要的資源量 need *********"
<<"\t資源類別:r0 r1 r2"
<<"\t"
<"號程序:";
for(j=0;jcout
<<" "
<" ";
}cout
<<"\t*****系統可用資源向量 **ailable *****"
<<"\t資源類別:r0 r1 r2"
<<"\t資源數目:";
for(j=0;jcout
<" ";
cout
<}
銀行家演算法
我們可以把作業系統看作是銀行家,作業系統管理的資源相當於銀行家管理的資金,程序向作業系統請求分配資源相當於使用者向銀行家貸款。為保證資金的安全,銀行家規定 1 當乙個顧客對資金的最大需求量不超過銀行家現有的資金時就可接納該顧客 2 顧客可以分期貸款,但貸款的總數不能超過最大需求量 3 當銀行家現有的...
銀行家演算法
銀行家演算法 banker s algorithm 是乙個避免死鎖 deadlock 的著名演算法,是由艾茲格 迪傑斯特拉在1965年為t.h.e系統設計的一種避免死鎖產生的演算法。它以銀行借貸系統的分配策略為基礎,判斷並保證系統的安全執行。就像我們從銀行貸快一樣,首先銀行會考慮到我們有沒有償還能力...
銀行家演算法
死鎖是作業系統層面的乙個錯誤,是程序死鎖的簡稱,最早在 1965 年由 dijkstra 在研究銀行家演算法時提出的,它是計算機作業系統乃至整個併發程式設計領域最難處理的問題之一。事實上,計算機世界有很多事情需要多執行緒方式去解決,因為這樣才能最大程度上利用資源,才能體現出計算的高效。但是,實際上來...