亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 銀行家算法實現系統資源管理.cpp

?? 操作系統課程設計
?? CPP
字號:
#include<stdio.h>
#define m 4//資源種類
#define n 5//進程個數
int i,j, pr[n];//pr[n]進程編號
struct process //將進程定義為結構體類型,便于引用
{
  int allocation[n][m];//已分配的資源數量
  int need[n][m];//還需要申請的資源數
  int available[m];//可用資源數
  int add[m];//添加資源時,用于輸入
  int del[m];//刪除資源時用
}p;
void Input()//輸入功能
{     printf("已分配的資源量:\n");
       for(i=0;i<n;i++)
         for(j=0;j<m;j++) 
		 {
			 scanf("%d",&p.allocation[i][j]);
		 }
	  printf("\n請輸入資源需求量:\n");
       for(i=0;i<n;i++)
	     for(j=0;j<m;j++)
		 {
		   scanf("%d",&p.need[i][j]);
		 }
     printf("可用的資源:");
    for(i=0;i<m;i++)
     scanf("%d",&p.available[i]);
}
void Output()//顯示系統資源
{   
	printf("顯示系統資源使用分配情況: \n");
	printf("已分配的資源數量  ");
	printf("還需要申請的資源數");
    printf("\n");
    for(i=0;i<n;i++)
	{      
		
		for(j=0;j<m;j++)//已分配的資源數量
		{  
	       printf("%d   ",p.allocation[i][j]);
	  	  
		}
		printf("       ");
		for(j=0;j<m;j++)//還需要申請的資源數
		{  
	  	   printf("%d   ",p.need[i][j]);
		}
		 printf("\n");
	}
        printf("\n可用資源數:");//可用的資源
       for(i=0;i<m;i++)
       printf("%d  ",p.available[i]);
	   printf("\n");
}
bool Safe(process g)//安全性算法
{    
     int flag=1;
	 int r=0,l=0;//r標明所有進程的安全狀態,l進程編號
     int work[m];//工作向量,標明系統可提供給進程繼續運行所需的各類資源數
     bool finsh[n],rest=true;//rest 用于標記是否為1,1代表安全
     for(i=0;i<n;i++)//為每個進程的finish賦值為false
          finsh[i]=false;
     for(i=0;i<m;i++)
         work[i]=g.available[i];//可用資源標記為work 防止修改時混亂
      do
	  {
        for(i=0;i<n;i++)
		{ 
          if(finsh[i]==false)
		  {
                  for(j=0;j<m;j++)//work<need 說明資源不充足,逐類資源進行驗算
				  {
					  if(work[j]<g.need[i][j])
					  {
						  flag=0;//不安全置為0
						  break;
					  }
		  }
                 if(j>=m)  //如果j>=m說明work >=need資源充足,逐類資源進行驗算
				 {
                   flag=1;//表明安全
                   finsh[i]=true;
                   pr[l]=i;//標記進程號
                   l++;
                   for (j=0;j<m;j++)
                    work[j]=work[j]+g.allocation[i][j]; 
				 }
		  }
		}
          r=r+1;//共循環次數 直到所有進程都安全 或不安全為止
	  }while(r<n); 
     if(flag==0) 
		 rest=false;//不安全
      return rest; //返回rest的值判斷是否安全
}
void Safe()//輸出安全序列
{    
     if (Safe(p))
	 {
	  for(i=0;i<n;i++)
      printf("p%d  ",i);
	  printf("在該時刻的安全序列是");
      for(i=0;i<n;i++)
      printf("p%d  ",pr[i]);
	 }
     else
      printf("\n在該時刻不安全!\n\n");
}
void add( )//添加資源
{ 
  printf("添加可用的資源:");
   int add[m];
   for(i=0;i<m;i++)
   scanf("%d",&p.add[i]);
   for(i=0;i<m;i++)
    p.available[i]=p.available[i]+p.add[i];
    printf("\n此時可用資源為: ");
   for(i=0;i<m;i++)
   printf("%d ",p.available[i]);
}
void del()//刪除資源
{
  printf("刪除可用的資源:");
   int add[m];
   for(i=0;i<m;i++)
   scanf("%d",&p.del[i]);
   for(i=0;i<m;i++)
    p.available[i]=p.available[i]-p.del[i];
    printf("\n此時可用資源為: ");
   for(i=0;i<m;i++)
   printf("%d ",p.available[i]);
}
void request(int request[],int k)//第K個進程申請資源
{
   bool bj=false;//初始值為false
   for(i=0;i<m;i++)
    if (request[i]>p.need[k][i]) bj=true;
    if (bj==true)
	{
      printf("請求資源大于需要的資源!可選擇添加資源");
      return;
	}
    for(i=0;i<m;i++) 
     if(request[i]>p.available[i]) bj=true;
     if (bj==true)
	 {
       printf("需要添加資源,可用資源不充足!");
       return;
	 }
	 int a[m],b[m],c[m],d[m];
     for(i=0;i<m;i++)//當bj不等于true時,對m種資源進行更新
	 { 
		 a[i]=p.available[i]=p.available[i]-request[i];
         b[i]=p.need[k][i]=p.need[k][i]-request[i];
        c[i]=p.allocation[k][i]=p.allocation[k][i]+request[i];
	 }
	 
	 if (Safe(p))
	 {
	  printf("分配成功,安全序列是");
      for(i=0;i<n;i++)
      printf("%d ",pr[i]);
	  printf("\n\n第%d個進程當前資源為:\n",k);
      printf("已分配資源      需要資源     請求的資源\n");
	  for (i=0;i<m;i++)//輸出當前進程的請求情況及資源情況
         printf("%d  ",c[i]);
	     printf("      ");
	 for (i=0;i<m;i++)
		 printf("%d  ",b[i]);
	     printf("      ");
	 for (i=0;i<m;i++)
		 printf("%d ",request[i]);
	 printf("\n可用資源為:");
	 for (i=0;i<m;i++)//退出前還原為初始狀態
	 {
		  d[i]=a[i]+c[i];
	      printf("%d  ",d[i]);
	 }
	 for(i=0;i<m;i++)//還原
   { 
	p.available[i]=p.available[i]+request[i];
    p.need[k][i]=p.need[k][i]+request[i];
    p.allocation[k][i]=p.allocation[k][i]-request[i];
	}
      return;
	}
   printf("\n結果如下:系統不安全,分配失敗");
   printf("\n\n回收完畢!");
   for(i=0;i<m;i++)//還原
   { 
	p.available[i]=p.available[i]+request[i];
    p.need[k][i]=p.need[k][i]+request[i];
    p.allocation[k][i]=p.allocation[k][i]-request[i];
   }
   printf("第%d個進程當前資源為:\n",k);
         printf("已分配資源      需要資源     請求的資源\n");
		 for (i=0;i<m;i++)//輸出當前進程的請求情況及資源情況
	     printf("%d   ",p.allocation[k][i]);
	     printf("       ");
	     for (i=0;i<m;i++)
		 printf("%d    ",p.need[k][i]);
	     printf("      ");
	     for (i=0;i<m;i++)
		 printf("%d   ",request[i]);
	

}

