操作系統(tǒng)虛擬頁式管理實(shí)驗(yàn)報(bào)告_第1頁
操作系統(tǒng)虛擬頁式管理實(shí)驗(yàn)報(bào)告_第2頁
操作系統(tǒng)虛擬頁式管理實(shí)驗(yàn)報(bào)告_第3頁
操作系統(tǒng)虛擬頁式管理實(shí)驗(yàn)報(bào)告_第4頁
操作系統(tǒng)虛擬頁式管理實(shí)驗(yàn)報(bào)告_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

實(shí)驗(yàn)報(bào)告課程名稱計(jì)算機(jī)操作系統(tǒng)實(shí)驗(yàn)名稱虛擬頁式管理班級(jí)學(xué)號(hào)姓名成績指導(dǎo)教師趙安科實(shí)驗(yàn)日期2015年5月28日實(shí)驗(yàn)題目:虛擬頁式管理實(shí)驗(yàn)內(nèi)容:模擬請(qǐng)求頁式存儲(chǔ)管理中硬件的地址轉(zhuǎn)換和缺頁中斷處理實(shí)驗(yàn)要求:①設(shè)計(jì)一個(gè)地址轉(zhuǎn)換程序來模擬硬件的地址轉(zhuǎn)換和缺頁中斷。當(dāng)訪問的頁在主存時(shí)則形成絕對(duì)地址,但不去模擬指令的執(zhí)行,可以輸出轉(zhuǎn)換后的絕對(duì)地址來表示一條指令已執(zhí)行完成。當(dāng)訪問的頁不在主存中時(shí),則輸出“*頁號(hào)”來表示硬件產(chǎn)生了一次缺頁中斷。模擬地址轉(zhuǎn)換流程見圖1。②編制一個(gè)FIFO頁面調(diào)度程序;FIFO頁面調(diào)度算法總是先調(diào)出作業(yè)中最先進(jìn)入主存中的哪一頁。因此可以用一個(gè)數(shù)組來表示(或構(gòu)成)頁號(hào)隊(duì)列。數(shù)組中每個(gè)元素是該作業(yè)已在主存中的頁面號(hào),假定分配給作業(yè)的頁架數(shù)為m,且該作業(yè)開始的m頁已裝入主存,則數(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)入新頁時(shí)應(yīng)調(diào)出的頁在數(shù)組中的位置,K的初值為“0”,當(dāng)產(chǎn)生缺頁中斷后,操作系統(tǒng)總是選擇P[K]所指出的頁面調(diào)出,然后執(zhí)行:P[K]:=要裝入的新頁頁號(hào)K:=(k+1)modm在實(shí)驗(yàn)中不必實(shí)際地啟動(dòng)磁盤執(zhí)行調(diào)出一頁和裝入一頁的工作,而用輸出“OUT調(diào)出的頁號(hào)”和“IN要裝入的新頁頁號(hào)”來模擬一次調(diào)出和裝入過程,模擬程序的流程圖見附圖1。按流程控制過程如下:提示:輸入指令的頁號(hào)和頁內(nèi)偏移和是否存指令,若d為-1則結(jié)束,否則進(jìn)入流程控制過程,得P1和d,查表在主存時(shí),絕對(duì)地址=P1×1024+d③假定主存中頁架大小為1024個(gè)字節(jié),現(xiàn)有一個(gè)共7頁的作業(yè),其副本已在磁盤上。系統(tǒng)為該作業(yè)分配了4個(gè)頁架,且該作業(yè)的第0頁至第3頁已裝入內(nèi)存,其余3頁未裝入主存,該作業(yè)的頁表如下:頁號(hào)標(biāo)志頁架號(hào)修改標(biāo)志在磁盤上位置0150011118001221900133110021400022500023600121如果該作業(yè)依次執(zhí)行的指令序列如下表所示:操作頁號(hào)頁內(nèi)地址操作頁號(hào)頁內(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)行程序,核對(duì)執(zhí)行結(jié)果。實(shí)驗(yàn)步驟:(1)根據(jù)實(shí)驗(yàn)要求考慮實(shí)驗(yàn)中所用到的數(shù)據(jù)結(jié)構(gòu),對(duì)照頁表和指令表模擬指令執(zhí)行的順序,為編寫程序做準(zhǔn)備。(2)上機(jī)編寫程序,定義數(shù)組c,用來存儲(chǔ)已在主存中的頁面,定義指針k,用來指向要調(diào)出的頁面,當(dāng)指令不在時(shí),調(diào)出頁面,調(diào)入進(jìn)入頁面,同時(shí)指針加1,二位數(shù)組a,表示頁表的屬性,二維數(shù)組b,表示指令列表,根據(jù)頁面動(dòng)態(tài)調(diào)入的過程中,修改對(duì)應(yīng)的標(biāo)志位,直到指令查詢查詢結(jié)束為止。(3)調(diào)試對(duì)應(yīng)的程序,人工模擬指令的執(zhí)行過程,對(duì)比程序的實(shí)際運(yùn)行結(jié)果,判斷程序是否有不足和錯(cuò)誤之處。(4)總結(jié)實(shí)驗(yàn)不足之處,理解掌握FIFO指令的動(dòng)態(tài)執(zhí)行過程,為以后更深入的理解計(jì)算機(jī)操作系統(tǒng)打下基礎(chǔ)。程序中所用數(shù)據(jù)結(jié)構(gòu)及說明:實(shí)驗(yàn)中定義了一個(gè)一維整形數(shù)組c[4],用來存儲(chǔ)已在主存中的頁面號(hào),同時(shí)定義指針k(初始為0),用來指向要調(diào)出的頁面,當(dāng)查詢的指令不在時(shí),調(diào)出對(duì)應(yīng)的頁面,調(diào)入需要進(jìn)入的頁面,同時(shí)指針加1,指向下一個(gè)要調(diào)出的頁面,由于主存只分配4個(gè)頁架,所以當(dāng)k=4時(shí),指針k需重新置0。定義二維數(shù)組a[7][5]用來表示頁表中7條指令的狀態(tài),頁面動(dòng)態(tài)調(diào)入的過程中修改對(duì)應(yīng)的標(biāo)志位,二維數(shù)組b[12][3]用來表示指令列表(頁面走向),若是存指令,修改對(duì)應(yīng)的標(biāo)志位,若不是存指令,則不變,直到查詢結(jié)束為止。其中s為需要輸入查詢的指令號(hào),須在while循環(huán)中不斷的輸入查詢。程序清單及描述:#include<iostream.h>intmain(void){ intc[4]={0,1,2,3};//已存入主存中的頁號(hào),用數(shù)組表示 intf=1;//f為標(biāo)記,判斷是否在主存中 ints;//輸入指令號(hào) inta[7][5]={{0,1,5,0,011},{1,1,8,0,012},{2,1,9,0,013},{3,1,1,0,021},{4,0,-1,0,022},{5,0,-1,0,023},{6,0,-1,0,121}};//頁表 intb[12][3]={{0,0,70},{0,1,50},{0,2,15},{1,3,21},{0,0,56},{0,6,40},{0,4,53},{0,5,23},{1,1,37},{0,2,78},{0,4,1},{1,6,84}};//頁面走向 cout<<"指令列表"<<endl; cout<<"指令號(hào)"<<"操作"<<"頁號(hào)"<<"頁內(nèi)地址"<<endl; cout<<"1"<<"0"<<"0"<<"70"<<endl; cout<<"2"<<"0"<<"1"<<"50"<<endl; cout<<"3"<<"0"<<"2"<<"15"<<endl; cout<<"4"<<"1"<<"3"<<"21"<<endl; cout<<"5"<<"0"<<"0"<<"56"<<endl; cout<<"6"<<"0"<<"6"<<"40"<<endl; cout<<"7"<<"0"<<"4"<<"53"<<endl; cout<<"8"<<"0"<<"5"<<"23"<<endl; cout<<"9"<<"1"<<"1"<<"37"<<endl; cout<<"10"<<"0"<<"2"<<"78"<<endl; cout<<"11"<<"0"<<"4"<<"1"<<endl; cout<<"12"<<"1"<<"6"<<"84"<<endl<<endl<<endl; inti,j,k=0; while(1)//循環(huán)查詢指令號(hào) { cout<<"請(qǐng)輸入指令號(hào):"; cin>>s; for(i=0;i<12;i++) { for(j=0;j<4;j++) { if(i+1==s) { if(b[i][1]==c[j])//在主存中 { cout<<b[i][1]<<"頁存在"<<""<<"絕對(duì)地址="<<a[b[i][1]][2]*1024+b[i][2]<<endl;f=0; if(b[i][0]==1)//存指令 { a[b[i][1]][3]=1;//修改標(biāo)志 } break; } } f=1; } if(!f)//在主存,跳過循環(huán) { continue; } else//不在主存中 { if(s==i+1) { cout<<"*"<<b[i][1]<<endl;//缺頁 cout<<"OUT"<<""<<c[k]<<""<<"IN"<<""<<b[i][1]<<endl;//調(diào)出頁面,調(diào)入頁面 a[c[k]][1]=0; a[b[i][1]][2]=a[c[k]][2]; a[b[i][1]][1]=1;//修改標(biāo)志置1,在主存中 c[k]=b[i][1];//修改數(shù)組元素 k++;//修改指針 if(b[i][0]==1)//存指令 { a[b[i][1]][3]=1;//修改標(biāo)志 } if(k==4)//指針重置0 { k=0; } } } } } return0;}執(zhí)行結(jié)果:說明:為方便查閱指令列表,截圖輸出12條指令的列表,然后根據(jù)實(shí)際查詢的需要,輸入指令號(hào)便可知查詢指令是否在主存中,若存在,輸出絕對(duì)地址,若不存在,輸出調(diào)出(OUT)的頁面號(hào)和調(diào)入(IN)的頁面號(hào)。結(jié)果分析:對(duì)比實(shí)驗(yàn)運(yùn)行結(jié)果,指令列表的走向(FIFO)與人工分析的一致,在主存中,輸出絕對(duì)地址,不在主存中,輸出調(diào)出的頁面號(hào)和調(diào)入的頁面號(hào),程序結(jié)果正確,實(shí)驗(yàn)基本達(dá)到預(yù)期的目標(biāo)??偨Y(jié)與體會(huì):本次實(shí)驗(yàn)的過程中,由于前期理論的不足、專業(yè)知識(shí)不足,和數(shù)據(jù)結(jié)構(gòu)的不熟悉,在前期編寫程序的過程中,沒有任何的條理和順序,只是需要什么就要什么,程序邏輯上很混亂,指令的執(zhí)行順序一直有問題,一直調(diào)不出來錯(cuò)在哪,后期對(duì)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論