操作系統(tǒng)實驗五_第1頁
操作系統(tǒng)實驗五_第2頁
操作系統(tǒng)實驗五_第3頁
操作系統(tǒng)實驗五_第4頁
操作系統(tǒng)實驗五_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

實驗五虛擬存儲器管理實驗?zāi)康?、理解虛擬存儲器概念。2、掌握分頁式存儲管理地址轉(zhuǎn)換和缺頁中斷。實驗內(nèi)容與基本要求1、 模擬分頁式存儲管理中硬件的地址轉(zhuǎn)換和產(chǎn)生缺頁中斷。2、 用先進(jìn)先出頁面調(diào)度算法處理缺頁中斷。實驗報告內(nèi)容1、 分頁式存儲管理和先進(jìn)先出頁面調(diào)度算法原理。2、 程序流程圖。3、 程序及注釋。4、運行結(jié)果以及結(jié)論。1、分頁式存儲管理和先進(jìn)先出頁面調(diào)度算法原理。在存儲器管理中,連續(xù)分配方式會形成許多“碎片”,雖然可通過“緊湊”方法將許多碎片拼接成可用的大塊空間,但須為之付出很大開銷。如果允許將一個進(jìn)程直接分散地裝入到許多不相鄰的分區(qū)中,則無須再進(jìn)行“緊湊”?;谶@一思想而產(chǎn)生了離散分配方式。如果離散分配的基本單位是頁,則稱為分頁存儲管理方式。在分頁存儲管理方式中,如果不具備頁面對換功能,則稱為基本分頁存儲管理方式,或稱為純分頁存儲管理方式,它不具有支持實現(xiàn)虛擬存儲器的功能,它要求把每個作業(yè)全部裝入內(nèi)存后方能運行。先進(jìn)先出調(diào)度算法根據(jù)頁面進(jìn)入內(nèi)存的時間先后選擇淘汰頁面,先進(jìn)入內(nèi)存的頁面先淘汰,后進(jìn)入內(nèi)存的后淘汰。本算法實現(xiàn)時需要將頁面按進(jìn)入內(nèi)存的時間先后組成一個隊列每次調(diào)度隊首頁面予以淘汰。這種調(diào)度算法總是淘汰最先進(jìn)入內(nèi)存的那一頁,F(xiàn)IFO算法簡單,實現(xiàn)容易。一種實現(xiàn)方法是把裝入內(nèi)存的那些頁的頁號按進(jìn)入的先后次序排成隊列,用指針K指示當(dāng)前調(diào)入新頁時應(yīng)淘汰的頁在隊列中的位置。每當(dāng)調(diào)入一個新頁后,在指針指示的位置上填上新頁號,然后指針K加1,指向下一次應(yīng)淘汰的頁。2、程序流程圖

