91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

資源簡介

銀行家算法分配資源的模擬實現(main.cpp)

資源截圖

代碼片段和文件信息

#include?
#include?
using?namespace?std;
#define?Max_process?50????????????????????????/*最大進程數*/
#define?Max_source?50????????????????????????/*最大資源數*/
int?Available[Max_source];????????????????????/*可用資源數組*/
int?Max_use[Max_process][Max_source]={{753}{322}{902}{222}{433}};?????/*最大需求矩陣*/
int?Allocation[Max_process][Max_source]={{010}{200}{302}{211}{002}};????/*分配矩陣*/
int?Need[Max_process][Max_source];????????????/*需求矩陣*/
int?Request[Max_process][Max_source];????????/*進程需要資源數*/
bool?Finish[Max_process];????????????????????????/*系統是否有足夠的資源分配*/
int?p[Max_process];?????????????????????????????/*記錄序列*/
int?m=5?n=3;????????????????????????????????????/*m個進程n個資源*/
void?Init();
bool?Safe();
void?Bank_safe();
void?Show(int?int);
int?main()
{
????Init();
????Safe();
????Bank_safe();
}
void?Init()????????????????/*初始化算法*/
{
????int?ij;
????for?(i?=?0;?i?????{
????????for?(j?=?0;?j?????????{
????????????//scanf(“%d“&Allocation[i][j]);
????????????Need[i][j]?=?Max_use[i][j]?-Allocation[i][j];
??????????/*?if?(Need[i][j]?????????????{
????????????????printf(“您輸入的第%d個進程所擁有的第%d個資源數?錯誤請重新輸入:\n“i+1j+1);
????????????????j--;
????????????????continue;
????????????}*/
????????}
????}
????printf(“請輸入各個資源現有的數目:\n“);
????for?(i?=?0;?i?????{
????????scanf(“%d“&Available[i]);
????}
}
void?Bank_safe()????????????????/*銀行家算法*/
{
????int?i?cusneed?flag?=?0;
????char?again;
????while?(1)
????{
????????Show(n?m);
????input:
????????printf(“請輸入要申請資源的進程號(注:第1個進程號為0依次類推)\n“);
????????scanf(“%d“&cusneed);
????????if?(cusneed?>=m)
????????{
????????????printf(“沒有該進程,請重新輸入\n“);
????????????goto?input;
????????}
????????printf(“請輸入進程所請求的各資源的數量\n“);
????????for?(i?=?0;?i?????????{
????????????scanf(“%d“&Request[cusneed][i]);
????????}
????????for?(i?=?0;?i?????????{
????????????if?(Request[cusneed][i]?>?Need[cusneed][i])//如果用戶選擇的線程的第i個資源請求數>該線程該資源所需的數量
????????????{
????????????????printf(“您輸入的請求數超過進程的需求量!請重新輸入!\n“);
????????????????goto?input;
????????????}
????????????if?(Request[cusneed][i]?>Available[i])//如果用戶選擇的線程的第i個資源請求數>系統現有的第i個資源的數量
????????????{
????????????????printf(“您輸入的請求數超過系統有的資源數!請重新輸入!\n“);
????????????????goto?input;
????????????}
????????}
????????for?(i?=?0;?i?????????{
???????????Available[i]?-=?Request[cusneed][i];//系統可用資源減去申請了的
???????????Allocation[cusneed][i]?+=?Request[cusneed][i];//線程被分配的資源加上已申請了的
????????????Need[cusneed][i]?-=?Request[cusneed][i];//線程還需要的資源減去已申請得到的
????????}
????????if?(Safe())//AVAILABLE?Allocation??Need變動之后,是否會導致不安全
????????{
????????????printf(“同意分配請求!\n“);
????????}
????????else
????????{
????????????printf(“您的請求被拒絕!\n“);
????????????for?(i?=?0;?i?????????????{
???????????????Available[i]?+=?Request[cusneed][i];
???????????????Allocation[cusneed][i]?-=?Request[cusneed][i];
????????????????Need

評論

共有 條評論