




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、實驗四 頁式虛擬存儲管理中地址轉(zhuǎn)換和頁式中斷 FIFO一、實驗目的深入了解頁式存儲管理如何實現(xiàn)地址轉(zhuǎn)換;進一步認識頁式虛擬存儲管理中如何處理缺頁中斷以及頁面置換算法。二、實驗主要內(nèi)容編寫程序完成頁式虛擬存儲管理中地址轉(zhuǎn)換過程和模擬缺頁中斷的處理。實驗具體內(nèi)容包括:首先對給定的地址進行轉(zhuǎn)換工作,若發(fā)現(xiàn)缺頁則先進行缺頁中斷處理,然后再進行地址轉(zhuǎn)換;最后編寫主函數(shù)對所做工作進行測試。假定主存64KB,每個主存塊1024字節(jié),作業(yè)最大支持到64KB,系統(tǒng)中每個作業(yè)分得主存塊4塊。三、實驗原理1)地址轉(zhuǎn)換過程:首先從邏輯地址中的高位取得頁號,然后根據(jù)頁號查頁表,得到塊號;然后從邏輯地址中的低位取得頁內(nèi)地
2、址,將塊號和頁內(nèi)地址合并即得到物理地址。2)缺頁中斷處理根據(jù)頁號查找頁表,判斷該頁是否在主存儲器中,若該頁標志位“0”,形成缺頁中斷。操作系統(tǒng)讓調(diào)出中斷處理程序處理中斷。四、實驗方法與步驟實現(xiàn)地址轉(zhuǎn)換與缺頁中斷處理,主要考慮三個問題:第一,設計頁式虛擬存儲管理方式中頁表的數(shù)據(jù)結(jié)構(gòu);第二,地址轉(zhuǎn)換算法的實現(xiàn);第三,缺頁中斷處理算法的實現(xiàn)。1) 設計頁表的數(shù)據(jù)結(jié)構(gòu)頁式虛擬存儲管理方式中頁表除了頁號和該頁對應的主存塊號外,至少還要包括存在標志(該頁是否在主存),磁盤位置(該頁的副本在磁盤上的位置)和修改標
3、志(該頁是否修改過)。在實驗中頁表用數(shù)組模擬,其數(shù)據(jù)結(jié)構(gòu)定義如下:struct int lnumber; /頁號 int flag; /表示頁是否在主存中,“1”表示在,“0”表示不在 int pnumber; / 該頁所在主存塊的塊號 int write; /該頁是否被修改過,“1”表示修改過,“0“表示沒有修改過 int dnumber; /該頁存放在磁盤上的位置,即磁盤塊號pagen; /頁表定義2)地址轉(zhuǎn)換算法的實現(xiàn) 地址轉(zhuǎn)換是由硬件完成的,實驗中使用軟件程序模擬地址轉(zhuǎn)換過程。在實驗中,每個主存塊1024字節(jié),則塊內(nèi)地址占10位;主存64KB,則主存共64塊,即塊號占6位;物理地址共占
4、16位;作業(yè)最大64KB,則作業(yè)最大占64塊,即頁號占6位,邏輯地址共占16位。(用主存的大小計算物理地址位數(shù),用最大作業(yè)大小計算邏輯地址位數(shù))。在頁式虛擬存儲管理方式中,作業(yè)信息作為副本放在磁盤上,作業(yè)執(zhí)行時僅把作業(yè)信息的部分頁面裝入主存儲器,作業(yè)執(zhí)行時若訪問的頁面在主存中,則進行地址轉(zhuǎn)換,若訪問的頁面不在主存中,則產(chǎn)生一個“缺頁中斷”,由操作系統(tǒng)把當前所需要的頁面裝入主存儲器后,再次執(zhí)行時才可以按上述方法進行地址轉(zhuǎn)換。
5、60; 模擬地址轉(zhuǎn)換流程度3) 缺頁中斷處理算法的實現(xiàn)缺頁處理過程簡單闡述如下:a) 根據(jù)當前執(zhí)行指令中邏輯地址的頁號查找頁表,判斷該頁是否在主存儲器中,若該頁標志為“0”,形成缺頁中斷。中斷裝置通過交換PSW讓操作系統(tǒng)的中斷處理程序占用處理器。b) 操作系統(tǒng)處理缺頁中斷的方法及時查主存分配表,找一個空閑主存塊;若無空閑塊,查頁表,選擇一個已在主存的頁面,把它暫時調(diào)出主存。若在執(zhí)行過程中該頁被修改過,則需將該頁信息寫回磁盤,否則不比寫回;c) 找出該頁的位置,啟動磁盤讀出該頁的
6、信息,把磁盤上讀出的信息裝入第2不找到的主存塊,修改頁表中該頁的標志為“1”;d) 由于產(chǎn)生缺頁中斷的那條指令還沒有執(zhí)行完,所以頁面裝入后應該重新執(zhí)行被中斷的指令。當重新執(zhí)行該指令時,由于要訪問的頁面已在主存中,所以可以正常執(zhí)行。關于第二步的查找裝入新頁面的主存塊處理方式,不同系統(tǒng)采用的策略可能有所不同,這里采用局部置換算法,就是每個作業(yè)分得一定的主存塊,只能在分得的主存塊內(nèi)查找空閑塊,若無空閑主存塊,則從該作業(yè)中選擇一個頁面淘汰出主存。實驗中采用局部置換算法。使用局部置換算法時,存在這樣一個問題:就是在分配給作業(yè)主存空間時,裝入哪些頁?有的系統(tǒng)采取不裝入任何一頁,當執(zhí)行過程中需要時才將其調(diào)入
7、。有點系統(tǒng)采用頁面預置的方法,事先估計可能某些頁面會先用到,在分配主存塊后將這些頁面裝入。在本實驗中采用第二種方法,分配主存空間時將前幾頁調(diào)入主存,假定系統(tǒng)中每個作業(yè)分得主存塊m 塊,則將第 0m-1頁裝入主存。因為是模擬硬件工作,所有在實驗中如果訪問的頁不再主存中時,則輸入該頁頁號,表示硬件產(chǎn)生缺頁中斷,然后直接轉(zhuǎn)去缺頁中斷處理;由于采用頁面預置方法,在給定的主存塊中一定無空閑塊,只能淘汰已在主存的一頁;沒有啟動磁盤的工作,淘汰的頁面需要寫回磁盤時,用輸入頁號表示,調(diào)入新的一頁時,將該頁在頁表中的存在標志置為“1”,輸出頁號表示將該頁調(diào)入主存。當主存中無空閑塊時,為裝入一個頁面,必須按照某種
8、算法從已在主存的頁中選擇一頁,將它暫時調(diào)出主存,讓出主存空間,用來存放裝入的頁面,這個工作稱為“頁面調(diào)度”。常用的頁面調(diào)度算法有:先進現(xiàn)出、最近最少用算法、和最近最不常用算法。在本實驗中采用先進現(xiàn)出調(diào)度算法。先進現(xiàn)出算法總是選擇駐留在主存時間最長的一頁調(diào)出。實驗中把主存儲器的頁的頁號按照進入主存的先后次序拍成隊列,每次總是調(diào)出對首的頁,當裝入一個新頁后,把新頁的頁號排入對尾。實驗中,用一個數(shù)組存放頁號的隊列。假定分配給作業(yè)的主存塊數(shù)為m,數(shù)組可由m個元素組成,p0,p1,p2pm-1;對首指針head;采用頁面預置的方法,頁號隊列的長度總是m,tail等于(head+1)%m。因此可以使用一個
9、指針,只用head即可。在裝入一個新的頁時,裝入頁和淘汰頁同時執(zhí)行,當裝入一個新的頁時,將其頁號存入數(shù)組:淘汰頁的頁號phead;phead=新裝入頁的頁號;head=(head+1)%m;實驗執(zhí)行一條指令時,不模擬指令的執(zhí)行,只是考慮指令執(zhí)行是否修改頁面,若修改頁面,則將該頁的頁表中的修改標志位置“1”,然后輸出轉(zhuǎn)換后的物理地址,并輸出物理地址來表示一條指令執(zhí)行完成;如果訪問的頁不在主存時,則產(chǎn)生缺頁中斷,然后直接轉(zhuǎn)去缺頁中斷處理,最后模擬中斷返回,就是返回沖進進行地址轉(zhuǎn)換。因為沒有實際主存,所有在模擬程序中首先手工輸入頁表信息,創(chuàng)建該作業(yè)的頁表;然后循環(huán)執(zhí)行假定的指令,觀察地址轉(zhuǎn)換情況。五
10、、練習題采用LRU頁面調(diào)度算法編程實現(xiàn)上述虛擬頁式存儲管理的地址轉(zhuǎn)換。源代碼#include<iostream.h>#define n 64 /頁表的最大長度#define length 4 /系統(tǒng)為每個作業(yè)分配的主存塊數(shù)structint lnumber; /頁號int flag; /表示頁是否在主存中,“1”表示在,“0”表示不在int pnumber; / 該頁所在主存塊的塊號int write; /該頁是否被修改過,“1”表示修改過,“0“表示沒有修改過int dnumber; /該頁存放在磁盤上的位置,即磁盤塊號pagen; /頁表定義int m;int page_len
11、gth; /頁表的實際長度int plength; /用向量模擬主存int head;void page_interrupt(int); /缺頁中斷處理函數(shù)void command(unsigned, int); /命令處理函數(shù)void main()int lnumber,pnumber,write,dnumber;unsigned laddress;int i;cout<<"輸入頁表的信息,創(chuàng)建頁表(頁號從0開始,若頁號為1,則結(jié)束輸入)n"cout<<"請輸入頁號和輔存地址:"cin>>lnumber>>
12、;dnumber;cin.ignore ();i=0;while(lnumber!=-1)pagei.lnumber=lnumber;pagei.flag=0;pagei.write=0;pagei.dnumber=dnumber;i+;cout<<"請輸入頁號和輔存地址:"cin>>lnumber>>dnumber;/預先將輸入的頁調(diào)入主存塊中page_length=i;cout<<"輸入主存塊號(輸入少于或者等于"<<i<<"個數(shù)據(jù),若塊號數(shù)為1,則結(jié)束輸入):&quo
13、t;cin>>pnumber; cin.ignore ();m=0;head=0;while(m<length&&pnumber!=-1)if(m<i)pagem.pnumber=pnumber;pagem.flag=1;/調(diào)入主存后,標志為置1pm=m; /記錄主存中的頁號m+;cout<<"輸入主存塊號(輸入少于或者等于"<<i<<"個數(shù)據(jù),若塊號數(shù)為1,則結(jié)束輸入):"cin>>pnumber; cin.ignore (); /whilecout<<
14、"輸入指令性質(zhì)(1修改,0不需要,其他結(jié)束程序運行)和邏輯地址n"<<"邏輯地址最大能支持2的16次方165535。n"cout<<"輸入指令性質(zhì):"cin>>write;cin.ignore ();cout<<"輸入邏輯地址:"cin>>laddress;cin.ignore ();while(write=0|write=1)command(laddress,write); /將輸入的邏輯地址轉(zhuǎn)換成物理地址cout<<"輸入指令性質(zhì)
15、:"cin>>write;cin.ignore ();if(write!=0&&write!=1) break;cout<<"輸入邏輯地址:"cin>>laddress;cin.ignore ();/while/main/*中斷處理函數(shù),采用先進先出的頁面調(diào)度算法*/void page_interrupt(int lnumber) int j;cout<<"發(fā)生缺頁中斷"<<lnumber<<endl;j=phead;phead=lnumber;head=(
16、head+1)%m;if(pagej.write=1)cout<<"將頁 "<<j<<" 寫回磁盤第 "<<pagej.dnumber<<" 塊!n"pagej.flag=0;pagelnumber.pnumber=pagej.pnumber;pagelnumber.flag=1;pagelnumber.write=0;cout<<"淘汰主存塊 "<<pagej.pnumber<<" 中的頁 "<
17、;<j<<" ,從磁盤第 "<<pagelnumber.dnumber<<" 塊中調(diào)入頁 "<<lnumber<<endl;/*地址轉(zhuǎn)換函數(shù),將邏輯地址轉(zhuǎn)換成物理地址,如果要查找的頁不在主存當中則產(chǎn)生缺頁中斷*/void command(unsigned laddress,int write) unsigned paddress,ad,pnumber;int lnumber;kk:lnumber=laddress>>10; /取邏輯地址高6位,頁號ad=laddress&
18、;0x3ff; /頁內(nèi)地址cout<<"該邏輯地址的頁號為:"<<lnumber<<" 頁內(nèi)地址為:"<<ad<<endl;if(lnumber>=page_length) /頁號大于頁表的長度,則無效頁號cout<<"該頁不存在!n"return;if(pagelnumber.flag=1) /頁號為lnumber 在內(nèi)存當中 pnumber=pagelnumber.pnumber;paddress=pnumber<<10|ad;cout<
19、;<"邏輯地址是:"<<laddress<<" 對應物理地址是:"<<paddress<<endl;if(write=1) /該頁被修改過pagelnumber.write=1;else /頁號為lnumber不在內(nèi)存當中,則產(chǎn)生缺頁中斷page_interrupt(lnumber);goto kk;/command頁式存儲管理OPT ,LRU實驗報告 一、實驗目的:掌握分頁式存儲管理的基本概念和實現(xiàn)方法。要求編寫一個模擬的分頁式管理程序,并能對分頁式存儲的頁面置換算法進行編寫和計算各個算法的缺頁率。
20、二、程序設計:首先創(chuàng)建頁面鏈指針數(shù)據(jù)結(jié)構(gòu),并設計頁面映像表,采用數(shù)組的方法給定頁面映像。申請緩沖區(qū),將一個進程的邏輯地址空間劃分成若干個大小相等的部分,每一部分稱做頁面或頁。每頁都有一個編號,叫做頁號,頁號從0開始依次編排,如0,1,2。設置等大小的內(nèi)存塊。初始狀態(tài):將數(shù)據(jù)文件的第一個頁面裝入到該緩沖區(qū)的第0塊。設計頁面置換算法,這里分別采用最佳頁面置換算法OPT和最近最久未使用置換算法LRU,并分別計算它們的缺頁率,以比較它們的優(yōu)劣。三、算法說明: 執(zhí)行程序時,當主存沒有可用頁面時,為了選擇淘汰主存中的哪一頁面,騰出1個空閑塊以便存放新調(diào)入的頁面。淘汰哪個頁面的首要問題是選擇何種置換算法。該
21、程序采用人工的方法選擇,依置換策略選擇一個可置換的頁,并計算它們的缺頁率以便比較。/*分頁式管理實驗-源程序*/#include<stdlib.h>#include<conio.h>#include<stdio.h>#include<string.h>#define N 16#define num 5 /*進程分配物理塊數(shù)目*/int AN=1,2,3,4,5,6,7,8,5,2,3,2,7,8,1,4; /*頁表映像*/typedef struct page int address; /*頁面地址*/struct page *next; pag
22、e;struct page *head,*run,*rear;void jccreat() /*進程分配物理塊*/ int i=1;page *p,*q;head=(page *)malloc(sizeof(page); p=head;for(i=1;i<=num;i+)q=(page *)malloc(sizeof(page);p->next=q; q->address=0; q->next=NULL;p=q; rear=p;int search(int n)page *p;int i=0;p=head;while(p->next)if(p->next-&
23、gt;address=n)printf("Get it at the page %dn",i+1);run=p;return 1;p=p->next;i+;return 0;void changeOPT(int n,int position)int i;int total=0;int flag=1;int distancenum;int MAX;int order=0;page *p,*q;p=head->next;q=head->next;for(i=0;i<num;i+)distancei=100;i=0;while(p)if(p->add
24、ress=0)flag=0;break;p=p->next;i+;if(!flag)p->address=n;printf("Change the page %dn",i+1);elsewhile(q)for(i=position;i<N;i+)if(q->address=Ai)distancetotal=i-position;total+;q=q->next;MAX=distance0;for(i=0;i<num;i+)if(distancei>MAX)MAX=distancei;order=i;printf("Chan
25、ge the page %dn",order+1);i=0;while(p)if(i=order)p->address=n;i+;p=p->next;void changeLRU(int n)int i=0;int flag=1;page *p,*delect;p=head->next;while(p)if(p->address=0)flag=0;p->address=n;printf("Change the page %dn",i+1);break;p=p->next;i+;if(flag)delect=head->next;head->next=delect->next;printf("Delect from the head, and add new to the end.n");delect->address=n;rear->next=delect;rear=delect;rear->next=NULL;float OPT()int i;int lose=0;float losef;float percent;for(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 項目工程師培訓課件
- 油田開發(fā)項目建議書(參考)
- 2025年壓力表合作協(xié)議書
- 2025年智能分揀系統(tǒng)項目發(fā)展計劃
- 2025年預防用生物制品項目發(fā)展計劃
- 五年級上冊數(shù)學教案 第七單元
- 2025年慣性組合項目合作計劃書
- 2025年商業(yè)照明燈具項目發(fā)展計劃
- 2025年輕質(zhì)建筑材料及制品合作協(xié)議書
- 2025年中高壓陰極電容鋁箔合作協(xié)議書
- 2025年四級中式烹調(diào)師(中級)職業(yè)技能鑒定參考試題庫(含答案)
- 夜間作業(yè)安全培訓培訓資料
- 中藥知識講解課件
- 施工資源需求計劃與調(diào)配策略
- 預制箱梁首件工程施工總結(jié)
- 2024-2025學年人教版高二化學選擇性必修3配套課件 基礎課時4 有機物分子式和分子結(jié)構(gòu)的確定
- 湖南省岳陽市2024-2025學年小升初模擬數(shù)學測試卷含解析
- 寵物店店員的工作職責與服務理念
- 高中家長會 高一下學期期末家長會課件
- 2025浙江衢州市柯城區(qū)國企業(yè)招聘31人高頻重點提升(共500題)附帶答案詳解
- 中國平面設計行業(yè)發(fā)展運行現(xiàn)狀及投資潛力預測報告
評論
0/150
提交評論