<em id="0a85b"><option id="0a85b"></option></em>

<abbr id="0a85b"></abbr>

      <nobr id="0a85b"></nobr>
        <tr id="0a85b"></tr>
        9久久伊人精品综合,亚洲一区精品视频在线,成 人免费va视频,国产一区二区三区黄网,99国产精品永久免费视频,亚洲毛片多多影院,精品久久久无码人妻中文字幕,无码国产欧美一区二区三区不卡
        學(xué)習(xí)啦 > 學(xué)習(xí)電腦 > 操作系統(tǒng) > 操作系統(tǒng)基礎(chǔ)知識(shí) > 操作系統(tǒng)實(shí)驗(yàn)之銀行家算法

        操作系統(tǒng)實(shí)驗(yàn)之銀行家算法

        時(shí)間: 佳洲1085 分享

        操作系統(tǒng)實(shí)驗(yàn)之銀行家算法

          操作系統(tǒng)實(shí)驗(yàn)中的銀行家算法復(fù)雜難懂,那么我們究竟要怎么去理解呢?下面由學(xué)習(xí)啦小編為大家整理了操作系統(tǒng)實(shí)驗(yàn)銀行家算法的相關(guān)知識(shí),希望大家喜歡!

          操作系統(tǒng)實(shí)驗(yàn)——銀行家算法

          一、實(shí)驗(yàn)?zāi)康?/p>

          1、 理解銀行家算法。

          2、 掌握進(jìn)程安全性檢查的方法與資源分配的方法。

          二、實(shí)驗(yàn)內(nèi)容與基本要求

          編制模擬銀行家算法的程序,并以下面給出的例子驗(yàn)證所編寫的程序的正確性。

        進(jìn)程 已占資源 最大需求數(shù)
        資源種類 A B C D A B C D
        P0 0 0 1 2 0 0 1 2
        P1 1 0 0 0 1 7 5 0
        P2 1 3 5 4 2 3 5 6
        P3 0 6 3 2 0 6 5 2
        P4 0 0 1 4 0 6 5 6

          現(xiàn)在系統(tǒng)中A、B、C、D 4類資源分別還剩1、5、2、0個(gè),請(qǐng)按銀行家算法回答:

          1、 現(xiàn)在系統(tǒng)是否處于安全狀態(tài)?

          2、 如果現(xiàn)在進(jìn)程P1提出需要(0、4、2、0)個(gè)資源的請(qǐng)求,系統(tǒng)能否滿足它的請(qǐng)求?

          三、實(shí)驗(yàn)報(bào)告內(nèi)容

          1、 銀行家算法和安全性檢查算法原理

          銀行家算法:

          銀行家算法最初級(jí)原為銀行系統(tǒng)設(shè)計(jì),以確保銀行在發(fā)放現(xiàn)金貸款時(shí),不會(huì)發(fā)生不能滿足所有客戶需要的情況。在OS設(shè)計(jì)中,也可以用它來(lái)避免死鎖。

          為實(shí)現(xiàn)銀行家算法,每個(gè)新進(jìn)程在進(jìn)入系統(tǒng)時(shí)它必須申明在運(yùn)行過(guò)程中,可能需要的每種資源類型的最大單元數(shù)目,其數(shù)目不應(yīng)超過(guò)系統(tǒng)所擁有的資源總量。當(dāng)某一進(jìn)程請(qǐng)求時(shí),系統(tǒng)會(huì)自動(dòng)判斷請(qǐng)求量是否小于進(jìn)程最大所需,同時(shí)判斷請(qǐng)求量是否小于當(dāng)前系統(tǒng)資源剩余量。若兩項(xiàng)均滿足,則系統(tǒng)試分配資源并執(zhí)行安全性檢查算法。

          安全性檢查算法 :

          安全性檢查算法用于檢查系統(tǒng)進(jìn)行資源分配后是否安全,若安全系統(tǒng)才可以執(zhí)行此次分配;若不安全,則系統(tǒng)不執(zhí)行此次分配。

          安全性檢查算法原理為:在系統(tǒng)試分配資源后,算法從現(xiàn)有進(jìn)程列表尋找出一個(gè)可執(zhí)行的進(jìn)程進(jìn)行執(zhí)行,執(zhí)行完成后回收進(jìn)程占用資源;進(jìn)而尋找下一個(gè)可執(zhí)行進(jìn)程。當(dāng)進(jìn)程需求量大于系統(tǒng)可分配量時(shí),進(jìn)程無(wú)法執(zhí)行。當(dāng)所有進(jìn)程均可執(zhí)行,則產(chǎn)生一個(gè)安全執(zhí)行序列,系統(tǒng)資源分配成功。若進(jìn)程無(wú)法全部執(zhí)行,即無(wú)法找到一條安全序列,則說(shuō)明系統(tǒng)在分配資源后會(huì)不安全,所以此次分配失敗。

          2、 程序流程圖

          3、 程序及注釋

          #include

          //////////////////////////////////////////////////////////////////////////

          //全局變量定義

          int Available[100]; //可利用資源數(shù)組

          int Max[50][100]; //最大需求矩陣

          int Allocation[50][100]; //分配矩陣

          int Need[50][100]; //需求矩陣

          int Request[50][100]; //M個(gè)進(jìn)程還需要N類資源的資源量

          int Finish[50];

          int p[50];

          int m,n; //M個(gè)進(jìn)程,N類資源

          /////////////////////////////////////////////////////////////////////////

          //安全性算法

          int Safe()

          {

          int i,j,l=0;

          int Work[100]; //可利用資源數(shù)組

          for (i=0;i

          Work[i]=Available[i];

          for (i=0;i

          Finish[i]=0;

          for (i=0;i

          {

          if (Finish[i]==1)

          continue;

          else

          {

          for (j=0;j

          {

          if (Need[i][j]>Work[j])

          break;

          }

          if (j==n)

          {

          Finish[i]=1;

          for(int k=0;k

          Work[k]+=Allocation[i][k];

          p[l++]=i;

          i=-1;

          }

          else continue;

          }

          if (l==m)

          {

          cout<<"系統(tǒng)是安全的"<<'\n';

          cout<<"系統(tǒng)安全序列是:\n";

          for (i=0;i

          {

          cout<

          if (i!=l-1)

          cout<<"-->";

          }

          cout<<'\n';

          return 1;

          }

          }

          }

          /////////////////////////////////////////////////////////////////////////////////

          //銀行家算法

          int main()

          {

          int i,j,mi;

          cout<<"輸入進(jìn)程的數(shù)目:\n";

          cin>>m;

          cout<<"輸入資源的種類:\n";

          cin>>n;

          cout<<"輸入每個(gè)進(jìn)程最多所需的各類資源數(shù),按照"<

          for (i=0;i

          for(j=0;j

          cin>>Max[i][j];

          cout<<"輸入每個(gè)進(jìn)程已經(jīng)分配的各類資源數(shù),按照"<

          for (i=0;i

          {

          for(j=0;j

          {

          cin>>Allocation[i][j];

          Need[i][j]=Max[i][j]-Allocation[i][j];

          if (Need[i][j]<0)

          {

          cout<<"你輸入的第"<

          j--;

          continue;

          }

          }

          }

          cout<<"請(qǐng)輸入各個(gè)資源現(xiàn)有的數(shù)目:\n";

          for (i=0;i

          cin>>Available[i];

          Safe();

          while (1)

          {

          cout<<"輸入要申請(qǐng)的資源的進(jìn)程號(hào):(第一個(gè)進(jìn)程號(hào)為0,第二個(gè)進(jìn)程號(hào)為1,依此類推)\n";

          cin>>mi;

          cout<<"輸入進(jìn)程所請(qǐng)求的各個(gè)資源的數(shù)量\n";

          for (i=0;i

          cin>>Request[mi][i];

          for (i=0;i

          {

          if (Request[mi][i]>Need[mi][i])

          {

          cout<<"所請(qǐng)求資源數(shù)超過(guò)進(jìn)程的需求量!\n";

          return 0;

          }

          if (Request[mi][i]>Available[i])

          {

          cout<<"所請(qǐng)求資源數(shù)超過(guò)系統(tǒng)所有的資源數(shù)!\n";

          return 0;

          }

          }

          for (i=0;i

          {

          Available[i]-=Request[mi][i];

          Allocation[mi][i]+=Request[mi][i];

          Need[mi][i]-=Request[mi][i];

          }

          if (Safe())

          cout<<"同意分配請(qǐng)求\n";

          else

          {

          cout<<"SORRY╮(╯▽╰)╭……你的請(qǐng)求被拒絕…\n";

          for (i=0;i

          {

          Available[i]+=Request[mi][i];

          Allocation[mi][i]-=Request[mi][i];

          Need[mi][i]+=Request[mi][i];

          }

          }

          for (i=0;i

          Finish[i]=0;

          char Flag; //標(biāo)志位

          cout<<"是否再次請(qǐng)求分配?是請(qǐng)按Y/y,否請(qǐng)按N/n";

          while (1)

          {

          cin>>Flag;

          if (Flag=='Y'||Flag=='y'||Flag=='N'||Flag=='n')

          break;

          else

          {

          cout<<"請(qǐng)按要求重新輸入:\n";

          continue;

          }

          }

          if (Flag=='Y'||Flag=='y')

          continue;

          else break;

          }

          }

          4、 運(yùn)行結(jié)果以及結(jié)論

          圖示為題目所給定的條件下的程序運(yùn)行結(jié)果。可看出在現(xiàn)有分配情況下,該系統(tǒng)安全。

          下圖為,P1提出請(qǐng)求后,程序的運(yùn)行結(jié)果,可知,系統(tǒng)仍然安全,所以系統(tǒng)可以滿足請(qǐng)求。

        3605553 主站蜘蛛池模板: 国产精品免费久久久免费| 日本中文字幕有码在线视频| 国产一区二区精品尤物| 国产免费一区二区三区在线观看 | 国产精品亚洲成在人线| 99久久婷婷国产综合精品青草漫画| 公与媳妻hd中文在线观看| 国产精品熟女亚洲av麻豆| 日本中文字幕在线播放| 久久人妻无码一区二区三区av| 精品无码久久久久国产| 成人午夜国产内射主播| 国产目拍亚洲精品二区| 亚欧色一区w666天堂| 高潮潮喷奶水飞溅视频无码| 亚洲精品v欧美精品动漫精品| 国内熟妇与亚洲洲熟妇妇| 亚洲精品美女久久久久9999| 极品无码国模国产在线观看| 亚洲中文字幕第一页在线| 国产成年无码久久久免费| 在线精品国产中文字幕| 亚洲一区二区三区国产精品| 免费无码成人AV片在线| 色婷婷亚洲精品综合影院| 亚洲国产精品国自拍av| 高级艳妇交换俱乐部小说| 日日猛噜噜狠狠扒开双腿小说| 99re在线视频观看| 东京热av无码电影一区二区| 真实国产老熟女无套中出| 综合久久少妇中文字幕| 少妇熟女久久综合网色欲| 欧美人在线一区二区三区| 久久精品国产99国产精品严洲| 破了亲妺妺的处免费视频国产 | 俺来也俺去啦最新在线| 久久无码中文字幕免费影院蜜桃| 国产在线精品国偷产拍| 久久777国产线看是看精品| 免费大片黄国产在线观看|