#include #include #include //自定義bool型別
typedef int bool;
#define false 0
#define true !false
//系統中所有程序數量
#define num_of_processes 5
//有三類資源 a,b,c
typedef struct resource;
//總資源向量
resource r = ;
//可用資源向量
resource v = ;
//最大需求矩陣
resource c[num_of_processes] =
, ,,,
};//已分配資源數矩陣
resource a[num_of_processes] =
, ,,,
};//需求矩陣
resource need[num_of_processes] =
, ,,,
};int safe[num_of_processes];
//試探分配
void probealloc(int proid, resource *res)
//若試探分配後進入不安全狀態,將分配回滾
void rollback(int proid, resource *res)
//安全性檢查
bool safecheck()
; int i;
int j = 0;
for (i = 0; i < num_of_processes; i += 1)}}
//如果所有程序的finish向量都為true則處於安全狀態,否則為不安全狀態
for (i = 0; i < num_of_processes; i += 1)
}return true;
}//資源分配請求
bool request(int proid, resource *res)
else
}else
}else
return false;
}//輸出需求矩陣c
void printc()
{ printf("需求矩陣 c:\n");
printf("proid\ta\tb\tc\n");
int i;
for (i = 0; i
作業系統之銀行家演算法
1 利用銀行家演算法設計系統,程序可動態地申請資源和釋放資源,系統按各程序的申請動態地分配資源。2 設計用銀行家演算法和隨機分配演算法,實現資源分配的兩個資源分配程式,應具有顯示或列印各程序依次要求申請的資源數以及依次分配資源的情況。3 確定一組各程序依次申請資源數的序列,在相同的情況下分別執行上述...
作業系統概念 銀行家演算法
互斥 一次只能有乙個程序使用資源。占有並等待 擁有至少乙個資源的程序正在等待獲取其他程序擁有的其他資源。非搶占 資源只能在擁有資源的程序完成其任務後才自動釋放。迴圈等待 等待資源的程序之間存在環 存在一組等待過程,這樣p0正在等待p1保留的資源,p1正在等待p2,pn 1保留的資源 正在等待pn保留...
作業系統之銀行家演算法
一 需求分析 1 程序的狀態有 就緒,等待和完成。當系統不能滿足程序的資源請求時,程序出於等待狀態。資源需求總量表示程序執行過程中對資源的總的需求量。已佔資源量表示程序目前已經得到但還為歸還的資源量。因此,程序在以後還需要的剩餘資源量等於資源需要總量減去已佔資源量。陷入每個程序的資源需求總量不應超過...