void main()//主程序
{ 
  while(1)
  {
   printf("\n************歡迎使用系統資源管理(用銀行家算法實現)************");
   printf("\n                             設計者:05多媒體1班  梁燕      \n");
   printf("\n             1   初始化系統資源          2  添加資源        ");
   printf("\n             3   刪除資源                4  申請資源        ");
   printf("\n             5   銀行家算法              6  顯示系統資源    ");
   printf("\n             7   退出資源管理系統                           \n");
   printf("\n**************************謝謝使用****************************\n\n");
   printf("\n請輸入你的選擇:");
   int p;
   scanf("%d",&p);
    if(p>0&&p<=7)
	{
     switch(p)
	 {  case 1: Input();
                Output();
                 break;
		case 2:  add()   ;break;
	    case 3:  del()   ;break;
        case 4:  
                   printf("\n請輸入申請資源的進程號:p");
                   int q;
                   scanf("%d",&q);
                   if (q>n)
                    printf("不存在該進程!\n");
                   else
				   { int a[m];
                     printf("請輸入進程申請各類資源的數量:");
                     for(i=0;i<m;i++)
                     scanf("%d",&a[i]);
                     request(a,q);
				   };                                          
                 break;
        case 5: Output(); 
			     Safe();break;
		case 6: Output(); 
			     break;

         case 7:  printf("退出成功!\n");return;
	 }
	}
	else printf("輸入錯誤,請重新輸入!");
  }
}
/*測試數據:Allocation    Need      Available
       p0   0032          0012      1622
       p1   1000          1750
       p2   1354          2356
       p3   0332          0652
       p4   0014          0656
 p2提出請求:1 2 2 2*/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产乱子轮精品视频| 国产精品亚洲视频| 男人操女人的视频在线观看欧美| 狠狠色丁香婷婷综合久久片| 99精品久久免费看蜜臀剧情介绍| 欧美日韩亚洲国产综合| 国产视频一区在线播放| 免费在线观看日韩欧美| 在线一区二区三区四区| 国产网站一区二区三区| 日本不卡123| 欧美日韩亚洲综合在线| 中文字幕亚洲一区二区va在线| 久热成人在线视频| 欧美日韩亚洲另类| 亚洲一区二区三区影院| 不卡在线视频中文字幕| 久久久亚洲国产美女国产盗摄 | 中文字幕一区二区三区不卡| 麻豆精品蜜桃视频网站| 欧美人狂配大交3d怪物一区| 亚洲欧洲在线观看av| 国产传媒欧美日韩成人| 26uuu亚洲| 男人的j进女人的j一区| 欧美美女一区二区三区| 亚洲大片在线观看| 在线观看一区日韩| 亚洲老妇xxxxxx| 91麻豆福利精品推荐| 国产精品视频观看| 波波电影院一区二区三区| 精品国产1区2区3区| 久久精品免费观看| 精品国产伦理网| 国产在线观看一区二区| 久久久久久麻豆| 国产一区二区三区美女| 国产清纯白嫩初高生在线观看91 | 91精品欧美一区二区三区综合在| 亚洲激情在线激情| 在线视频一区二区免费| 亚洲精品自拍动漫在线| 欧美吞精做爰啪啪高潮| 丝袜亚洲另类丝袜在线| 欧美一区二区三区免费观看视频| 蜜臀91精品一区二区三区| 日韩欧美一区中文| 国产激情偷乱视频一区二区三区| 国产欧美一区二区精品久导航| 成人午夜短视频| 亚洲乱码国产乱码精品精可以看| 91免费在线视频观看| 亚洲电影一区二区| 欧美v国产在线一区二区三区| 免费精品视频最新在线| 亚洲精品一区二区三区99| 成人自拍视频在线观看| 夜夜夜精品看看| 日韩欧美在线1卡| k8久久久一区二区三区 | 91色视频在线| 首页国产欧美久久| 久久久久久99久久久精品网站| 成人h动漫精品| 日韩在线一区二区三区| 欧美激情中文不卡| 欧美日韩国产成人在线免费| 久久成人麻豆午夜电影| 中文字幕亚洲不卡| 日韩欧美国产一区二区在线播放 | 国产亚洲欧美中文| 欧美性感一区二区三区| 国产在线视频精品一区| 伊人性伊人情综合网| 欧美一区二区精品在线| av一区二区久久| 奇米777欧美一区二区| 中文字幕制服丝袜一区二区三区| 欧美欧美午夜aⅴ在线观看| 国产98色在线|日韩| 青青草成人在线观看| 成人免费在线视频| 久久男人中文字幕资源站| 一本到一区二区三区| 国产真实精品久久二三区| 亚洲成人一区在线| 亚洲欧美在线视频| 久久久亚洲欧洲日产国码αv| 欧美日韩国产高清一区二区三区| voyeur盗摄精品| 国产激情视频一区二区三区欧美| 亚洲18影院在线观看| 亚洲欧美日韩在线不卡| 久久精品亚洲国产奇米99| 在线不卡一区二区| 欧美性大战久久| 99视频国产精品| 国产精品一区二区91| 免费av成人在线| 天使萌一区二区三区免费观看| 亚洲欧美激情插| 中文字幕字幕中文在线中不卡视频| 精品久久久久久久久久久久久久久 | 午夜久久久久久久久久一区二区| 亚洲天堂2016| 中文字幕一区二区三| 国产精品美女一区二区三区| 久久人人超碰精品| 久久综合狠狠综合久久综合88| 91精品国产综合久久香蕉麻豆 | 国产精品久久久久7777按摩| 欧美精品一区二区三区蜜桃| 欧美一区二区三区四区久久| 在线成人av网站| 91精品综合久久久久久| 在线不卡免费av| 欧美一区二区视频在线观看| 欧美女孩性生活视频| 欧美高清激情brazzers| 欧美绝品在线观看成人午夜影视| 欧美日韩国产综合草草| 这里只有精品电影| 日韩精品中午字幕| 久久精品夜夜夜夜久久| 国产精品婷婷午夜在线观看| 亚洲婷婷综合色高清在线| 五月天视频一区| 亚洲国产精品麻豆| 亚洲成av人片在线| 美女视频一区二区| 国产精品中文有码| 99麻豆久久久国产精品免费| 日本精品一级二级| 在线观看91av| 久久蜜桃一区二区| 日本一区二区不卡视频| 中文字幕日本不卡| 亚洲自拍偷拍综合| 日韩激情视频在线观看| 国产一区二区久久| av在线播放一区二区三区| 欧美性一级生活| 欧美大黄免费观看| 国产精品系列在线| 亚洲在线成人精品| 男男gaygay亚洲| av激情成人网| 日韩一区二区三区在线观看| 国产视频一区二区在线| 一区二区三区国产豹纹内裤在线| 亚洲成人激情综合网| 欧美日韩一区视频| 亚洲精品在线观| 亚洲精品视频观看| 精品影视av免费| 91美女福利视频| 欧美成人欧美edvon| 中文字幕一区二区三区不卡| 日本成人中文字幕在线视频| 成人综合在线观看| 91精品免费在线观看| 国产精品美女久久福利网站| 日本vs亚洲vs韩国一区三区| 成人激情电影免费在线观看| 日韩西西人体444www| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆 | 欧美成人精品1314www| 亚洲精品视频免费观看| 国产精品中文欧美| 日韩欧美国产电影| 一区二区三区精品视频在线| 国产电影精品久久禁18| 欧美日韩综合在线| 成人免费在线播放视频| 韩国欧美国产一区| 91精品在线观看入口| 亚洲综合自拍偷拍| 国产激情视频一区二区三区欧美| 欧美精品v国产精品v日韩精品 | 日韩欧美不卡在线观看视频| 亚洲欧美aⅴ...| 成人一级片在线观看| 精品久久99ma| 青青草视频一区| 欧美疯狂做受xxxx富婆| 亚洲综合视频网| 91在线高清观看| 国产精品久久久久毛片软件| 久久爱www久久做| 9191国产精品| 亚洲国产精品一区二区www在线| 9久草视频在线视频精品| 日本一区二区电影| 国产不卡免费视频| 国产精品亲子乱子伦xxxx裸| 国产一区二区不卡老阿姨| xvideos.蜜桃一区二区| 国产一区二区三区免费在线观看| 337p日本欧洲亚洲大胆色噜噜|