操作系統(tǒng)虛擬頁式管理實驗報告_第1頁
操作系統(tǒng)虛擬頁式管理實驗報告_第2頁
操作系統(tǒng)虛擬頁式管理實驗報告_第3頁
操作系統(tǒng)虛擬頁式管理實驗報告_第4頁
操作系統(tǒng)虛擬頁式管理實驗報告_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

溫馨提示

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

評論

0/150

提交評論