欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      頁面置換算法實驗報告(五篇模版)

      時間:2019-05-14 11:16:52下載本文作者:會員上傳
      簡介:寫寫幫文庫小編為你整理了多篇相關(guān)的《頁面置換算法實驗報告》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《頁面置換算法實驗報告》。

      第一篇:頁面置換算法實驗報告

      計算機體系結(jié)構(gòu)

      實驗報告

      班級:計科姓名:張華敏學號:

      0902班

      0909090814

      FIFU算法

      一,實驗內(nèi)容:

      編寫一段程序來模擬頁面置換算法中的FIFU算法的實現(xiàn) 二,算法設(shè)計:

      設(shè)置一個產(chǎn)生隨機數(shù)的函數(shù)rand()產(chǎn)生隨機數(shù)來模擬程序所需訪問的頁面的標號,如果頁面需要被訪問則把頁面中的一個標志位設(shè)為in表示他已經(jīng)被調(diào)入內(nèi)存,如果再次需要訪問此頁面是只需檢查此頁面的標志位是否為in就可判斷它是否已經(jīng)存在在內(nèi)存中了,如果已經(jīng)存在則可直接使用,如果不存在則需調(diào)入,在調(diào)入新頁面是先檢查內(nèi)存空間是否已滿,如果未滿則直接調(diào)入,如果已經(jīng)滿了則需選擇一個頁面將其調(diào)出,調(diào)出時就把頁面的標志位設(shè)為out。選擇頁面的規(guī)則是:將進入內(nèi)存時間最久的頁面調(diào)出去,為了達到這一目的,在頁面中設(shè)置一個計數(shù)器,每當有新頁面調(diào)入內(nèi)存時則將內(nèi)存中已經(jīng)存在的頁面計數(shù)器自動加一,調(diào)出頁面時就選擇那個計數(shù)器最大值的頁面,調(diào)出后重新將計數(shù)器設(shè)為零。三,遇到的問題及解決方案:

      在做此實驗時遇到了一些小問題,如在C語言中函數(shù)名定義為export()則會報錯。在調(diào)用有返回值的函數(shù)是如果直接int s=use(pag)則會運行出錯,要先分開寫如:int s,s=use(pag).四,源代碼 頭文件.cpp #include #include

      int t;//全局變量,用來盛放rand()函數(shù)產(chǎn)生的隨機數(shù)

      enum boolean{in,out};//定義一個枚舉類型 /////////如果把in,out換成 true,false則會處錯誤

      typedef struct { int num;//頁面編號 char content;//頁面內(nèi)容

      enum boolean flog;//判斷此頁面是否頁調(diào)入,調(diào)入為true,否則為false;int count;//頁面計數(shù)器

      int usebit;//使用位,被使用過值為1,否則為0 }page;

      FIFU.cpp #include #include #include #include“頭文件.cpp”

      int capacity=3;//設(shè)置內(nèi)存最多可以容納的頁面數(shù)

      void initialize(page p[])//初始化頁面函數(shù) { for(int i=0;i<5;i++)//初始化頁面,頁面內(nèi)容分別為小寫字母 abcde,計數(shù)器全部為0 {p[i].num=i;p[i].content=i+97;p[i].flog=out;p[i].count=0;} }

      int use(page p[]){ t=rand()%5;//產(chǎn)生一個0-5的隨機數(shù),if(p[t].flog==in){ printf(“tt%d頁面命中n”,t);//for(int i=0;i<5;i++)//調(diào)入此頁面后其他以在內(nèi)存中存在的頁面計數(shù)器加1 // { // if(p[i].flog==in)// p[i].count++;// } return(1);} else return(0);}

      void import(page p[])//調(diào)入頁面的函數(shù) { /* int t=rand()%5;//產(chǎn)生一個0-5的隨機數(shù),if(p[t].flog==in)printf(“tt%d頁面命中n”,t);*/ // if(p[t].flog==out)//如果此頁面未被調(diào)入內(nèi)存則立即調(diào)入 p[t].flog=in;capacity--;//調(diào)入后內(nèi)存空間減少一葉

      for(int i=0;i<5;i++)//調(diào)入此頁面后其他以在內(nèi)存中存在的頁面計數(shù)器加1 { if(p[i].flog==in&&p[i].num!=t)p[i].count++;} printf(“頁面%d被調(diào)入內(nèi)存n”,t);}

      void port(page p[])//調(diào)出頁面的函數(shù),,,,,,,,,,,如果函數(shù)名定義為export則處錯誤 { int x=0,y;//x用來暫時存放計數(shù)器 中的最大值,y存放此頁面的頁面號 for(int i=0;i<5;i++)//尋找計數(shù)器值最大的 頁面 { if(p[i].count>x){ x=p[i].count;y=i;} }

      p[y].flog=out;//修改調(diào)入符號 p[y].count=0;capacity++;//調(diào)入后內(nèi)存空間增加一葉 printf(“ttt頁面%d被調(diào)出內(nèi)存n”,y);}

      main(){ int s;long t3,t1,t2;page pag[5];//定義五個頁面,,,,,,,,,,,如果這個定義在子函數(shù)之前那么不用通過參數(shù) 子函數(shù)便可以直接訪問 t3=time(NULL);initialize(pag);do { t1=time(NULL);s=use(pag);//,,,,,,,,,,,,,,如果這里寫成int s=use(pag)則會運行出錯

      //printf(“s=%d capacity=%dn”,s,capacity);if(capacity>0&&s==0)import(pag);else { if(capacity==0&&s==0){ port(pag);import(pag);} } t2=time(NULL);while(t2-t1<1){ t2=time(NULL);} }while(t2-t3<20);system(“pause”);}

      五,測試結(jié)果:

      LFU算法

      一,實驗內(nèi)容:

      編寫一段程序來模擬頁面置換算法中的LFU算法的實現(xiàn) 二,算法設(shè)計:

      設(shè)置一個產(chǎn)生隨機數(shù)的函數(shù)rand()產(chǎn)生隨機數(shù)來模擬程序所需訪問的頁面的標號,如果頁面需要被訪問則把頁面中的一個標志位設(shè)為in表示他已經(jīng)被調(diào)入內(nèi)存,如果再次需要訪問此頁面是只需檢查此頁面的標志位是否為in就可判斷它是否已經(jīng)存在在內(nèi)存中了,如果已經(jīng)存在則可直接使用,如果不存在則需調(diào)入,在調(diào)入新頁面是先檢查內(nèi)存空間是否已滿,如果未滿則直接調(diào)入,如果已經(jīng)滿了則需選擇一個頁面將其調(diào)出,調(diào)出時就把頁面的標志位設(shè)為out。選擇頁面的規(guī)則是:將最近一段時間未被訪問過的頁面調(diào)出。為了達到這一目的在頁面中設(shè)置一個標志位,如果頁面在近期只要被訪問過則將該標志位設(shè)置為1(默認為0),在選擇調(diào)出頁面時只需將標志位為0的頁面調(diào)出即可。三,遇到的問題及解決方案: 未遇到什么問題

      四,實驗感悟:

      遇到問題后上網(wǎng)查資料和有效,及時查不到自己想要的但是也可從相關(guān)結(jié)果中獲得啟發(fā)給自己靈感來想到解決問題的方法.四,源代碼

      FLU.cpp #include #include #include #include“頭文件.cpp”

      int capacity=3;

      //設(shè)置內(nèi)存最多可以容納的頁面數(shù)

      void initialize(page p[])

      //初始化頁面函數(shù)

      {

      for(int i=0;i<5;i++)

      //初始化頁面,頁面內(nèi)容分別為小寫字母 abcde,計數(shù)器全部為0

      {p[i].num=i;

      p[i].content=i+97;

      p[i].flog=out;

      p[i].count=0;

      p[i].usebit=0;

      }

      }

      int use(page p[]){

      t=rand()%5;

      //產(chǎn)生一個0-5的隨機數(shù),if(p[t].flog==in)

      {

      printf(“tt%d頁面命中n”,t);

      p[t].usebit=1;

      //for(int i=0;i<5;i++)//調(diào)入此頁面后其他以在內(nèi)存中存在的頁面計數(shù)器加1

      //

      {

      //

      if(p[i].flog==in)

      //

      p[i].count++;

      //

      }

      return(1);

      }

      else

      return(0);

      }

      void import(page p[])//調(diào)入頁面的函數(shù)

      {

      int t=rand()%5;

      //產(chǎn)生一個0-5的隨機數(shù),//if(p[t].flog==in)

      // {

      //

      printf(“tt%d頁面命中n”,t);

      //

      p[t].usebit=1;

      // }

      // if(p[t].flog==out)

      //如果此頁面未被調(diào)入內(nèi)存則立即調(diào)入

      p[t].flog=in;

      capacity--;

      //調(diào)入后內(nèi)存空間減少一葉

      for(int i=0;i<5;i++)//調(diào)入此頁面后其他以在內(nèi)存中存在的頁面計數(shù)器加1

      {

      if(p[i].flog==in&&p[i].num!=t)

      p[i].count++;

      }

      printf(“頁面%d被調(diào)入內(nèi)存n”,t);

      }

      void port(page p[])

      //調(diào)出頁面的函數(shù)

      ////////////////////////////////如果函數(shù)名定義為export則處錯誤

      {

      int x=0,y;//x用來暫時存放計數(shù)器 中的最大值,y存放此頁面的頁面號

      int z=-1;

      //用來判斷近期是否有未被訪問過的頁面

      int g=0;

      for(int i=0;i<5;i++)//尋找計數(shù)器值最大的 頁面

      {

      if(p[i].count>x)

      {

      x=p[i].count;

      y=i;

      }

      }

      for(int i=0;i<5;i++)

      {

      if(p[i].flog==in&&p[i].usebit==0)

      {

      z=i;

      g++;

      }

      }

      if(z==-1||g==3)//如果所有頁面均為1則按照FIFO算法置換頁面 //如果g=3則表明頁面使用位全為零,此時也按照FIFO算法置換頁面

      {

      p[y].flog=out;//修改調(diào)入符號

      p[y].count=0;

      capacity++;

      //調(diào)入后內(nèi)存空間增加一葉

      p[y].usebit=0;

      for(int i=0;i<5;i++)//將所有頁面置0

      p[i].usebit=0;

      printf(“ttt頁面%d被調(diào)出內(nèi)存n”,y);

      }

      else

      //如果有頁面為0則將此頁面置換出來

      {

      p[z].flog=out;//修改調(diào)入符號

      p[z].count=0;

      capacity++;

      //調(diào)入后內(nèi)存空間增加一葉

      printf(“ttt頁面%d被調(diào)出內(nèi)存n”,z);

      }

      }

      main(){

      int s;

      long t3,t1,t2;

      page pag[5];//定義五個頁面

      ///////////////////如果這個定義在子函數(shù)之前那么不用通過參數(shù) 子函數(shù)便可以直接訪問

      t3=time(NULL);

      initialize(pag);

      do

      {

      t1=time(NULL);

      s=use(pag);

      if(capacity>0&&s==0)

      import(pag);

      else

      {

      if(capacity==0&&s==0)

      {

      port(pag);

      import(pag);

      }

      }

      t2=time(NULL);

      while(t2-t1<1)

      {

      t2=time(NULL);

      }

      }while(t2-t3<20);

      system(“pause”);}

      六,實驗結(jié)果

      總結(jié)

      通過本次試驗我對各種頁面置換算法有了更深入的了解,也使得自己認識到平常學習到某些東西覺得懂了會了可是一旦實際動手操作起來就會發(fā)現(xiàn)總會存在這樣或者那樣的錯誤,只有多動手實際操作才會發(fā)現(xiàn)不足發(fā)現(xiàn)錯誤并且改正。查漏補缺提高自己的實際動手能力。

      第二篇:頁面置換算法實驗報告(精選)

      《操作系統(tǒng)--頁面置換算法》

      實驗報告

      名: 范學升

      號:1001050903

      級:電科10-1班

      業(yè):電子信息科學與技術(shù)

      一、實驗?zāi)康?/p>

      1.通過模擬實現(xiàn)幾種基本頁面置換的算法,了解虛擬存儲技術(shù)的特點。

      2.掌握虛擬存儲請求頁式存儲管理中幾種基本頁面置換算法的基本思想,并至少用三種算法來模擬實現(xiàn)。

      3.通過對幾種置換算法頁面的比較,來對比他們的優(yōu)缺點,并通過比較更換頻率來對比它們的效率。

      二、實驗內(nèi)容:

      設(shè)計一個虛擬存儲區(qū)和內(nèi)存工作區(qū),并使用下述算法來模擬實現(xiàn)頁面的置換: 1.先進先出的算法(FIFO)2.最近最久未使用算法(LRU)3.最佳置換算法(OPT)

      三、實驗分析

      在進程運行過程中,若其所訪問的頁面不存在內(nèi)存而需要把它們調(diào)入內(nèi)存,但內(nèi)存已無空閑時,為了保證該進程能夠正常運行,系統(tǒng)必須從內(nèi)存中調(diào)出一頁程序或數(shù)據(jù)送磁盤的對換區(qū)中。但應(yīng)調(diào)出哪個頁面,需根據(jù)一定的算法來確定,算法的好壞,直接影響到系統(tǒng)的性能。

      一個好的頁面置換算法,應(yīng)該有較低的頁面更換頻率。

      假設(shè)分給一作業(yè)的物理塊數(shù)為3,頁面數(shù)為20個。頁面號為(20個):

      7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1

      1.先進先出(FIFO)置換算法的思路

      該算法總是淘汰最先進入內(nèi)存的頁面,即選擇在內(nèi)存中駐留時間最久的頁面予以淘汰。該算法實現(xiàn)簡單,只需把一個進程已調(diào)入內(nèi)存的頁面,按照先后次序連接成一個隊列,并設(shè)置一個替換指針,使它總指向最老的頁面。

      2.最近久未使用(LRU)置換算法的思路

      最近久未使用置換算法的替換規(guī)則,是根據(jù)頁面調(diào)入內(nèi)存后的使用情況來進行決策的。該算法賦予每個頁面一個訪問字段,用來記錄一個頁面自上次被訪問以來所經(jīng)歷的時間,當需淘汰一個頁面的時候選擇現(xiàn)有頁面中其時間值最大的進 行淘汰。

      3.最佳(OPT)置換算法的思路

      其所選擇的被淘汰的頁面,獎是以后不使用的,或者是在未來時間內(nèi)不再被訪問的頁面,采用最佳算法,通??杀WC獲得最低的缺頁率。

      4.數(shù)據(jù)結(jié)構(gòu)

      struct pageInfor { int content;//頁面號 int timer;//被訪問標記 };

      class PRA { public:

      PRA(void);int findSpace(void);//查找是否有空閑內(nèi)存

      int findExist(int curpage);//查找內(nèi)存中是否有該頁面 int findReplace(void);//查找應(yīng)予置換的頁面 void display(void);//顯示 void FIFO(void);//FIFO算法 void LRU(void);//LRU算法

      void BlockClear(void);//BLOCK清空,以便用另一種方法重新演示 pageInfor * block;//物理塊 pageInfor * page;//頁面號串 private: };

      5.FIFO頁面置換算法

      當需要訪問一個新的頁面時,首先調(diào)用findExist(i)函數(shù)來查看物理塊中是否就有這個頁面,若要查看的頁面物理塊中就有,則調(diào)用display函數(shù)直接顯示,不需要替換頁面;如果要查看的頁面物理塊中沒有,就需要尋找空閑物理塊放入,若存在有空閑物理塊,則將頁面放入;若沒有空閑物理塊,則調(diào)用findReplace函數(shù)替換頁面。并將物理塊中所有頁面timer++。

      6.LRU頁面置換算法

      當需要訪問一個新的頁面,首先調(diào)用findExist(i)函數(shù)查看物理塊中是否就有這個頁面。

      7.OPT頁面置換算法

      當需要訪問一個新的頁面,首先調(diào)用findExist(i)函數(shù)來查看物理塊中是否有這個頁面。

      8.尋找置換頁面函數(shù)findReplace比較三個物理塊中的時間標記timer,找到時間最久的。

      四、源程序結(jié)構(gòu)分析

      1. 程序結(jié)構(gòu)

      程序共有以下九個部分:

      int findSpace(void);//查找是否有空閑內(nèi)存

      int findExist(int curpage);//查找內(nèi)存中是否有該頁面 int findReplace(void);//查找應(yīng)予置換的頁面 void display(void);//顯示 void FIFO(void);//FIFO算法 void LRU(void);//LRU算法 void OPT(void);//OPT算法;

      void BlockClear(void);//BLOCK清空,以便用另一種方法重新演示 int main()

      //主程序

      五、實驗結(jié)果

      1運行后的初始界面 opt算法

      3.FIFO算法

      4LRU算法

      第三篇:虛擬內(nèi)存頁面置換算法實驗報告

      課程名稱:

      操作系統(tǒng)原理

      實驗項目:

      虛擬內(nèi)存頁面置換算法

      室:

      地獄 018

      名 :

      死神

      號:

      專業(yè)班級 :

      實驗時間:

      2015/12 / 13

      實驗成績 評閱教師

      一、

      實驗?zāi)康眉耙?/p>

      通過這次實驗,加深對虛擬內(nèi)存頁面置換概念得理解,進一步掌握先進先出 FIFO、最佳置換OPI 與最近最久未使用LRU 頁面置換算法得實現(xiàn)方法。結(jié)合 Linux 得內(nèi)層得分析方法查瞧內(nèi)存得分配過程及 linux kernel 得內(nèi)存管理機制 二、實驗性質(zhì)

      設(shè)計性 三、實驗學時

      學時 四、實驗環(huán)境

      實驗環(huán)境1、實驗環(huán)境:

      C 與C++程序設(shè)計學習與實驗系統(tǒng) 2、知識準備:(1)使用 Linux得基本命令;(2)了解 Linux vmstat、free、top等命令查瞧linux系統(tǒng)得內(nèi)存分配情況;(3)

      掌握虛擬內(nèi)存頁面置換算法 FIFO 等基本算法理論。

      五、

      實驗內(nèi)容及步驟

      假設(shè)有n個進程分別在 T1, … ,Tn時刻到達系統(tǒng),它們需要得服務(wù)時間分別為S1,… ,Sn。分別采用先來先服務(wù) FCFS 與短作業(yè)優(yōu)先 SJF 進程調(diào)度算法進行調(diào)度,計算每個進程得完成時間、周轉(zhuǎn)時間與帶權(quán)周轉(zhuǎn)時間,并且統(tǒng)計 n 個進程得平均周轉(zhuǎn)時間與平均帶權(quán)周轉(zhuǎn)時間。

      步驟

      通過已知最小物理塊數(shù)、頁面?zhèn)€數(shù)、頁面訪問序列、及采用置換方式可以得出頁面置換得缺頁次數(shù)與缺頁率,及每次缺頁時物理塊中存儲。

      1.輸入得形式

      ?int

      PageOrder[MaxNumber];//頁面序列 int

      PageNum,LackNum=0,BlockNum;//頁面?zhèn)€數(shù),缺頁次數(shù),最小物理塊數(shù) 2、輸出得形式 double

      LackPageRat(yī)e//缺頁率 缺頁個數(shù) 每次缺頁時物理塊中存儲

      程序所能達到得功能 模擬先進先出 FIFO、最佳置換 OPI與最近最久未使用 LRU頁面置換算法得工作過程.假設(shè)內(nèi)存中分配給每個進程得最小物理塊數(shù)為m,在進程運行過程中要訪問得頁面?zhèn)€數(shù)為 n,頁面訪問序列為P1, …,Pn,分別利用不同得頁面置換算法調(diào)度進程得頁面訪問序列,給出頁面訪問序列得置換過程,計算每種算法缺頁次數(shù)與缺頁率。測試數(shù)據(jù),包括正確得輸入及其輸出結(jié)果與含有錯誤得輸入及其輸出結(jié)果。

      程序中用到得所有抽象數(shù)據(jù)類型得定義、主程序得流程以及各程序模塊之間得層次(調(diào)用)關(guān)系.int

      PageOrder[MaxNumber];//頁面序列 int

      PageCount[MaxNumber]={0};//計算內(nèi)存內(nèi)數(shù)據(jù)離下一次出現(xiàn)得距離 int

      PageNum,LackNum=0,BlockNum;//頁面?zhèn)€數(shù),缺頁次數(shù),最小物理塊數(shù) double

      LackPageRate=0; bool found=false;

      六、實驗數(shù)據(jù)及結(jié)果分析

      運行截圖:

      圖6、1

      圖6、2

      圖6、3 七、實驗總結(jié)

      這次試驗,讓我加深了對虛擬內(nèi)存頁面置換算法得理解,進一步掌握先進先出 FIFO、最佳置換 OPI 與最近最久未使用 LRU 頁面置換算法得實現(xiàn)方法。熟悉 Linux需要經(jīng)過大量得實驗、改進與思考,在編寫代碼得過程中遇到了一些問題要積極面對并通過討論上網(wǎng)或者問老師解決。通過這次試驗我了解了虛擬內(nèi)存置換算法得一些知識,就是我對于所學習得專業(yè)知識得到了更好得鞏固與提升。

      附錄 源程序清單 #include <iostream> using namespace std;#define MaxNumber 100 void OPI(int

      PageOrder[MaxNumber],int

      PageCount[MaxNumber],?

      int

      PageNum,int LackNum,int BlockNum,double

      LackPageRate,bool found)

      {

      int module[MaxNumber];

      int sum=0;

      int i,j,k,m;

      for(i=0;i

      module[i]=PageOrder[i];

      ;++mus??)++j;i=

      cout<〈module[j]<〈”

      ";

      ;ldne<〈tuoc?

      LackNum=BlockNum;

      for(i=BlockNum;i〈PageNum;i++)

      found=false;

      for(j=0;j<BlockNum;j++)//遍歷已存儲,判斷就是否缺頁

      ? ??

      if(module[j]==PageOrder[i])

      {

      ??

      found=true;

      ?

      ?

      break;

      ?

      ?? }

      ?

      if(found==false)//缺頁,選擇替換

      {

      ?

      for(j=0;j〈BlockNum;j++)

      //計算內(nèi)存內(nèi)數(shù)據(jù)離下一次出現(xiàn)得距離

      PageCount[j]=0;

      for(k=i+1;k

      ??? ?

      ?

      if(module[j]!=PageOrder[k])

      ??

      PageCount[j]++;

      ?

      esle?

      ;kaerb?

      ?

      }

      ;]0[tnuoCegaP=xam tni?

      int kind=0;

      值大最出找//)++j;muNkcolB〈j;0=j(rof?

      {

      ?

      if(PageCount[j]>max)

      ?

      ??

      ;]j[tnuoCegaP=xam?? ?

      ?

      kind=j(luò);

      ?

      ?

      module[kind]=PageOrder[i];

      ?

      LackNum++;)++m;3

      ;”

      ”<<]m[eludom<〈tuoc??

      ?;ldne<

      ?

      LackPageRate=(LackNum*1、0)/PageNum;

      cout〈〈“該算法缺頁次數(shù)為:"<〈LackNum<<endl;

      cout<<”該算法缺頁率為:"〈<LackPageRat(yī)e*100<〈'%”〈〈endl;} /******************************先進先出置換算法*************************************/ void FIFO(int

      PageOrder[MaxNumber],int

      PageCount[MaxNumber],egaPkcaL

      elbuod ,muNkcolB tni,muNkcaL tni,muNegaP

      tni?Rate,bool found){

      int module[MaxNumber];

      int sum=0;

      int i,j,m;

      for(i=0;i〈BlockNum;i++)//將內(nèi)存填滿

      {

      module[i]=PageOrder[i];

      ;++mus??

      PageCount[i]=3-i;)++j;i=<j;0=j(rof?

      cout<<module[j]<<"

      “;

      cout<<endl;

      }

      LackNum=BlockNum;

      for(i=BlockNum;i〈PageNum;i++)

      found=false;

      for(j=0;j〈BlockNum;j++)//遍歷已存儲,判斷就是否缺頁

      {

      ?

      if(module[j]==PageOrder[i])

      ?

      {

      ?

      ;eurt=dnuof?? ?

      break;

      }

      }

      if(found==false)//缺頁,選擇替換

      ?

      ;]0[tnuoCegaP=xam tni?

      int kind=0;

      值大最出找//)++j;muNkcolB〈j;0=j(rof?

      ?

      if(PageCount[j]>max)

      ;]j[tnuoCegaP=xam?? ??

      kind=j;

      ???

      }

      ?

      for(int k=0;k<BlockNum;k++)//不就是最大值,則要+1

      ?

      {

      ?

      ?

      if(k!=kind)

      PageCount[k]++;

      ?

      ?

      module[kind]=PageOrder[i];

      PageCount[kind]=0;// 替換之后已經(jīng)查詢得次數(shù)改為0

      LackNum++;

      ?

      for(m=0; m〈3;m++)

      ?

      ;”

      ”<〈]m[eludom〈

      ;ldne〈〈tuoc?? }

      ? } ?

      LackPageRate=(LackNum*1、0)/PageNum;

      cout〈〈“該算法缺頁次數(shù)為:”<<LackNum<

      cout<<”該算法缺頁率為:"<

      PageOrder[MaxNumber],int

      PageCount[MaxNumber],egaPkcaL

      elbuod,muNkcolB tni,muNkcaL tni,muNegaP

      tni??Rate,bool found){

      int module[MaxNumber];

      int sum=0;

      int i,j,m;

      for(i=0;i<BlockNum;i++)//將內(nèi)存填滿

      {

      module[i]=PageOrder[i];

      ?

      sum++;

      PageCount[i]=3—i;)++j;i=<j;0=j(rof?

      cout〈〈module[j]〈〈”

      ”;

      ;ldne〈<tuoc??

      LackNum=BlockNum;

      for(i=BlockNum;i

      found=false;

      for(j=0;j<BlockNum;j++)//遍歷已存儲,判斷就是否缺頁

      {

      ?

      if(module[j]==PageOrder[i])

      ??

      ?

      found=true;

      PageCount[j]=0;//查詢后,更改次數(shù)

      ??

      for(int k=0;k〈BlockNum;k++)

      ?

      {

      ?? ??)j=!k(fi??

      PageCount[k]++;

      ?

      }

      ?

      break;

      ?

      ?

      }

      ?

      if(found==false)//缺頁,選擇替換

      ?

      ;]0[tnuoCegaP=xam tni??

      int kind=0;

      值大最出找//)++j;muNkcolB

      ??)xam〉]j[tnuoCegaP(fi??

      {

      ?

      ?;]j[tnuoCegaP=xam?

      ??

      kind=j;

      ? }

      ??

      for(int k=0;k

      ?

      if(k!=kind)

      PageCount[k]++;

      ??

      ?

      module[kind]=PageOrder[i];

      PageCount[kind]=0;// 替換之后未查詢得次數(shù)改為0

      ;++muNkcaL??

      for(m=0; m<3;m++)

      ?

      cout〈

      ”;

      ?;ldne<〈tuoc? }

      ? } ?

      LackPageRate=(LackNum*1、0)/PageNum;

      cout<〈“該算法缺頁次數(shù)為:"<

      cout〈<”該算法缺頁率為:”〈<LackPageRate*100〈<“%’<<endl;} int main()

      {

      int

      PageOrder[MaxNumber];//頁面序列

      int

      PageCount[MaxNumber]={0};//計算內(nèi)存內(nèi)數(shù)據(jù)離下一次出現(xiàn)得距離

      int

      PageNum,LackNum=0,BlockNum;//頁面?zhèn)€數(shù),缺頁次數(shù),最小物理塊數(shù)

      ;0=etaRegaPkcaL

      elbuod? bool found=false;

      ;3ecoihc,2ecoihc,0=1ecoihc tni?

      int i=0;)0==1ecoihc(elihw? {

      ;”:入輸新重:1,入輸不:0;據(jù)數(shù)入輸新重否是就“〈〈tuoc? cin〉>chioce2;

      if(chioce2==1)

      {?

      cout<<”請輸入頁面?zhèn)€數(shù):”;

      ;muNegaP >>nic?;“數(shù)塊理物小最入輸請”〈〈tuoc? ;muNkcolB>>nic? cout<〈”請輸入頁面序列:”<

      for(i=0;i〈PageNum;i++)

      ;]i[redrOegaP>〉nic? }?;”:URL-3,IPO—2,OFIF-1:法算擇選請"<

      if(chioce3==1)

      colB,muNkcaL,muNegaP,tnuoCegaP,redrOegaP(OFIF?kNum,LackPageRat(yī)e,found);

      else

      if(chioce3==2)

      colB ,muNkcaL,muNegaP,tnuoCegaP,redrOegaP(IPO?kNum,LackPageRate, found);

      esle?

      ,muNkcolB ,muNkcaL,muNegaP,tnuoCegaP,redrOegaP(URL?LackPageRate,found);

      } *************************************“〈<tuoc?****************************”<<endl;

      ;"束結(jié):1,續(xù)繼:0:束結(jié)是就還續(xù)繼擇選請"<chioce1;

      } }

      第四篇:頁面置換算法模擬,實驗報告

      中北大學軟件學院 實 驗 報 告

      業(yè)

      軟件工程

      課程名稱

      計算機操作系統(tǒng)

      輔導教師

      成績

      實驗日期 2015、11、20 實驗時間實驗名稱 :實驗四

      頁面置換算法模擬 2、實驗?zāi)康?1)了解內(nèi)存分頁管理策略(2)掌握調(diào)頁策略(3)掌握一般常用得調(diào)度算法(4)學會各種存儲分配算法得實現(xiàn)方法。

      (5)了解頁面大小與內(nèi)存實際容量對命中率得影響。

      3、實驗要求 編程實現(xiàn)頁面置換算法,最少實現(xiàn)兩種算法,比較算法得優(yōu)劣,并將調(diào)試結(jié)果顯示在計算機屏幕上,并檢測機算與筆算得一致性。

      (1)采用頁式分配存儲方案,通過分別計算不同算法得命中率來比較算法得優(yōu)劣,同時也考慮頁面大小及內(nèi)存實際容量對命中率得影響;(2)實現(xiàn) OPT 算法(最優(yōu)置換算法)、LRU 算法(Least Recently)、FIFO 算法(First IN First Out)得模擬;(3)使用某種編程語言模擬頁面置換算法.4、實驗算法描述 (1)FIFO(先進先出)

      Y

      N

      Y

      開始 頁面走向存入數(shù)組 p[]中,內(nèi)存塊用page[]表示初始化為 0 當前p[]中第i個元素就是否已在內(nèi)Page[]就是否有空把 page[]中最先裝入得頁面置換出去、i++ 把 p[i]得內(nèi)容直接裝入最上面一個空內(nèi)存塊,i++ 輸出當前內(nèi)存塊狀態(tài) i++

      圖 4-1FIFO算法流程圖

      結(jié)束

      (2)

      LRU(最近最久未使用)

      Y

      N

      Y

      圖 4—2

      LRU 算法流程圖

      開始 頁面走向存入數(shù)組 p[]中,內(nèi)存塊用 page[]表示初始化為 0 當前 p[]中第 i 個元素就是否已在內(nèi)存 Page[]就是否有空把 page[]中最近最久未使用得頁面置換出去、i++ 把 p[i]得內(nèi)容直接裝入最上面一個空內(nèi)存塊,i++ 輸出當前內(nèi)存塊狀態(tài)

      結(jié)束 i++

      (3)OPT(最佳置換算法)

      Y

      N

      Y

      圖4-3 OPT 流程圖

      開始 頁面走向存入數(shù)組 p[]中,內(nèi)存塊用 page[]表示初始化為 0 當前 p[]中第 i 個元素就是否已在內(nèi)存 Page[]就是否有空把 page[]中以后一段時間都不使用或就是使用時間離現(xiàn)在最遠得換出、i++ 把 p[i]得內(nèi)容直接裝入最上面一個空內(nèi)存塊,i++ 輸出當前內(nèi)存塊狀態(tài)

      結(jié)束 i++

      6、實驗代碼 #include <iostream〉 using namespace std;#define Bsize 3 #define Psize 20 struct pageInfor {

      號面頁//

      ;tnetnoc tni? int timer;

      //被訪問標記 };class PRA{ public:

      PRA(void);

      存內(nèi)閑空有否是就找查//

      ;)diov(ecapSdnif tni? int findExist(int curpage);

      //查找內(nèi)存中就是否有該頁面

      int findReplace(void);

      //查找應(yīng)予置換得頁面

      void display(void);

      //顯示

      法算 OFIF//;)diov(OFIF diov? 法算 URL//;)diov(URL diov? void Optimal(void);//OPTIMAL 算法

      void BlockClear(void);//BLOCK 恢復

      pageInfor * block;//物理塊

      pageInfor * page;//頁面號串 private: };PRA::PRA(void){

      int QString[20]={7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1};

      block = new pageInfor[Bsize];)++i;ezisB<i;0=i tni(rof? {

      ;1— = tnetnoc、]i[kcolb? ;0 = remit、]i[kcolb?? }

      page = new pageInfor[Psize];)++i;ezisP〈i ;0=i(rof? {

      ;]i[gnirtSQ = tnetnoc、]i[egap?;0 = remit、]i[egap?? }?} int PRA::findSpace(void)

      {

      for(int i=0; i

      if(block[i]、content == -1)

      置位中 KCOLB回返,存內(nèi)閑空到找//;i nruter?;1— nruter?} int PRA::findExist(int curpage)

      {

      for(int i=0;i<Bsize; i++))tnetnoc、]egapruc[egap == tnetnoc、]i[kcolb(fi??

      置位中 KCOLB 回返,面頁該有中存內(nèi)到找//;i nruter? ;1— nruter?} int PRA::findReplace(void)

      {

      ;0 = sop tni? for(int i=0;i<Bsize; i++))remit、]sop[kcolb => remit、]i[kcolb(fi??

      ? pos = i;//找到應(yīng)予置換頁面,返回 BLOCK中位置

      return pos; } void PRA::display(void)

      {

      for(int i=0;i<Bsize; i++)

      if(block[i]、content!=-1)

      ?;” ”<〈tnetnoc、]i[kcolb〈〈tuoc? ;ldne<<tuoc?} void PRA::Optimal(void){

      ; noitisop,ecaps,tsixe tni? for(int i=0; i

      {?;)i(tsixEdnif = tsixe??)1-=!

      tsixe(fi?

      {?

      ;ldne〈〈”頁缺不“<<tuoc? }??

      esle?

      {?? ?? space = findSpace();

      ?)1— =!

      ecaps(fi? ?

      {? ?

      ;]i[egap = ]ecaps[kcolb?

      ?

      ;)(yalpsid??

      ? }

      ?

      esle?

      {?? ?)++k ;ezisB<k ;0=k tni(rof?

      ? for(int j=i; j<Psize; j++)

      ?

      {???

      ??)tnetnoc、]j[egap =!tnetnoc、]k[kcolb(fi?

      { 為 REMIT 置設(shè),用會不來將//};0001 = remit、]k[kcolb??一個很大數(shù)

      ??

      esle?

      ??

      ??

      ?

      ? block[k]、timer = j;

      ?

      ?? break;

      } ??? }?????

      ? position = findReplace();

      ?

      ;]i[egap = ]noitisop[kcolb?

      ;)(yalpsid??

      }?? ? }

      }?} void PRA::LRU(void){

      int exist,space,position ;

      for(int i = 0; i < Psize;i++)

      {? ? exist = findExist(i);)1- =!

      tsixe(fi?

      {

      ?? cout<<”不缺頁”<

      ?

      block[exist]、timer = —1;//恢復存在得并剛訪問過得BLOCK 中頁面 TIMER 為-1

      ? }

      ? else

      {? ?? space = findSpace();?)1-=!ecaps(fi? ?

      {?;]i[egap = ]ecaps[kcolb?? ?

      ;)(yalpsid? ?? }

      ?

      esle?

      {??

      ;)(ecalpeRdnif = noitisop??

      ?

      block[position] = page[i];

      ?

      ;)(yalpsid?

      }??

      }?

      for(int j=0;j〈Bsize;j++)

      ;++remit、]j[kcolb?? }?} void PRA::FIFO(void)

      {

      int exist,space,position ;

      for(int i=0;i

      {?

      exist = findExist(i);

      ? if(exist!=-1)

      {cout<<"不缺頁"<

      esle?

      space = findSpace();

      ?)1-=!

      ecaps(fi? ?? {

      ?

      block[space] = page[i];

      ?

      ? display();

      }??

      esle?? ?

      ??

      position = findReplace();

      ??

      block[position] = page[i];

      ;)(yalpsid?? ?? }

      }?)++j;ezisB

      block[j]、timer++;//BLOCK 中所有頁面TIMER++

      }?} void PRA::BlockClear(void){

      for(int i=0;i

      {?

      block[i]、content =-1;

      ? block[i]、timer = 0;

      } void main(void){

      ;ldne<〈”:法 算 換 置 面 頁“<<tuoc? cout〈〈”頁面號引用串:7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1"<〈endl;

      cout〈〈”選擇<1>應(yīng)用 LRU 算法”〈<endl;

      cout<<”選擇<2〉應(yīng)用 FIFO 算法”〈

      cout<<”選擇<3>應(yīng)用 Optimal 算法“<〈endl;

      ;ldne<<"出退>0〈擇選”〈<tuoc? int select;

      PRA test;? while(select)

      ? cin〉>select;)tceles(hctiws?

      {?

      :0 esac??;kaerb? :1 esac???;ldne<<“:下如果結(jié)法算URL”<〈tuoc?

      ;)(URL、tset??

      ;)(raelCkcolB、tset??;ldne<<”---—-—--—-—--—-—-—-———“<

      ? break;

      :2 esac?

      cout<〈”FIFO 算法結(jié)果如下:“<<endl;

      test、FIFO();?;)(raelCkcolB、tset?

      ? cout<〈”-——-------—-—------—--”<〈endl;

      ?

      break;

      case 3:

      ;ldne〈<”:下如果結(jié)法算 lamitpO”<

      test、Optimal();

      ?

      ;)(raelCkcolB、tset??;ldne<<"----—------——--————---"〈〈tuoc??;kaerb?

      default:

      ?

      ;ldne〈<”號能功確正入輸請“<<tuoc?

      ;kaerb?? }?? } }

      6、實驗結(jié)果

      7、實驗心得 加深了對操作系統(tǒng)得認識,了解了操作系統(tǒng)中各種資源分配算法得實現(xiàn),特別就是對虛擬存儲,頁面置換有了深入得了解,并能夠用高級語言進行模擬演示。在這短短得兩周時間里,通過瀏覽、閱讀有關(guān)得資料,學到了很多東西,同時也發(fā)現(xiàn)僅僅書本得知識就是遠遠不夠得,需要把知識運用到實踐中去,能力才能得到提高。

      使用 MFC可視化編程極大得減少了編寫得代碼量,直觀得界面設(shè)計,不但便于修改,而且簡化了界面程序代碼得編寫 兩種頁面置換算法 FIFO 與LRU理解起來相當容易,但在實際編程實現(xiàn)得時候需要注意各種細節(jié),需要耐心細致,實際編程中遇到一些細節(jié)上得小問題確實需要仔細考慮才行.

      第五篇:操作系統(tǒng) 七次實驗報告 常用頁面置換算法模擬實驗

      操作系統(tǒng)課程第七次實驗報告

      姓名

      學號

      計算機

      任課教師

      指導教師

      評閱教師

      實驗地點

      綜合樓B102

      實驗時間

      2012-9-26

      實驗課表現(xiàn)

      出勤和個人表現(xiàn)Q1(15+15(組長評分)=30分)

      得分:

      實驗

      總分

      (Q1+Q2+Q3+Q4)

      實驗完成情況Q2(45分(組長與教師評分的加權(quán)平均))

      得分:

      實驗編號與實驗名稱:

      實驗七、常用頁面置換算法模擬實驗

      實驗?zāi)康模?/p>

      通過模擬實現(xiàn)請求頁式存儲管理的幾種基本頁面置換算法,了解虛擬存儲技術(shù)的特點,掌握虛擬存儲請求頁式存儲管理中幾種基本頁面置換算法的基本思想和實現(xiàn)過程,并比較它們的效率。

      實驗內(nèi)容及要求(詳見實驗講義與實驗指導書):

      要求:

      1)要求用你熟悉的程序設(shè)計語言編寫和調(diào)試一個頁面置換模擬程序;要求在主函數(shù)中測試。

      2)實驗報告中必須包括:設(shè)計思想、數(shù)據(jù)定義(包括詳細說明)、處理流程(詳細算法描述和算法流程圖)、源代碼、運行結(jié)果、體會等部分。

      3)必須模擬本實驗內(nèi)容中提到的算法中的至少2種頁面置換算法。

      4)

      比較不同頁面置換算法的效率

      內(nèi)容:編寫一個程序,使用以下頁面置換算法中的某2種分別模擬一個分頁系統(tǒng),并統(tǒng)計同一個頁面訪問序列情況下不同頁面置換算法引發(fā)的缺頁中斷次數(shù)。

      1、第二次機會算法(Second

      Chance)

      2、最近最少使用算法(Least

      Recently

      Used,LRU)

      3、最不常用算法(Not

      Frequently

      Used,NFU)

      4、最近未使用算法(Not

      Recently

      Used,NRU)

      5、時鐘頁面置換算法

      6、老化算法(aging)

      頁框的數(shù)量固定為4,虛擬頁面數(shù)為8。實驗輸入為訪問頁面序列,比如0,1,3,2,7,1

      實驗用到的軟件(:)

      DevC++,Visio

      實驗內(nèi)容及關(guān)鍵步驟(代碼)Q3(15分)

      得分:

      流程圖:輸入頁面訪問序列

      取訪問的頁號

      查頁表

      是否缺頁?

      置缺頁標志flag為’*’

      按算法不同淘汰一頁面

      調(diào)入所訪問的頁面

      FIFO算法流程圖

      LRU算法流程圖:

      函數(shù)關(guān)系解釋圖:

      實現(xiàn)結(jié)果:

      圖1

      圖2

      代碼:

      #include

      #include

      #define

      MEMORY_SIZE

      /*物理塊數(shù)*/

      #define

      PROESS_SIZE

      /*頁面號引用串個數(shù)*/#include

      #include

      /*全局變量*/

      int

      mSIZE=4;

      int

      pSIZE=8;

      static

      int

      memery[4]={0};

      /*物理塊中的頁號*/

      static

      int

      page[8]={0};

      /*頁面號引用串*/

      static

      int

      temp[8][4]={0};

      /*輔助數(shù)組*/

      /*置換算法函數(shù)*/

      void

      FIFO();

      void

      LRU();

      void

      OPT();

      void

      designBy();

      /*輔助函數(shù)*/

      void

      print(unsigned

      int

      t);

      /*主函數(shù)*/

      int

      main()

      {

      int

      i,k,code;

      designBy();

      system(“color

      0A“);

      puts(“請依次輸入頁面號(8個):“);

      for(i=0;i

      scanf(“%1d“,&page[i]);

      system(“cls“);

      system(“color

      0E“);

      do{

      puts(“輸入的頁面號引用串為:“);

      for(k=0;k<=(pSIZE-1)/20;k++)

      {

      for(i=20*k;(i

      {

      if(((i+1)%20==0)||(((i+1)%20)&&(i==pSIZE-1)))

      printf(“%d\n“,page[i]);

      else

      printf(“%d

      “,page[i]);

      }

      }

      printf(“*

      *

      *

      *

      *

      *

      *

      *

      *

      *

      *

      *

      *

      *

      *

      *

      *

      *

      *

      *

      *

      *

      *\n“);

      printf(“*

      請選擇頁面置換算法:\t\t\t

      *\n“);

      printf(“*

      -----------------------------------------

      *\n“);

      printf(“*

      1.先進先出(FIFO)

      2.最近最久未使用(LRU)

      *\n“);

      printf(“*

      3.退出

      *\n“);

      printf(“*

      *

      *

      *

      *

      *

      *

      *

      *

      *

      *

      *

      *

      *

      *

      *

      *

      *

      *

      *

      *

      *

      *\n“);

      printf(“請選擇操作:[

      ]\b\b“);

      scanf(“%d“,&code);

      switch(code)

      {

      case

      1:

      FIFO();

      break;

      case

      2:

      LRU();

      break;

      case

      3:

      system(“cls“);

      system(“color

      0A“);

      exit(0);

      default:

      printf(“輸入錯誤,請重新輸入:“);

      }

      printf(“按任意鍵重新選擇置換算法:>>>“);

      getch();

      system(“cls“);

      }while

      (code!=3);

      getch();

      }

      void

      print(unsigned

      int

      t)

      {

      int

      i,j,k,l;

      int

      flag;

      for(k=0;k<=(pSIZE-1)/20;k++)

      {

      for(i=20*k;(i

      {

      if(((i+1)%20==0)||(((i+1)%20)&&(i==pSIZE-1)))

      printf(“%d\n“,page[i]);

      else

      printf(“%d

      “,page[i]);

      }

      for(j=0;j

      {

      for(i=20*k;(i{

      if(i>=j)

      printf(“

      |%d|“,temp[i][j]);

      else

      printf(“

      |

      |“);

      }

      for(i=mSIZE+20*k;(i

      {

      for(flag=0,l=0;l

      if(temp[i][l]==temp[i-1][l])

      flag++;

      if(flag==mSIZE)/*頁面在物理塊中*/

      printf(“

      “);

      else

      printf(“

      |%d|“,temp[i][j]);

      }

      /*每行顯示20個*/

      if(i%20==0)

      continue;

      printf(“\n“);

      }

      }

      printf(“----------------------------------------\n“);

      printf(“缺頁次數(shù):%d\t\t“,t+mSIZE);

      printf(“缺頁率:%d/%d\n“,t+mSIZE,pSIZE);

      printf(“置換次數(shù):%d\t\t“,t);

      printf(“訪問命中率:%d%%\n“,(pSIZE-(t+mSIZE))*100/pSIZE);

      printf(“----------------------------------------\n“);

      }

      /*先進先出頁面置換算法*/

      void

      FIFO()

      {

      int

      memery[10]={0};

      int

      time[10]={0};

      /*記錄進入物理塊的時間*/

      int

      i,j,k,m;

      int

      max=0;

      /*記錄換出頁*/

      int

      count=0;

      /*記錄置換次數(shù)*/

      /*前mSIZE個數(shù)直接放入*/

      for(i=0;i

      {

      memery[i]=page[i];

      time[i]=i;

      for(j=0;j

      temp[i][j]=memery[j];

      }

      for(i=mSIZE;i

      {

      /*判斷新頁面號是否在物理塊中*/

      for(j=0,k=0;j

      {

      if(memery[j]!=page[i])

      k++;

      }

      if(k==mSIZE)

      /*如果不在物理塊中*/

      {

      count++;

      /*計算換出頁*/

      max=time[0]

      for(m=2;m

      if(time[m]

      max=m;

      memery[max]=page[i];

      time[max]=i;

      /*記錄該頁進入物理塊的時間*/

      for(j=0;j

      temp[i][j]=memery[j];

      }

      else

      {

      for(j=0;j

      temp[i][j]=memery[j];

      }

      }

      print(count);

      }

      /*最近最久未使用置換算法*/

      void

      LRU()

      {

      int

      memery[10]={0};

      int

      flag[10]={0};

      /*記錄頁面的訪問時間*/

      int

      i,j,k,m;

      int

      max=0;

      /*記錄換出頁*/

      int

      count=0;

      /*記錄置換次數(shù)*/

      /*前mSIZE個數(shù)直接放入*/

      for(i=0;i

      {

      memery[i]=page[i];

      flag[i]=i;

      for(j=0;j

      temp[i][j]=memery[j];

      }

      for(i=mSIZE;i

      {

      /*判斷新頁面號是否在物理塊中*/

      for(j=0,k=0;j

      {

      if(memery[j]!=page[i])

      k++;

      else

      flag[j]=i;

      /*刷新該頁的訪問時間*/

      }

      if(k==mSIZE)

      /*如果不在物理塊中*/

      {

      count++;

      /*計算換出頁*/

      max=flag[0]

      for(m=2;m

      if(flag[m]

      max=m;

      memery[max]=page[i];

      flag[max]=i;

      /*記錄該頁的訪問時間*/

      for(j=0;j

      temp[i][j]=memery[j];

      }

      else

      {

      for(j=0;j

      temp[i][j]=memery[j];

      }

      }

      //

      compute();

      print(count);

      }

      /*顯示設(shè)計者信息*/

      void

      designBy()

      {

      printf(“┏━━━━━━━━━━━━━━━━━━━━━━━━━┓\n“);

      printf(“┃㊣

      實驗七:頁面置換算法

      ㊣┃\n“);

      printf(“┃

      學號:1001010042

      ┃\n“);

      printf(“┃

      姓名:黃浩全

      4.9.9.0>┃\n“);

      printf(“┣━━━━━━━━━━━━━━━━━━━━━━━━━┫\n“);

      }

      實驗過程中遇到的問題解決辦法與實驗體會Q4(需手寫,10分)

      得分:

      1、在FIFO算法可以很容易用數(shù)組實現(xiàn),而LRU算法可以用數(shù)組實現(xiàn),不過用結(jié)構(gòu)體會更明顯簡單。結(jié)構(gòu)體成員變量可以記錄頁號進入的時間,和最近使用的記錄。相對比數(shù)組更容易理解和實現(xiàn)。

      2:首先,F(xiàn)IFO(先進先出)算法和LRU(最近未使用算法)兩者之間,F(xiàn)IFO算法明顯會比LRU容易理解,而且比LRU算法較容易實現(xiàn),但在性能方面,LRU的確在優(yōu)化方面做的比較理想。再且在考慮頁框和頁表號之間的問題用代碼可以容易模擬,但是真是在物理內(nèi)存塊中是如何實現(xiàn),那確實是很難以理解,需要真正理解到內(nèi)存內(nèi)部的知識才知道這兩個算法是怎么實現(xiàn)的。

      評閱教師特殊評語:

      評閱教師:

      期:

      下載頁面置換算法實驗報告(五篇模版)word格式文檔
      下載頁面置換算法實驗報告(五篇模版).doc
      將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
      點此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔相關(guān)法律責任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進行舉報,并提供相關(guān)證據(jù),工作人員會在5個工作日內(nèi)聯(lián)系你,一經(jīng)查實,本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關(guān)范文推薦

        頁面置換算法模擬

        “計算機操作系統(tǒng)”課程設(shè)計大作業(yè) 一、題目: 頁面置換算法模擬實驗 二、目的 分別采用最佳(Optimal)置換算法、先進先出(FIFO)頁面置換算法和最近最少使用(LRU)置換算法對......

        頁面替換算法實驗報告

        操作系統(tǒng)頁面替換算法實驗報告 姓名: 沈慧 班級: 計091 學號: 0913022006 頁面替換算法 一.目的和要求 (一)目的 存儲管理的主要功能之一是合理地分配空間。請求頁式管理是一種常......

        實驗5 頁面置換算法

        實驗5 頁面置換算法 一、實驗題目:頁面置換算法(請求分頁) 二、實驗?zāi)康模? 進一步理解父子進程之間的關(guān)系。 1) 理解內(nèi)存頁面調(diào)度的機理。 2) 掌握頁面置換算法的實現(xiàn)方法。 3) 通......

        計算機操作系統(tǒng)實驗4頁面置換算法

        實驗4 頁面置換算法(2學時) 一、實驗?zāi)康?通過實驗加強對虛擬存儲管理中頁面置換算法的理解和掌握。 二、實驗內(nèi)容 編寫程序?qū)崿F(xiàn)虛擬存儲管理中OPT,FIFO,LRU頁面置換算法。 三......

        計算機操作系統(tǒng)實驗三頁面置換算法模擬實驗

        計算機工程學院實驗報告書課程名:《操作系統(tǒng)原理A》題目:虛擬存儲器管理頁面置換算法模擬實驗班級:學號:姓名:評語:成績:指導教師:批閱時間:年月日一、實驗?zāi)康呐c要求1.目的:請求頁式......

        頁面置換算法模擬實驗 操作系統(tǒng)大作業(yè)(含源文件)(合集五篇)

        “計算機操作系統(tǒng)”課程設(shè)計大作業(yè) 頁面置換算法模擬實驗 (含完整資料,可直接提交) 一、題目: 頁面置換算法模擬實驗 二、目的 分別采用最佳(Optimal)置換算法、先進先出(FI......

        算法實驗報告

        《算法設(shè)計與分析》 實驗報告 班級姓名學號年 月日 目錄 實驗一二分查找程序?qū)崿F(xiàn)…………………………………………………………………03頁 實驗二棋盤覆蓋問題(分治法).…......

        RSA算法實驗報告

        信息安全實驗報告 題 目 RSA算法 姓 名 學 號 專業(yè)年級 計算機科學與技術(shù)2014級(1)班 指導教師 2016年 12 月 10日 一、 實驗?zāi)康?了解非對稱加密機制 理解RSA算法的加解密原......