題目
利用銀行家演算法寫乙個系統安全性檢測程式(要求對關鍵步驟進行注釋),判定如下系統的安全性。已知系統有5個程序p0、p1、p2、p3、p4,三類資源a、b、c,當前時刻可用資源向量a=(0,0,0),各程序對資源的需求和占用情況如表所示,請問此時系統是否處於安全狀態?
表1 程序需求資源情況表
**如下:
#include #include #include #define re 100
int flag_need = 1;//標誌程序請求資源數量是否出錯
int row,col;
int max[re][re],allocation[re][re],need[re][re],finish[re] = ,**ailable[re],work[re],p[re];//定義最大需求矩陣、已獲得資源矩陣等
void init()
}printf("輸入每個程序已經分配的資源數按照%d x %d矩陣輸入:\n",row,col);//已分配資源矩陣allocation[i][j]
for(i = 0;i < row;i ++)
}
}printf("請輸入現有各資源數:\n");//現有資源:乙個一維向量 **ailabe
for(i = 0;i < col;i ++) }
void print(bool x)
printf("%d\n",p[k]);
}else
printf("系統不安全\n"); }
bool issafe()
if (k == col)
len ++; //統計程序個數
break;
} }}
/*len 控制對每個程序的訪問,len=row,證明所有程序都被訪問完畢,存在乙個安全序列
finish[i]
k控制對程序對需求每乙個資源的訪問 */
if (lastlen == len)else
}if(len == row)
else
}int main ()
執行截圖如下:
此次實驗有參考他人演算法,安全性的計算有點取巧
作業系統實驗四
學習如何利用管道機制 訊息緩衝佇列 共享儲存區機制進行程序間的通訊,並加深對上述通訊機制的理解。1 了解系統呼叫pipe 的功能和實現過程。2 編寫一c語言程式,使其用管道來實現父子程序間通訊。子程序向父程序傳送字串 is sending a message to parent 父程序則從管道中讀出...
作業系統 實驗四
include stdio.h include stdlib.h struct used table 10 已分配區表 struct temp,free table 10 空閒區表 void allocate char str 8 float leg void sort void reclaim c...
作業系統 實驗四
實驗四主存空間的分配和 1.1.實驗目的 用高階語言完成乙個主存空間的分配和 程式,以加深對動態分割槽分配方式及其演算法的理解。1.2.實驗要求 採用連續分配方式之動態分割槽分配儲存管理,使用首次適應演算法 迴圈首次適應演算法 最佳適應演算法和最壞適應演算法4種演算法完成設計。1 設計乙個作業申請佇...