資源描述:
《實驗3-頁面調度算法.doc》由會員上傳分享,免費在線閱讀,更多相關內容在行業(yè)資料-天天文庫。
1、實驗報告院(系):專業(yè)班級:學號:姓名:實驗地點:實驗日期:課程名稱實驗項目名稱實驗學時實驗類型計算機操作系統(tǒng)頁面調度算法2驗證型一、實驗目的及要求通過本實驗可以加深理解有關虛擬存儲器的工作原理,進一步體會和了解頁面替換算法的具體實現(xiàn)方法。二、實驗環(huán)境PC/Windows系統(tǒng)/VisualC++6.0三、實驗內容①實現(xiàn)三種算法:先進先出;OPT;LRU②頁面序列從指定的文本文件(TXT文件)中取出③輸出:第一行:每次淘汰的頁面號,第二行:顯示缺頁的總次數(shù)四、實驗步驟1.先進先出(FIFO)置換算法的思路該算法總是淘汰最先進入內存的頁面,即選擇在內存中駐留時間最久的頁面予以淘
2、汰。該算法實現(xiàn)簡單,只需把一個進程已調入內存的頁面,按照先后次序連接成一個隊列,并設置一個替換指針,使它總指向最老的頁面。2.最近久未使用(LRU)置換算法的思路最近久未使用置換算法的替換規(guī)則,是根據(jù)頁面調入內存后的使用情況來進行決策的。該算法賦予每個頁面一個訪問字段,用來記錄一個頁面自上次被訪問以來所經歷的時間,當需淘汰一個頁面的時候選擇現(xiàn)有頁面中其時間值最大的進行淘汰。3.最佳(OPT)置換算法的思路其所選擇的被淘汰的頁面,將是以后不使用的,或者是在未來時間內不再被訪問的頁面,采用最佳算法,通常可保證獲得最低的缺頁率。4、流程圖如下圖所示:開始取一條指令取指令中訪問的頁
3、號=>L查頁表頁標記=1?形成絕對地址是“存”指令?置L頁修改標記“1”輸出絕對地址輸出“*頁號”有后繼指令?取一條指令結束J:=P[k]J頁的修改標記=1?輸出“OUTj”輸出“INL”P[k]:=Lk:=(k+1)modm修改頁面是否是否否(產生缺頁中斷)是否五、調試過程程序結構分析:程序共有以下九個部分:intfindSpace(void);//查找是否有空閑內存intfindExist(intcurpage);//查找內存中是否有該頁面intfindReplace(void);//查找應予置換的頁面voiddisplay(void);//顯示voidFIFO(voi
4、d);//FIFO算法voidLRU(void);//LRU算法voidOPT(void);//OPT算法;voidBlockClear(void);//BLOCK清空,以便用另一種方法重新演示intmain()//主程序六、實驗結果及分析程序源代碼:#include#defineBsize3#definePsize20structpageInfor{intcontent;//頁面號inttimer;//被訪問標記};classPRA{public:PRA(void);intfindSpace(void);//查找是否有空閑內存intfindExis
5、t(intcurpage);//查找內存中是否有該頁面intfindReplace(void);//查找應予置換的頁面voiddisplay(void);//顯示voidFIFO(void);//FIFO算法voidLRU(void);//LRU算法voidOptimal(void);//OPTIMAL算法voidBlockClear(void);//BLOCK恢復pageInfor*block;//物理塊pageInfor*page;//頁面號串private:};PRA::PRA(void){intQString[20]={7,0,1,2,0,3,0,4,2,3,0,3
6、,2,1,2,0,1,7,0,1};block=newpageInfor[Bsize];for(inti=0;i7、CK中位置return-1;}intPRA::findExist(intcurpage){for(inti=0;i=block[pos].timer)pos=i;//找到應予置換頁