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

  • 大小: 8KB
    文件類型: .cpp
    金幣: 1
    下載: 0 次
    發布日期: 2021-05-17
  • 語言: C/C++
  • 標簽:

資源簡介

(1) 簡單的交互界面 (2) 能顯示當前系統資源的剩余情況和占用情況 (3) 能輸入每個進程的最大資源要求 模擬利用銀行家算法為進程的若干次資源請求分配資源 (4) 輸入本次資源要求; (5) 按銀行家算法為進程分配資源,本次分配是否成功要顯示出來(要能處理各種情況:可以滿足這次請求、由于資源不夠不能滿足這次請求、由于可能產生不安全不能滿足這次請求、請求不合理拒絕請求等) (6) 作業撤銷時要回收資源

資源截圖

代碼片段和文件信息


//5.源程序代碼
#include?
#include?
#include?
#include?
//定義全局變量
const?int?x=10y=10;???//常量,便于修改
int?Available[x];??????//各資源可利用的數量
int?Allocation[y][y];??//各進程當前已分配的資源數量
int?Max[y][y];??//各進程對各類資源的最大需求數
int?Need[y][y];?//尚需多少資源
int?Request[x];?//申請多少資源
int?Work[x];?//工作向量,表示系統可提供給進程繼續運行所需的各類資源數量
int?Finish[y];?//表示系統是否有足夠的資源分配給進程,1為是
int?p[y];??//存儲安全序列
int?ij;???//i表示進程,j表示資源
int?nm;??//n為進程i的數量m為資源j種類數
int?l=0;???//l用來記錄有幾個進程是Finish[i]=1的,當l=n是說明系統狀態是安全的
int?counter=0;
?
//函數聲明
void?chushihua();???//初始化函數
void?safe();??????//安全性算法
void?show();????//函數show輸出當前狀態
void?bank();?????//銀行家算法
void?jieshu();??????//結束函數

void?chushihua()
{
????cout<<“輸入進程的數量:?“;//從此開始輸入有關數據
????cin>>n;
????cout<<“輸入資源種類數:?“;
????cin>>m;
????cout< cout<<“............................................“<????for?(j=0;?j????{
???????cout<<“????輸入資源?“<???????cin>>Available[j];?//輸入數字的過程...
???????Work[j]=Available[j];??????//初始化Work[j],它的初始值就是當前可用的資源數
????}
????cout<????cout<<“............................................“< for?(i=0;?i????{
cout<<“?????輸入進程?“<????????for?(j=0;?j????????{
???????
????????cin>>Allocation[i][j];
????????}
????cout<????Finish[i]=0;//初始化Finish[i]
????}
????cout<????for?(i=0;?i????{??cout<<“???輸入進程?“<????????for?(j=0;?j????????{
????????
??????????cin>>Max[i][j];
??????????if(Max[i][j]>=Allocation[i][j])?//若最大需求大于已分配,則計算需求量
??????????Need[i][j]?=?Max[i][j]-Allocation[i][j];
??????????else
??????????Need[i][j]=0;//Max小于已分配的時候,此類資源已足夠不需再申請
????????}
??????cout<????}
????cout<}

//安全性算法函數
void?safe()
{
????l=0;
????for?(i=0;?i?{??//i++
????if?(Finish[i]==0)
??{??//逐個查找Finish[i]==0的進程????條件一
????counter=0;???//記數器
????for?(j=0;?j????{
????if?(Work[j]>=Need[i][j])??counter=counter+1;//可用大于需求,記數
????}
????if(counter==m)??//i進程的每類資源都符合Work[j]>=Need[i][j]?條件二
????{
????????p[l]=i;??//存儲安全序列
????????Finish[i]=1;??//i進程標志為可分配
????????for?(j=0;?j???????????Work[j]=Work[j]+Allocation[i][j];??//釋放資源
????????l=l+1;?//記數現在有L個進程是安全的,當L=N時說明滿足安全序列
????????i=?-1;?//從第一個進程開始繼續尋找滿足條件一二的進程
????}
??}
?}
}

//顯示當前狀態函數
void?show()?//函數show輸出當前資源分配情況
{
????int?ij;?//局部變量
????int?All[y];?//各種資源的總數量
????int?L1;?//局部變量L1
????cout<<“當前的狀態為:“<????cout<<“各種資源的總數量:“<????for?(j=0;j????{
????cout<<“?資源“<????All[j]=Available[j];???//總數量=可用的+已分配的
????for?(i=0;i????cout<????}
????cout<????for?(j=0;j??????????cout<<“?資源“<

評論

共有 條評論

相關資源