齡題目是否否結(jié)東A結(jié)束是,產(chǎn)電是’延出I—思二J輸衣華對地址「置換戦先進(jìn)人的頁面\. 綸入頁號和率元號輸人頁越芳輸出華對哋址篠報分頁管竄地曲換齡題目是否否結(jié)東A結(jié)束是,產(chǎn)電是’延出I—思二J輸衣華對地址「置換戦先進(jìn)人的頁面\. 綸入頁號和率元號輸人頁越芳輸出華對哋址篠報分頁管竄地曲換x y先進(jìn)龍出畀法/廛擬存墻葢初始化隅據(jù)鳥或界出]JeJbt主程序&U;|-J-..:!;=1Y是山存指令&U;|-J-..:!;=1Y是山存指令地擬PI111.換取指令甲訪問的頁號視該頁修股標(biāo)盒如1形成絕討地址愉出絕對地址取一條拆令X1T拆樂指令?:ij.十前貞綸檸被更訓(xùn)?FTFDlOi調(diào)進(jìn)円彼調(diào)入貢面的相X1T拆樂指令?:ij.十前貞綸檸被更訓(xùn)?FTFDlOi調(diào)進(jìn)円彼調(diào)入貢面的相關(guān)加性將謫頁更新標(biāo)志代為o輸出被賢換出去的頂曲M示被謂入的貞]新置換出當(dāng)前頁取卜…集抬令憐改叭複<3、程序及注釋#include<cstdio>#include<cstring>#defineSizeOfPage100#defineSizeOfBlock128#defineM4structinfo//頁表信息結(jié)構(gòu)體{boolflag;//頁標(biāo)志,1表示該頁已在主存,0表示該頁不在主存longblock;//塊號longdisk;//在磁盤上的位置booldirty;//更新標(biāo)志};structinfopagelist[SizeOfPage];longpo;〃隊列標(biāo)記longP[M];〃假設(shè)內(nèi)存中最多允許M=4個頁面voidinit_ex1()//內(nèi)存空間初始化。{memset(pagelist,O,sizeof(pagelist));〃將內(nèi)存空間初始化為0//下面對分頁式虛擬存儲系統(tǒng)賦值pagelist[0].flag=1;pagelist[0].block=5;pagelist[0].disk=001;pagelist[1].flag=1;pagelist[1].block=8;pagelist[1].disk=002;pagelist[2].flag=1;pagelist[2].block=9;pagelist[2].disk=003;pagelist[3].flag=1;pagelist[3].block=1;pagelist[3].disk=004;}voidwork_ex1()//模擬分頁式存儲管理中硬件的地址轉(zhuǎn)換和產(chǎn)生缺頁中斷過程{boolstop=0;longp,q;chars[128];do{printf(”請輸入指令的頁號和單兀號:\n");if(scanf("%ld%ld",&p,&q)!=2){scanf("%s",s);if(strcmp(s,"exit")==O)〃如果輸入的為"exit"那么就退出,進(jìn)入重選頁面{stop=1;}}else{if(pagelist[p].flag)//如果該頁flag標(biāo)志位為1,說明該頁在主存中{printf("絕對地址=%ld\n",pagelist[p].block*SizeOfBlock+q);〃計算出絕對地址,絕對地址=塊號blockX塊長(默認(rèn)128)+單元號}else{printf(“該頁號%ld不存在主存\n",p);//如果該頁flag標(biāo)志位為0,表示該頁不在主存中,則產(chǎn)生了一次缺頁中斷}}}while(!stop);}voidinit_ex2(){/*用先進(jìn)先出(FIFO)頁面調(diào)度算法處理缺頁中斷的初始化,其中也包含了對于當(dāng)前的存儲器內(nèi)容的初始化*/po=0;P[0]=0;P[1]=1;P[2]=2;P[3]=3;//對內(nèi)存中的4個頁面進(jìn)行初始化,并使目前排在第一位的為0memset(pagelist,0,sizeof(pagelist));〃將內(nèi)存空間初始化為0pagelist[0].flag=1;pagelist[0].block=5;pagelist[0].disk=001;pagelist[1].flag=1;pagelist[1].block=8;pagelist[1].disk=002;pagelist[2].flag=1;pagelist[2].block=9;pagelist[2].disk=003;pagelist[3].flag=1;pagelist[3].block=1;pagelist[3].disk=004;}voidwork_ex2()〃模擬FIFO算法的工作過程longp,q,i;chars[100];boolstop=0;do{printf("請輸入指令的頁號、單元號,以及是否為內(nèi)存指令:\n");if(scanf("%ld%ld",&p,&q)!=2){scanf("%s",s);if(strcmp(s,"exit")==O)〃如果輸入的為"exit"那么就退出,進(jìn)入重選頁面{stop=1;}}else{scanf("%s",s);if(pagelist[p].flag)〃如果該頁flag標(biāo)志位為1,說明該頁在主存中{printf("絕對地址=%ld\n",pagelist[p].block*SizeOfBlock+q);〃計算絕對地址:絕對地址=塊號blockX塊長(128)+單元號if(s[0]=='Y'lls[0]=='y')〃內(nèi)存指令,在該程序中,無實質(zhì)性作用{pagelist[p].dirty=1;〃修改標(biāo)志為1}}else//如果所輸入的頁不在內(nèi)存中if(pagelist[P[po]].dirty) //當(dāng)前的頁面被更新過,需把更新后的內(nèi)容寫回外存{pagelist[P[po]].dirty=0;〃將標(biāo)志位復(fù)0}pagelist[P[po]].flag=0; //將flag標(biāo)志位置0,表示當(dāng)前頁面已被置換出去printf("out%ld\n",P[po]);//顯示根據(jù)FIFO算法被置換出去的頁面printf("in%ld\n",p); //顯示根據(jù)FIFO算法被調(diào)入的頁面,此時將調(diào)入的頁置于換出頁的位置pagelist[p].block=pagelist[P[po]].block;〃將換出頁的塊號賦給調(diào)入頁pagelist[p].flag=1;//將當(dāng)前頁面的標(biāo)記置為1,表示已在主存中P[po]=p; //保存當(dāng)前頁面所在的位置po=(po+1)%M;}}}while(!stop);printf("數(shù)組P的值為:\n");for(i=0;i<M;i++) //循環(huán)輸出當(dāng)前數(shù)組的數(shù)值,即當(dāng)前在內(nèi)存中的頁面{printf("P[%ld]=%ld\n",i,P[i]);}}voidselect() //選擇哪種方法進(jìn)行{longse;chars[128];do{printf("請選擇題號(1/2):");if(scanf("%ld",&se)!=1){scanf("%s",&s);if(strcmp(s,"exit")==O)〃如果輸入為exit則退出整個程序{return;}}else{if(se==1)〃如果se=1,說明選擇的是模擬分頁式存儲管理中硬件的地址轉(zhuǎn)換和產(chǎn)生缺頁中斷{init_ex1(); //調(diào)用init_ex1子函數(shù),初始化work_ex1(); //進(jìn)行模擬}if(se==2) 〃如果se=2說明選擇的是FIFO算法來實現(xiàn)頁面的置換{init_ex2();//調(diào)用init_ex2子函數(shù),初始化work_ex2();//進(jìn)行模擬}}}while(1);}intmain()//主函數(shù){//輸出主界面printf("*虛擬存儲器管理*\n");printf("* 1.分頁管理模塊 2.先進(jìn)先出(FIFO)算法*\n");.JX11 \If'F^'TWTTf^T彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、彳、\-<^ \?select(); //調(diào)用select函數(shù),選擇題號return0;4、運行結(jié)果以及結(jié)論選擇1進(jìn)入分業(yè)管理模塊,輸入指令的頁號和單元號,判斷是否為結(jié)束語句exit,如果是,則退出主界面,若果不是,則進(jìn)而判斷該頁是否存在于主存中,如若是,則算出其絕對地址,公式為:絕對地址=塊號X塊長+單元號,即輸入頁號1,單元號為30時,輸出絕對地址=8*128+30=1054,同理輸入頁號2,單元號6時,輸出絕對地址=9*128+6=1158,如若不存在于主存中,即flag=O,則輸出該頁號*不存在于主存中,即輸入4時輸出該頁號4不存在于主存中。

