南昌大學操作系統(tǒng)實驗報告存儲管理的模擬實現(xiàn)
《南昌大學操作系統(tǒng)實驗報告存儲管理的模擬實現(xiàn)》由會員分享,可在線閱讀,更多相關《南昌大學操作系統(tǒng)實驗報告存儲管理的模擬實現(xiàn)(15頁珍藏版)》請在裝配圖網(wǎng)上搜索。
南 昌 大 學 實 驗 報 告-( 5) 存 儲 管 理 的 模 擬 實 現(xiàn)學生姓名: 張皓然 學 號: 5501215001 專業(yè)班級: 本碩 151 實驗類型: 驗證 綜合 設計 創(chuàng)新 實驗日期: 實驗成績: 一、實驗目的存儲管理的主要功能之一是合理地分配空間。請求頁式管理是一種常用的虛擬存儲管理技術。本實驗的目的是通過請求頁式存儲管理中頁面置換算法模擬設計,了解虛擬存儲技術的特點,掌握請求頁式管理的頁面置換算法。二、實驗內(nèi)容1過隨機數(shù)產(chǎn)生一個指令序列,共 320 條指令。其地址按下述原則生成:50%的指令是順序執(zhí)行的;25%的指令是均勻分布在前地址部分;25%的指令是均勻分布在后地址部分;#具體的實施方法是:A. 在0,319的指令地址之間隨機選區(qū)一起點 M;B. 順序執(zhí)行一條指令,即執(zhí)行地址為 M+1 的指令;C. 在前地址0,M+1中隨機選取一條指令并執(zhí)行,該指令的地址為 M;D. 順序執(zhí)行一條指令,其地址為 M+1;E. 在后地址M+2,319中隨機選取一條指令并執(zhí)行;F. 重復 AE,直到執(zhí)行 320 次指令。2指令序列變換成頁地址流設:(1)頁面大小為 1K;(2) 用戶內(nèi)存容量為 4 頁到 32 頁;(3) 用戶虛存容量為 32K。在用戶虛存中,按每 K 存放 10 條指令排列虛存地址,即 320 條指令在虛存中的存放方式為:第 0 條第 9 條指令為第 0 頁(對應虛存地址為0,9) ;第 10 條第 19 條指令為第 1 頁(對應虛存地址為10,19) ;。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。第 310 條第 319 條指令為第 31 頁(對應虛存地址為310,319) ;按以上方式,用戶指令可組成 32 頁。3. 計算并輸出下述各種算法在不同內(nèi)存容量下的命中率。A. FIFO 先進先出的算法B. LRU 最近最少使用算法CLFU 最少訪問頁面算法三、實驗要求1、需寫出設計說明;2、設計實現(xiàn)代碼及說明3、運行結果;四、主要實驗步驟代碼如下:#include #include #include #include #ifndef _UNISTD_H#define _UNISTD_H#include #include #endif#define TRUE 1#define FALSE 0#define INVALID -1#define total_instruction 320 /指令流長#define total_vp 32 /虛頁頁長#define clear_period 50 /清零周期typedef struct /頁面結構int pn, /頁面序號pfn, /頁面所在內(nèi)存區(qū)的幀號counter, /單位時間內(nèi)訪問量time;pl_type;pl_type pltotal_vp; /頁面結構數(shù)組struct pfc_struct /頁面控制結構int pn, /頁面號pfn; /內(nèi)存區(qū)頁面的幀號/頁面指針,用于維護內(nèi)存緩沖區(qū)的鏈式結構struct pfc_struct *next;typedef struct pfc_struct pfc_type; /主存區(qū)頁面控制結構名稱pfc_type pfctotal_vp, /主存區(qū)頁面控制結構數(shù)組*freepf_head, /空閑頁面頭指針*busypf_head, /忙頁面頭指針*busypf_tail; /忙頁面尾指針int diseffect; /缺頁計數(shù)器int atotal_instruction; /指令流數(shù)組int pagetotal_instruction; /指令對應的頁面號int offsettotal_instruction; /指令所在頁面的偏移量/初始化頁面結構數(shù)組和頁面控制結構數(shù)組int initialize(int);int FIFO(int); /先進先出int LRU(int); /最近最久未使用int OPT(int); /最佳置換算法int CLOCK(int); /clock 置換算法int main( )int s;int i;srand(10*getpid(); s = (int)(float)(total_instruction-1)*(rand()/(RAND_MAX+1.0);printf(n-隨機產(chǎn)生指令流 -n);for (i=0; iplj.time&plj.pfn!=INVALID)MinT=plj.time;MinPn=j;/釋放最久未訪問的頁面freepf_head= /最久未訪問頁面被換出主存plMinPn.pfn=INVALID;/最久未訪問頁面的訪問時間設置為無效 plMinPn.time=-1;freepf_head-next=NULL;plpagei.pfn=freepf_head-pfn; plpagei.time=CurrentTime;freepf_head=freepf_head-next; elseplpagei.time=CurrentTime; CurrentTime+; printf(%6.3ft,1-(float)diseffect/320);return 0;/最佳置換算法int OPT(int total_pf)int i,j;int MaxD; /將來最近一次訪問距離的最大值int MaxPn; /對應的頁號int dis; /距離計數(shù)器int disttotal_vp;initialize(total_pf); diseffect=0;for(i=0;inext=NULL;plMaxPn.pfn=INVALID;plpagei.pfn=freepf_head-pfn; freepf_head=freepf_head-next;/if/forprintf(%6.3ft,1-(float)diseffect/320);return 0;int CLOCK(int total_pf)int i;int usetotal_vp; /使用位int swap;swap=0; initialize(total_pf);pfc_type *pnext; /時鐘指針pfc_type *head; /隊列頭指針pnext=freepf_head;head=freepf_head;for(i=0;ipfn=1) usepnext-pfn=0;pnext=pnext-next;if(pnext=NULL) pnext=head; /形成循環(huán)隊列/換出被替換的頁plpnext-pn.pfn=INVALID;swap=1;if(usepnext-pfn=0) /換入相應的頁 plpagei.pfn=pnext-pfn; pnext-pn=pagei; usepnext-pfn=1;pnext=pnext-next;if(pnext=NULL) pnext=head;if(swap=0) freepf_head=freepf_head-next; else/頁面在主存中useplpagei.pfn=1; /使用位置 1 printf(%6.3ft,1-(float)diseffect/320);return 0;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;ipfn=1)usepnext-pfn=0;pnext=pnext-next;if(pnext=NULL) pnext=head;plpnext-pn.pfn=INVALID;swap=1;if(usepnext-pfn=0) plpagei.pfn=pnext-pfn; pnext-pn=pagei; 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;FIFO 算法流程圖:開始頁面存入數(shù)組 p初始化內(nèi)存塊 page結束Pi是否已在內(nèi)存中i+Page是否有空將最先裝入 page中的頁面置換出去直接將 pi裝入內(nèi)存i+i32輸出當前頁面的 命中率是否是否是否LRU 算法流程圖:開始頁面存入數(shù)組 p初始化內(nèi)存塊 page結束Pi是否已在內(nèi)存中i+Page是否有空將最近最久未使用的頁面從 page中的頁面置換出去直接將 pi裝入內(nèi)存i+i32輸出當前頁面的 命中率是否是否是否OPT 算法流程圖:開始頁面存入數(shù)組 p初始化內(nèi)存塊 page結束Pi是否已在內(nèi)存中i+Page是否有空將距離最遠的頁面從page中的頁面置換出去直接將 pi裝入內(nèi)存i+i32輸出當前頁面的 命中率是否是否是否Clock 算法流程圖:開始查詢指針前進一步頁面訪問位=0 置頁面訪問位=0選擇該頁面淘汰結束是否五、實驗數(shù)據(jù)及處理結果隨機產(chǎn)生指令流,并給出不同置換策略的命中率表。發(fā)現(xiàn) OPT 命中率較高。六、實驗體會或對改進實驗的建議存儲管理子系統(tǒng)是操作系統(tǒng)中最重要的組成部分之一,它的目的是方便用戶使用和提高存儲器利用率。通過這次實驗更加清楚了四種頁面置換算法的實現(xiàn)過程,通過比較了解到了他們的異同之處。七、參考資料計算機操作系統(tǒng)西安電子科技大學出版社- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設計者僅對作品中獨創(chuàng)性部分享有著作權。
- 關 鍵 詞:
- 南昌大學 操作系統(tǒng) 實驗 報告 存儲 管理 模擬 實現(xiàn)
裝配圖網(wǎng)所有資源均是用戶自行上傳分享,僅供網(wǎng)友學習交流,未經(jīng)上傳用戶書面授權,請勿作他用。
鏈接地址:http://appdesigncorp.com/p-359713.html