freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

操作系統(tǒng)課程設(shè)計進程_銀行家_頁面調(diào)度-文庫吧資料

2025-06-15 06:21本頁面
  

【正文】 n ture; 安全算法safe() 結(jié)束 輸出提示:系統(tǒng)是不安全的 int m。 Work+=ALLOCATION[i]。amp。 安全性算法 Safe()開始 Work=AVAILABLE。 int safe(vectorint Available,vectorvectorint Need,vectorvectorint Allocation,int n,int m)。//聲明 safe()安全性算法 void init()。 define TRUE 1 //定義 TRUE =1 define FALSE 0 //定義 FLASE=0 void bank(vectorint,vectorvectorint ,vectorvectorint ,int ,int )。 輸出提示:你的請求被拒! AVAILABLE[i]=REQUEST[i] ;ALLOCATION[i]=REQUEST[i]。 Error。 b、在進程中查找符合以下條件的進程: 條件 1: Finish[i]=0; 條件 2: need[i][j]=Work[j] 若找到,則執(zhí)行步驟 (3)否則,執(zhí)行步驟 (4) c、當(dāng)進程獲得資源后,可順利執(zhí)行,直至完成,并釋放出分配給它的資源,故應(yīng)執(zhí)行: Work[j]= Work[j]+ Allocation[i][j]; Finish[i]=1; goto step 2; d、如果所有的 Finish[i]=1 都滿足,則表示系統(tǒng)處于安全狀態(tài),否則,處于不安全狀態(tài)。 Finish,它表示系統(tǒng)是否有足夠的資源分配給進程,使之運行完成。 e、用 do{? }while 循環(huán)語句實現(xiàn)輸入字符 y/n 判斷是否繼續(xù)進行資源申請。 c、若以上兩個條件都滿足,則系統(tǒng)試探著將資源分配給申請的進程,并修改下面數(shù)據(jù)結(jié)構(gòu)中的數(shù)值: Available[i,j]= Available[i,j] Request i[j]; Allocation[i][j]= Allocation[i][j]+ Request i[j]; need[i][j]= need[i][j] Request i[j]; d、試分配后,執(zhí)行安全性檢查,調(diào)用 safe()函數(shù)檢查此次資源分配后系統(tǒng)是否處于安全狀態(tài)。 ( 2)銀行家算法數(shù)據(jù)結(jié)構(gòu): 可利用資源向量 int Available[j] j 為資源的種類 最大需求矩陣 int Max[i][j] i 為進程的數(shù)量 分配矩陣 int Allocation[i][j] 需求矩陣 int need[i][j]= Max[i][j] Allocation[i][j] 申請各類資源數(shù)量 int Request i[j] i 進程申請 j 資源的數(shù)量 工作向量 int Work[x] int Finish[y] ( 3)銀行家算法 進程 i 發(fā)出請求申請 k 個 j 資源, Request i[j]=k a、檢查申請量是否不大于需求量: Request i[j]=need[i,j],若條件不符重新輸入,不允許申請大于需求量。最后對試分配后的狀態(tài)調(diào)用安全性檢查算法進行安全性檢查。 算法原理及設(shè)計 ( 1)銀行家算法 思想 : 對用戶提出的請求進行合法性檢查,即檢查請求的是不大于需要的 ,是否不大于可利用的。所謂死鎖( Deadlock),是指多個進程在運行過程中因爭奪資源而造成的一種僵局( DeadlyEmbrace) ,當(dāng)進程處于這種僵持狀態(tài)時,若無外力作用,他們都將無法向前推進。)。||sGoOn[0]==39。 bGoOn=(sGoOn[0]==39。 cout 要繼續(xù)進行進程調(diào)度算法模擬嗎 ?(Y/N) 。 strcpy(sGoOn, )。 break。 //短進程優(yōu)先調(diào)度算法 break。 //時間片輪轉(zhuǎn)調(diào)度算法 break。 //優(yōu)先數(shù)調(diào)度算法 break。 //先來先服務(wù)算法 break。 cinInput。 if(readData()==1) //標志 讀進程流文件數(shù)據(jù)函數(shù) 執(zhí)行是否正確 { while (bGoOn) { coutendl 請選擇進程調(diào)度功能,輸入( 1 or 2 or 3 or 4) endlendl。 //PCB 初始化函數(shù) bGoOn= true。 interface()。 bool bGoOn。 coutendlendl。 cout ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ endl。 cout ▓▓ ▓▓ endl。 cout ▓▓ ┏━━━━━━━━━━━━━━━━━━┓ ▓▓ endl。 cout ▓▓ ▓▓ endl。 cout ▓▓ ☆ ★ ▓▓ endl。 cout ▓▓ ☆ ★ ▓▓ endl。 cout ▓▓ ▓▓ endl。 cout ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ endl。 } //void SPF() void interface() //顯示界面信息 { coutendlendl。 } cout 總周轉(zhuǎn)時間 :Total1 平均周轉(zhuǎn)時間 :Total1/(PCBNum1) 總帶權(quán)周轉(zhuǎn)時間 :Total2 平均帶權(quán)周轉(zhuǎn)時間 :Total2/(PCBNum1)endl。 pcbs[i].Finished=1。 Total1+=pcbs[i].TurnoverTime。 pcbs[i].WaitTime=pcbs[i].Timepcbs[i].ArriveTime。iPCBNum1。 cout pcbs[0].sNum pcbs[0].ArriveTime pcbs[0].WaitTime pcbs[0].RunTime pcbs[i].TurnoverTime pcbs[i].WeighTurnTimeendl。 int Total1= pcbs[0].WaitTime。 pcbs[0].TurnoverTime=pcbs[0].RunTime+pcbs[0].ArriveTime。 } } } pcbs[0].Finished=1。 pcbs[j].RunTime=。 strcpy(pcbs[j+1].sNum,)。 pcbs[j+1].RunTime=pcbs[j].RunTime。 strcpy(pcbs[j+1].sNum,pcbs[j].sNum)。 =pcbs[j+1].RunTime。 strcpy(,pcbs[j+1].sNum)。jPCBNumi1。iPCBNum1。 int i,j。 cout 短進程優(yōu)先調(diào)度算法執(zhí)行流 :endl。 }//void timer() void SPF() //短進程優(yōu)先調(diào)度算法 { reInitPCB()。i++) } //if(Num0) } //while(Flag==1) coutendl 輪轉(zhuǎn)周期數(shù) :Round 總時間片數(shù) :Totalendl。 } //if(pcbs[i].RunTime=block_time*(Round+1)) }//if(pcbs[i].Finished==0) } //for(i=0。 Total++。i++) { if(pcbs[i].Finished==0) { Flag=1。 for(i=0。i++) if(Num0) { Round++。 } //if(pcbs[i].Finished==0) } //for(i=0。iPCBNum1。 Num=0。 cout 時間片輪轉(zhuǎn)調(diào)度執(zhí)行流(時間片的長度為 5 秒) :endl。 //總時間片數(shù) reInitPCB()。 int Round=0。 coutendlendl。 Total2+=(float) pcbs[i].TurnoverTime/pcbs[i].RunTime。iPCBNum1。 Total2=。i++) { cout pcbs[Queue[i]].sNum pcbs[Queue[i]].Privilege pcbs[Queue[i]].RunTime pcbs[Queue[i]].TurnoverTime pcbs[Queue[i]].WeighTurnTimeendl。 for(i=0。 cout 優(yōu)先 數(shù)調(diào)度執(zhí)行流 :endl。iPCBNum。 Time+=pcbs[CurMin].RunTime。 pcbs[CurMin].TurnoverTime=pcbs[CurMin].RunTime+Time。j++) Queue[i]=CurMin。 } } //for(j=0。(pcbs[j].PrivilegeCurPriority)) { CurMin=j。j++) { if((pcbs[j].Finished==0)amp。 for(j=0。iPCBNum1。 reInitPCB()。 int Queue[MAXPCB]。 int Total1。 } //void FCFS() //優(yōu)先數(shù)調(diào)度算法 void privilege() { int i,j,CurMin。 } cout 總 周 轉(zhuǎn) 時 間 :Total1 平 均 周 轉(zhuǎn) 時間 :Total1/PCBNumendl 總帶權(quán)周轉(zhuǎn)時間 :Total2 平均帶權(quán)周轉(zhuǎn)時間 :Total2/(PCBNum1)endl。i++) { Total1+=pcbs[i].TurnoverTime。 for(i=0。 } Total1 = 0。 pcbs[i+1].TurnoverTime=pcbs[i+1].WaitTime+pcbs[i+1].RunTime。 pcbs[i+1].Time=pcbs[i].Time+pcbs[i].RunTime。iPCBNum1。 pcbs[0].WeighTurnTime=(float)pcbs[0].TurnoverTime/pcbs[0].RunTime。 cout 進程編號 到達時間 等待時間 運行時間 周轉(zhuǎn)時間 帶權(quán)周轉(zhuǎn)時間endl。 //重置 PCB 數(shù)據(jù) ,以供另一個算法使用 //輸出先來先服務(wù)調(diào)度算法執(zhí)行流 coutendlendl。 float Total2。 } } //void reInitPCB() //先來先服務(wù)調(diào)度算法 void FCFS() { int i。 pcbs[i].TurnoverTime=0。 pcbs[i].Time=0。iMAXPCB。 }// int readData() //重置 PCB 數(shù)據(jù) ,以供另一
點擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1