口國■E單元號單元號單元號劭-E:\OS\LlB5\DBbdgUJB5.exe":ll=1629指令的瓦號.悄淀屯題號燈溜〉吃惜輸入扌旨令的貝號,址-6翟.扌目令的頁號,障輸入15ii險對地:[青金人:;?2Mn矩剤也社=11?投歸入指令的頁號、口國■E單元號單元號單元號劭-E:\OS\LlB5\DBbdgUJB5.exe":ll=1629指令的瓦號.悄淀屯題號燈溜〉吃惜輸入扌旨令的貝號,址-6翟.扌目令的頁號,障輸入15ii險對地:[青金人:;?2Mn矩剤也社=11?投歸入指令的頁號、P10if比對地±±=138情箱入扌旨令的貝號,*50$”u.訶Ilk4惰輸入指令的頁號,§丄目noutlin5植輸入指令的頁號.2i19yout2in£青輸入扌旨令的貝號B90nLutdin8腎輸入扌目令的頁號,p40v”11匸4in^植輸入指令的頁號,■scjiz驗組Tj值;P[01=9P[i]=5PE21-GPE3i-a淸選擇題號S:罩兀號單元號V[■ I—I單匸號社匚號羊匸號社匚號,以及是否為內(nèi)存拒令:?以艮皐否訶岡存拒令:.IM是否為內(nèi)存指令:,畑是否為內(nèi)存指令:,以及是否刀冋仃抱令:.以艮宗否如冋存拒4,乩艮是否】舊存徙令:,以及是否列冋仃抱??以艮皐否訶岡存拒令:,乩艮是否加內(nèi)存崔宦選擇2進(jìn)入先進(jìn)選出(FIFO)算法,輸入指令的頁號和單元號、及是否為內(nèi)存指令,首先判斷是否為結(jié)束語

溫馨提示

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

最新文檔

評論

0/150

提交評論