資源描述:
《模擬請(qǐng)求頁(yè)式存儲(chǔ)管理中硬件的地址轉(zhuǎn)換和缺頁(yè)中斷,并用先進(jìn)先出調(diào)度算法(fifo)處理缺頁(yè)中斷》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫(kù)。
1、實(shí)驗(yàn)二模擬請(qǐng)求頁(yè)式存儲(chǔ)管理中硬件的地址轉(zhuǎn)換和缺頁(yè)中斷,并用先進(jìn)先出調(diào)度算法(FIFO)處理缺頁(yè)中斷1.內(nèi)容:模擬請(qǐng)求頁(yè)式存儲(chǔ)管理中硬件的地址轉(zhuǎn)換和缺頁(yè)中斷處理2.思想:裝入新頁(yè)置換舊頁(yè)時(shí),若舊頁(yè)在執(zhí)行中沒有被修改過(guò),則不必將該頁(yè)重寫磁盤。因此,頁(yè)表中增加是否修改過(guò)的標(biāo)志,執(zhí)行“存”指令和“寫”指令時(shí)將對(duì)應(yīng)的修改標(biāo)志置成“1”表示修改過(guò),否則為“0”表示未修改過(guò)。頁(yè)表格式如下:頁(yè)號(hào)標(biāo)志頁(yè)架號(hào)修改標(biāo)志在磁盤上位置3.要求及方法:①設(shè)計(jì)一個(gè)地址轉(zhuǎn)換程序來(lái)模擬硬件的地址轉(zhuǎn)換和缺頁(yè)中斷。當(dāng)訪問(wèn)的頁(yè)在主存時(shí)則形成絕對(duì)地址,但不去模擬指令的執(zhí)行,可以輸出轉(zhuǎn)換后的絕
2、對(duì)地址來(lái)表示一條指令已執(zhí)行完成。當(dāng)訪問(wèn)的頁(yè)不在主存中時(shí),則輸出“*頁(yè)號(hào)”來(lái)表示硬件產(chǎn)生了一次缺頁(yè)中斷。模擬地址轉(zhuǎn)換流程見圖1。②編制一個(gè)FIFO頁(yè)面調(diào)度程序;FIFO頁(yè)面調(diào)度算法總是先調(diào)出作業(yè)中最先進(jìn)入主存中的哪一頁(yè)。因此可以用一個(gè)數(shù)組來(lái)表示(或構(gòu)成)頁(yè)號(hào)隊(duì)列。數(shù)組中每個(gè)元素是該作業(yè)已在主存中的頁(yè)面號(hào),假定分配給作業(yè)的頁(yè)架數(shù)為m,且該作業(yè)開始的m頁(yè)已裝入主存,則數(shù)組可由m個(gè)元素構(gòu)成。P[0],P[1],P[2],…,P[m-1]它們的初值為P[0]:=0,P[1]:=1,P[2]:=2,…,P[m-1]:=m-1用一指針K指示當(dāng)要調(diào)入新頁(yè)時(shí)應(yīng)調(diào)出的頁(yè)
3、在數(shù)組中的位置,K的初值為“0”,當(dāng)產(chǎn)生缺頁(yè)中斷后,操作系統(tǒng)總是選擇P[K]所指出的頁(yè)面調(diào)出,然后執(zhí)行:P[K]:=要裝入的新頁(yè)頁(yè)號(hào)K:=(k+1)modm在實(shí)驗(yàn)中不必實(shí)際地啟動(dòng)磁盤執(zhí)行調(diào)出一頁(yè)和裝入一頁(yè)的工作,而用輸出“OUT調(diào)出的頁(yè)號(hào)”和“IN要裝入的新頁(yè)頁(yè)號(hào)”來(lái)模擬一次調(diào)出和裝入過(guò)程,模擬程序的流程圖見附圖1。按流程控制過(guò)程如下:提示:輸入指令的頁(yè)號(hào)和頁(yè)內(nèi)偏移和是否存指令,若d為-1則結(jié)束,否則進(jìn)入流程控制過(guò)程,得P1和d,查表在主存時(shí),絕對(duì)地址=P1×1024+d③假定主存中頁(yè)架大小為1024個(gè)字節(jié),現(xiàn)有一個(gè)共7頁(yè)的作業(yè),其副本已在磁盤上。系
4、統(tǒng)為該作業(yè)分配了4個(gè)頁(yè)架,且該作業(yè)的第0頁(yè)至第3頁(yè)已裝入內(nèi)存,其余3頁(yè)未裝入主存,該作業(yè)的頁(yè)表如下:頁(yè)號(hào)標(biāo)志頁(yè)架號(hào)修改標(biāo)志在磁盤上位置0150011118001221900133110021400022500023600121如果該作業(yè)依次執(zhí)行的指令序列如下表所示:操作頁(yè)號(hào)頁(yè)內(nèi)地址操作頁(yè)號(hào)頁(yè)內(nèi)地址+0070移位4053+1050+5023×2015存1037存3021取2078取0056+4001-6040存6084依次執(zhí)行上述指令調(diào)試你所設(shè)計(jì)的程序(僅模擬指令的執(zhí)行,不考慮序列中具體操作的執(zhí)行)。④為進(jìn)一步考察程序的執(zhí)行,可自行確定若干組指令,運(yùn)行
5、程序,核對(duì)執(zhí)行結(jié)果。4.書寫實(shí)驗(yàn)報(bào)告:①實(shí)驗(yàn)題目;②程序中所用的數(shù)據(jù)結(jié)構(gòu)及說(shuō)明;③源程序并附上必要的說(shuō)明;④按照指令的執(zhí)行序列,打印輸出結(jié)果:絕對(duì)地址或調(diào)出、調(diào)入的頁(yè)號(hào)。圖1模擬算法流程#include"stdio.h"#definesize1024structplist{intnumber;intflag;intblock;intmodify;intlocation;};structplistp1[7]={{0,1,5,0,010},{1,1,8,0,012},{2,1,9,0,013},{3,1,1,0,021},{4,0,-1,0,022},{
6、5,0,-1,0,023},{6,0,-1,0,121}};structilist{charoperation[10];intpagenumber;intaddress;};structilistp2[12]={{"+",0,70},{"+",1,50},{"*",2,15},{"存",3,21},{"取",0,56},{"-",6,40},{"移位",4,53},{"+",5,23},{"存",1,37},{"取",2,78},{"+",4,1},{"存",6,84}};main(){inti,lpage,pflage,replacedpage,p
7、modify;///////////////////////////////////////////////////////////////////////////////////intp[4]={0,1,2,3};intk=0;intm=4;longmemaddress;printf("操作t頁(yè)號(hào)t頁(yè)內(nèi)地址標(biāo)志絕對(duì)地址修改頁(yè)號(hào)頁(yè)架號(hào)絕對(duì)地址");for(i=0;i<12;i++){lpage=p2[i].pagenumber;pflage=p1[lpage].flag;if(pflage==0){replacedpage=p[k];pm
8、odify=p1[replacedpage].modify;p[k]=lpage;k=(k+1)%m;p1[