蘭州大學(xué)操作系統(tǒng)實(shí)驗(yàn)八存儲(chǔ)管理模擬題目和答案,實(shí)驗(yàn)報(bào)告.docx
《蘭州大學(xué)操作系統(tǒng)實(shí)驗(yàn)八存儲(chǔ)管理模擬題目和答案,實(shí)驗(yàn)報(bào)告.docx》由會(huì)員分享,可在線(xiàn)閱讀,更多相關(guān)《蘭州大學(xué)操作系統(tǒng)實(shí)驗(yàn)八存儲(chǔ)管理模擬題目和答案,實(shí)驗(yàn)報(bào)告.docx(11頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
實(shí)驗(yàn)報(bào)告 實(shí)驗(yàn)八 實(shí)驗(yàn)名稱(chēng):存儲(chǔ)管理模擬實(shí)驗(yàn)?zāi)康模?. 掌握請(qǐng)求分頁(yè)存儲(chǔ)管理系統(tǒng)的基本原理2. 實(shí)現(xiàn)一個(gè)模擬的虛擬分頁(yè)存儲(chǔ)管理系統(tǒng)實(shí)驗(yàn)要求: 編寫(xiě)一個(gè)程序,模擬一個(gè)虛擬分頁(yè)存儲(chǔ)管理系統(tǒng)。其中,由系統(tǒng)隨機(jī)產(chǎn)生進(jìn)程;進(jìn)程大小、進(jìn)程到達(dá)次序、時(shí)間、進(jìn)程執(zhí)行軌跡(頁(yè)面訪(fǎng)問(wèn)順序)也隨機(jī)生成,但進(jìn)程之間必須有并發(fā)存在,進(jìn)程執(zhí)行時(shí)間需有限,進(jìn)程調(diào)度采用時(shí)間片輪轉(zhuǎn)算法(以頁(yè)面模擬);rss駐留集大小物理塊分配策略采取固定分配局部置換;分配算法采用按比例分配算法;調(diào)頁(yè)采用請(qǐng)求調(diào)頁(yè)方式;置換分別采用FIFO、LRU(一直沒(méi)用) 訪(fǎng)問(wèn)次數(shù) 和簡(jiǎn)單CLOCK算法(循環(huán)鏈表)標(biāo)志 有沒(méi)有被訪(fǎng)問(wèn); 駐留集大小可調(diào),觀察駐留集大小對(duì)缺頁(yè)率的影響。算法思想:FIFO 先進(jìn)先出法LRU 最久未使用算法CLOCK 簡(jiǎn)單時(shí)鐘算法命中率頁(yè)面失效次數(shù)頁(yè)地址流(序列)長(zhǎng)度駐留集大小可調(diào),觀察駐留集大小對(duì)缺頁(yè)率的影響。結(jié)構(gòu)體定義頁(yè)面控制表表結(jié)構(gòu) 頁(yè)面號(hào)指針頁(yè)面控制結(jié)構(gòu)單位時(shí)間訪(fǎng)問(wèn)次數(shù)頁(yè)框號(hào)上次訪(fǎng)問(wèn)時(shí)間頁(yè)面序號(hào)頁(yè)面頁(yè)框號(hào)包含鏈表:空閑頁(yè)面表 忙頁(yè)面表 包含數(shù)組:進(jìn)程數(shù)組 頁(yè)面號(hào)數(shù)組 開(kāi)始流程圖:引用塊編號(hào)大于物理塊?分配物理塊為其分配頁(yè)號(hào)隨機(jī)得到進(jìn)程指令序列 否頁(yè)號(hào)在物理塊內(nèi)?是是是否完成?選擇FIFO LRU CLOCK 置換算法置換是結(jié)束實(shí)驗(yàn)結(jié)果分析:觀察數(shù)據(jù)可看出:橫向:三種替換算法的命中率由高到底排列應(yīng)該是LRUCLOCKFIFO。 縱向:進(jìn)程的駐留級(jí)越大,其缺頁(yè)率就越低。實(shí)驗(yàn)體會(huì):1. 內(nèi)存中進(jìn)程的多少會(huì)影響駐留集大小和缺頁(yè)中斷率。如果內(nèi)存中進(jìn)程太多,將導(dǎo)致每個(gè)進(jìn)程的駐留集太小,發(fā)生缺頁(yè)中斷的概率很大。相應(yīng)地,系統(tǒng)發(fā)生抖動(dòng)的可能性就會(huì)很大。如果在內(nèi)存中保持太少的活動(dòng)進(jìn)程,那么所有活動(dòng)進(jìn)程同時(shí)處于阻塞狀態(tài)的可能性就會(huì)很大,從而降低處理機(jī)的利用率。2. 置換算法的好壞將直接影響系統(tǒng)的性能,不適當(dāng)?shù)闹脫Q算法可能導(dǎo)致系統(tǒng)出現(xiàn)“抖動(dòng)”現(xiàn)象。常用的頁(yè)面置換算法:最佳置換算法、最近最少使用算法、先進(jìn)先出算法和時(shí)鐘算法等。最佳置換算法難以實(shí)現(xiàn)但可以成為核對(duì)其他算法的標(biāo)準(zhǔn)。3. 也應(yīng)注意負(fù)載問(wèn)題,解決系統(tǒng)應(yīng)當(dāng)保持多少個(gè)活動(dòng)進(jìn)程駐留在內(nèi)存的問(wèn)題,即控制多道程序系統(tǒng)的度。當(dāng)內(nèi)存中的活動(dòng)進(jìn)程數(shù)太少時(shí),負(fù)載控制將增加新進(jìn)程或激活一些掛起進(jìn)程進(jìn)入內(nèi)存;反之,當(dāng)內(nèi)存中的進(jìn)程數(shù)太多時(shí),負(fù)載控制將暫時(shí)掛起一些進(jìn)程,減少內(nèi)存中的活動(dòng)進(jìn)程數(shù)。實(shí)驗(yàn)代碼:#include #include #include #include #define TRUE 1#define FALSE 0#define INVALID -1#define total_instruction 320 /指令流長(zhǎng)#define total_vp 32 /頁(yè)長(zhǎng)#define clear_period 50 typedef struct /頁(yè)面結(jié)構(gòu) int pn,/頁(yè)面序號(hào) pfn,/頁(yè)面所在內(nèi)存區(qū)的頁(yè)框號(hào)counter,/單位時(shí)間內(nèi)訪(fǎng)問(wèn)次數(shù)time;/上次訪(fǎng)問(wèn)的時(shí)間pl_type;pl_type pltotal_vp; /頁(yè)面結(jié)構(gòu)數(shù)組struct pfc_struct /頁(yè)面控制結(jié)構(gòu) int pn,/頁(yè)面號(hào) pfn;/內(nèi)存區(qū)頁(yè)面的頁(yè)框號(hào) struct pfc_struct *next;/頁(yè)面指針,用于維護(hù)內(nèi)存緩沖區(qū)的鏈?zhǔn)浇Y(jié)構(gòu);typedef struct pfc_struct pfc_type; /主存區(qū)頁(yè)面控制結(jié)構(gòu)別名pfc_type pfctotal_vp, /主存區(qū)頁(yè)面控制結(jié)構(gòu)數(shù)組*freepf_head, /主存區(qū)頁(yè)面控制結(jié)構(gòu)的空閑頁(yè)面頭指針*busypf_head, /主存區(qū)頁(yè)面控制結(jié)構(gòu)的忙頁(yè)面頭指針*busypf_tail; /主存區(qū)頁(yè)面控制結(jié)構(gòu)的忙頁(yè)面尾指針int diseffect; /頁(yè)錯(cuò)誤計(jì)數(shù)器,初次把頁(yè)面載入主存時(shí)也當(dāng)做頁(yè)錯(cuò)誤int atotal_instruction; /隨即指令流數(shù)組int pagetotal_instruction; /指令對(duì)應(yīng)的頁(yè)面號(hào)int offsettotal_instruction; /指令所在頁(yè)面中的偏移量int initialize(int);/初始化頁(yè)面結(jié)構(gòu)數(shù)組和頁(yè)面控制結(jié)構(gòu)數(shù)組int FIFO(int);/先進(jìn)先出算法int LRU(int);/最近最久未使用算法int CLOCK(int);/簡(jiǎn)單時(shí)鐘(鐘表)算法int main( ) int s;/隨機(jī)數(shù) int i; srand(10*getpid(); /*每次運(yùn)行時(shí)進(jìn)程號(hào)不同,用來(lái)作為初始化隨機(jī)數(shù)隊(duì)列的種子*/ s = (int)(float)(total_instruction-1)*(rand()/(RAND_MAX+1.0);printf(n-rand instructions queue-n); for (i=0; itotal_instruction; i+=4) /產(chǎn)生指令隊(duì)列 ai=s; /任選一指令訪(fǎng)問(wèn)點(diǎn)m ai+1=ai+1; /順序執(zhí)行一條指令 ai+2=(int)(float)ai*(rand()/(RAND_MAX+1.0); /執(zhí)行前地址指令m ai+3=ai+2+1; /順序執(zhí)行一條指令 printf(%6d%6d%6d%6dn, ai,ai+1,ai+2,ai+3); s = (int)(float)(total_instruction-1)-ai+2)*(rand()/(RAND_MAX+1.0) + ai+2; printf(-n);for (i=0;itotal_instruction;i+) /將指令序列變換成頁(yè)地址流 pagei=ai/10; offseti=ai%10; printf(compare the three methods:);printf(n-n); printf( Rsst FIFOt LRUt CLOCKn); for(i=4;i=32;i+) /用戶(hù)內(nèi)存工作區(qū)從4個(gè)頁(yè)面到32個(gè)頁(yè)面 printf( %2d t,i); FIFO(i); LRU(i);CLOCK(i); printf(n); return 0;/初始化頁(yè)面結(jié)構(gòu)數(shù)組和頁(yè)面控制結(jié)構(gòu)數(shù)組/total_pf; 用戶(hù)進(jìn)程的內(nèi)存頁(yè)面數(shù)int initialize(int total_pf) int i; diseffect=0; for(i=0;itotal_vp;i+)pli.pn=i;pli.pfn=INVALID; /置頁(yè)面所在主存區(qū)的幀號(hào)為-1.表示該頁(yè)不在主存中pli.counter=0;/置頁(yè)面結(jié)構(gòu)中的訪(fǎng)問(wèn)次數(shù)為0pli.time=-1;/置頁(yè)面結(jié)構(gòu)中的上次訪(fǎng)問(wèn)的時(shí)間為-1for(i=0;itotal_pf-1;i+)pfci.next=&pfci+1; /建立pfci-1和pfci之間的鏈接pfci.pfn=i; /初始化主存區(qū)頁(yè)面的頁(yè)框號(hào)pfctotal_pf-1.next=NULL;pfctotal_pf-1.pfn=total_pf-1;freepf_head=&pfc0;/主存區(qū)頁(yè)面控制結(jié)構(gòu)的空閑頁(yè)面頭指針指向pfc0return 0;/最近最久未使用算法/int total_pf; 用戶(hù)進(jìn)程的內(nèi)存頁(yè)面數(shù)int LRU (int total_pf) int MinT;/最小的訪(fǎng)問(wèn)時(shí)間,即很久沒(méi)被訪(fǎng)問(wèn)過(guò)int MinPn;/擁有最小的訪(fǎng)問(wèn)時(shí)間的頁(yè)的頁(yè)號(hào)int i,j;int CurrentTime;/系統(tǒng)當(dāng)前時(shí)間 initialize(total_pf);/初始化頁(yè)面結(jié)構(gòu)數(shù)組和頁(yè)面控制結(jié)構(gòu)數(shù)組 CurrentTime=0;diseffect=0;for(i=0;itotal_instruction;i+)if(plpagei.pfn=INVALID) /頁(yè)面失效diseffect+;/頁(yè)錯(cuò)誤次數(shù)加 if(freepf_head=NULL) /無(wú)空閑頁(yè)面 MinT=100000; for(j=0;jplj.time&plj.pfn!=INVALID) MinT=plj.time; MinPn=j; freepf_head=&pfcplMinPn.pfn; /最久沒(méi)被訪(fǎng)問(wèn)過(guò)的頁(yè)被釋放 plMinPn.pfn=INVALID; /最久沒(méi)被訪(fǎng)問(wèn)過(guò)的頁(yè)被換出主存 plMinPn.time=-1;/最久沒(méi)被訪(fǎng)問(wèn)過(guò)的頁(yè)的訪(fǎng)問(wèn)時(shí)間置為無(wú)效 freepf_head-next=NULL; plpagei.pfn=freepf_head-pfn; /有空閑頁(yè)面,把相應(yīng)的頁(yè)面換入主存,并把pfn改為相應(yīng)的頁(yè)框號(hào) plpagei.time=CurrentTime;/令訪(fǎng)問(wèn)時(shí)間為當(dāng)前系統(tǒng)時(shí)間 freepf_head=freepf_head-next; /減少一個(gè)空閑頁(yè)面elseplpagei.time=CurrentTime; /命中則刷新該單元的訪(fǎng)問(wèn)時(shí)間CurrentTime+; /系統(tǒng)當(dāng)前時(shí)間加 printf(%6.3ft,1-(float)diseffect/320);return 0;/簡(jiǎn)單時(shí)鐘算法/int total_pf; 用戶(hù)進(jìn)程的內(nèi)存頁(yè)面數(shù)int CLOCK(int total_pf)int i;int usetotal_vp; /使用位int swap;swap=0; /發(fā)生替換initialize(total_pf);pfc_type *pnext; /時(shí)鐘指針pfc_type *head; /隊(duì)列頭指針pnext=freepf_head;head=freepf_head;for(i=0;itotal_vp;i+)usei=0; /初始化使用位為diseffect=0;for(i=0;ipfn=1) /若時(shí)鐘指針指向的頁(yè)的使用位為,則改為并跳過(guò)usepnext-pfn=0;pnext=pnext-next;if(pnext=NULL) pnext=head; /如果時(shí)鐘指針到達(dá)隊(duì)列尾部,重新返回頭部/換出被替換的頁(yè)plpnext-pn.pfn=INVALID;swap=1;if(usepnext-pfn=0) /如果使用位為,則換入相應(yīng)的頁(yè)plpagei.pfn=pnext-pfn; /頁(yè)面結(jié)構(gòu)中要標(biāo)記頁(yè)框號(hào)pnext-pn=pagei; /頁(yè)面控制結(jié)構(gòu)中要標(biāo)記頁(yè)號(hào)usepnext-pfn=1;/重置使用位為pnext=pnext-next;/時(shí)鐘指針下移if(pnext=NULL) pnext=head;/如果時(shí)鐘指針到達(dá)隊(duì)列尾部,重新返回頭部if(swap=0) freepf_head=freepf_head-next;else/頁(yè)面在主存中useplpagei.pfn=1; /刷新使用位為printf(%6.3ft,1-(float)diseffect/320);return 0;/先進(jìn)先出算法版本/int total_pf; 用戶(hù)進(jìn)程的內(nèi)存頁(yè)面數(shù)/實(shí)現(xiàn)細(xì)節(jié)由CLOCK算法退化而來(lái),與FIFO同效果int FIFO(int total_pf)int i;int usetotal_vp;int swap=0;initialize(total_pf);pfc_type *pnext,*head;pnext=freepf_head;head=freepf_head;for(i=0;itotal_vp;i+)usei=0;diseffect=0;for(i=0;ipfn=1)usepnext-pfn=0;pnext=pnext-next;if(pnext=NULL) pnext=head;/換出被替換的頁(yè)plpnext-pn.pfn=INVALID;swap=1;if(usepnext-pfn=0) /如果使用位為,則換入相應(yīng)的頁(yè)plpagei.pfn=pnext-pfn; /頁(yè)面結(jié)構(gòu)中要標(biāo)記頁(yè)框號(hào)pnext-pn=pagei; /頁(yè)面控制結(jié)構(gòu)中要標(biāo)記頁(yè)號(hào)usepnext-pfn=1;/重置使用位為pnext=pnext-next;if(pnext=NULL) pnext=head;if(swap=0) freepf_head=freepf_head-next;printf(%6.3ft,1-(float)diseffect/320);return 0;- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來(lái)的問(wèn)題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
5 積分
下載 |
- 配套講稿:
如PPT文件的首頁(yè)顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開(kāi)word文檔。
- 特殊限制:
部分文檔作品中含有的國(guó)旗、國(guó)徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 蘭州大學(xué) 操作系統(tǒng) 實(shí)驗(yàn) 存儲(chǔ) 管理 模擬 題目 答案 報(bào)告
鏈接地址:http://m.italysoccerbets.com/p-12771974.html