xxxx18一60岁hd中国/日韩女同互慰一区二区/西西人体扒开双腿无遮挡/日韩欧美黄色一级片 - 色护士精品影院www

  • 大小: 53KB
    文件類型: .zip
    金幣: 2
    下載: 0 次
    發(fā)布日期: 2021-06-02
  • 語(yǔ)言: 其他
  • 標(biāo)簽:

資源簡(jiǎn)介

內(nèi)容:編程實(shí)現(xiàn)銀行家算法、安全性算法 基本要求 能夠根據(jù)給定的資源分配情況,及某進(jìn)程提出的資源請(qǐng)求,通過算法得出是否能進(jìn)行分配。如能分配,需得出相應(yīng)的安全序列。 內(nèi)含多個(gè)實(shí)驗(yàn)報(bào)告 資源整合

資源截圖

代碼片段和文件信息

#include?
#include?
#include?“banker.h“


//試探分配
void?ProbeAlloc(int?processRESOURCE?*res)
{
Available.A?-=?res->A;
Available.B?-=?res->B;
Available.C?-=?res->C;

Allocation[process].A?+=?res->A;
Allocation[process].B?+=?res->B;
Allocation[process].C?+=?res->C;

Need[process].A?-=?res->A;
Need[process].B?-=?res->B;
Need[process].C?-=?res->C;
}

//若試探分配后進(jìn)入不安全狀態(tài),將分配回滾
void?RollBack(int?processRESOURCE?*res)
{
Available.A?+=?res->A;
Available.B?+=?res->B;
Available.C?+=?res->C;

Allocation[process].A?-=?res->A;
Allocation[process].B?-=?res->B;
Allocation[process].C?-=?res->C;

Need[process].A?+=?res->A;
Need[process].B?+=?res->B;
Need[process].C?+=?res->C;
}

//安全性檢查
bool?SafeCheck()
{
RESOURCE Work?=?Available;
bool Finish[PROCESSES_NUMBER]?=?{falsefalsefalsefalsefalse};
int i;
int j?=?0;

for?(i?=?0;?i? {
//是否已檢查過
if(Finish[i]?==?false)
{
//是否有足夠的資源分配給該進(jìn)程
if(Need[i].A?<=?Work.A?&&?Need[i].B?<=?Work.B?&&?Need[i].C?<=?Work.C)
{
//有則使其執(zhí)行完成,并將已分配給該進(jìn)程的資源全部回收
Work.A?+=?Allocation[i].A;
Work.B?+=?Allocation[i].B;
Work.C?+=?Allocation[i].C;
Finish[i]?=?true;
safe[j++]?=?i;
i?=?-1; //重新進(jìn)行遍歷
}
}
}

//如果所有進(jìn)程的Finish向量都為true則處于安全狀態(tài),否則為不安全狀態(tài)
for?(i?=?0;?i? {
if?(Finish[i]?==?false)
{
return?false;
}
}
return?true;
}

//資源分配請(qǐng)求
bool?request(int?processRESOURCE?*res)
{
//request向量需小于Need矩陣中對(duì)應(yīng)的向量
if(res->A?<=?Need[process].A?&&?res->B?<=?Need[process].B?&&?res->C?<=?Need[process].C)
{
//request向量需小于Available向量
if(res->A?<=?Available.A?&&?res->B?<=?Available.B?&&?res->C?<=?Available.C)
{
//試探分配
ProbeAlloc(processres);

//如果安全檢查成立,則請(qǐng)求成功,否則將分配回滾并返回失敗
if(SafeCheck())
{
return?true;
}
else
{
printf(“安全性檢查失敗。原因:系統(tǒng)將進(jìn)入不安全狀態(tài),有可能引起死鎖。\n“);
printf(“正在回滾...\n“);
RollBack(processres);
}
}
else
{
printf(“安全性檢查失敗。原因:請(qǐng)求向量大于可利用資源向量。\n“);
}
}
else
{
printf(“安全性檢查失敗。原因:請(qǐng)求向量大于需求向量。\n“);
}
return?false;
}

//輸出資源分配表
void?PrintTable()
{
printf(“\t\t\t*********資源分配表*********\n“);
printf(“Process???????Max??????????Allocation??????????Need??????????Available\n“);
printf(“??????????A????B????C?????A????B????C???????A????B????C??????A????B????C\n“);
printf(“??P0??????%d????%d????%d?????%d????%d????%d???????%d????%d????%d??????%d????%d????%d\n“Max[0].AMax[0].BMax[0].CAllocation[0].AAllocation[0].BAllocation[0].CNeed[0].ANeed[0].BNeed[0].CAvailable.AAvailable.BAvailable.C);
printf(“??P1??????%d????%d????%d?????%d????%d????%d???????%d????%d????%d\n“Max[1].AMax[1].BMax[1].CAllocation[1].AAllocation[1].BAllocation[1].CNeed[1].ANeed[1].BNeed[1].C);
printf(“??P2??????%d????%d????%d?????%d????%d????%d???????%d????%d????%d\n“Max[2].AMax[2].BMax[2].CAllocation[2].AAllocation[2].BAllocation[2].CNeed[2].ANeed[2].BNe

?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----

?????文件????????637??2011-05-15?14:59??banker.h

?????文件???????4537??2011-05-15?19:32??main.c

-----------?---------??----------?-----??----

?????????????????5174????????????????????2


評(píng)論

共有 條評(píng)論

相關(guān)資源