




已閱讀5頁(yè),還剩23頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
年級(jí)2013專 業(yè)軟件工程班級(jí)組號(hào)實(shí)驗(yàn)室9#205日期2015/6/17實(shí)驗(yàn)名稱實(shí)驗(yàn)三 虛擬內(nèi)存管理實(shí)驗(yàn)內(nèi)容1 局部性原理演示(數(shù)組清零)(操作系統(tǒng)觀察級(jí))2 頁(yè)面置換算法模擬演示(算法仿真實(shí)現(xiàn)級(jí))3 實(shí)際系統(tǒng)內(nèi)存分配演示(Linux,Windows平臺(tái))(操作系統(tǒng)觀察級(jí))小 組 成 員姓名學(xué)號(hào)組內(nèi)分工自我評(píng)分教師評(píng)分實(shí)驗(yàn)認(rèn)真實(shí)驗(yàn)嚴(yán)謹(jǐn)小組成績(jī)?cè)u(píng)定教師簽名: 年 月 日實(shí)驗(yàn)分項(xiàng)1局部性原理演示(數(shù)組清零)(操作系統(tǒng)觀察級(jí))實(shí)驗(yàn)?zāi)康膶W(xué)習(xí)并理解程序的局部性原理實(shí)驗(yàn)要求具體題目局部性原理演示(數(shù)組清零)系統(tǒng)平臺(tái):Windows XP系統(tǒng)實(shí)驗(yàn)原理步驟(算法流程)數(shù)組清零 操作系統(tǒng)支持:Windows、Linux 所屬類別:數(shù)組操作 利用雙重的for循環(huán)將指定的二維數(shù)組變量?jī)?nèi)的所有成員值全部設(shè)置為零,不影響數(shù)組的維定義信息。 語(yǔ)法:無(wú)返回值 數(shù)組清零(數(shù)值數(shù)組變量)源代碼如下:#include #include #include #include #define K 4096using namespace std;int aKK;void line() int i, j; for (i=0; iK; i+) for (j=0; jK; j+) aij=0; return ; void row() int i, j; for (i=0; iK; i+) for (j=0; jK; j+) aji=0; return ; int gettime() SYSTEMTIME t; GetLocalTime(&t); return t.wSecond*1000+t.wMilliseconds;int main(int argc, char *argv) int i; int t1, t2; t1 = gettime(); for (i=0; i10; i+) line(); t2 = gettime(); cout*數(shù)組清零*n; coutn按行清零耗費(fèi)時(shí)間為:t2-t1msendl; coutn-nendl; t1 = gettime(); for(i=0;i10;i+) row(); t2 = gettime(); cout 按列清零耗費(fèi)時(shí)間為:t2-t1msendl; system(PAUSE); return EXIT_SUCCESS;實(shí)驗(yàn)結(jié)果及分析實(shí)驗(yàn)結(jié)果截圖:linux下:#include #include #include #include #include #define K 4096using namespace std;int aKK;void line()int i, j;for (i=0; iK; i+)for (j=0; jK; j+)aij=0;return ;void row()int i, j;for (i=0; iK; i+)for (j=0; jK; j+)aji=0;return ; int gettime()struct timeval tv;struct timezone tz;gettimeofday(&tv,&tz);return tv.tv_sec*1000 + tv.tv_usec/1000;int main(int argc, char *argv)int i;int t1, t2;t1 = gettime(); for (i=0; i10; i+) line(); t2 = gettime();cout*數(shù)組清零*n;coutn按行清零耗費(fèi)時(shí)間為:t2-t1msendl;coutn-nendl;t1 = gettime();for(i=0;i10;i+)row();t2 = gettime();cout 按列清零耗費(fèi)時(shí)間為:t2-t1msendl;return 0;心得體會(huì)通過(guò)這個(gè)實(shí)驗(yàn),對(duì)Windows內(nèi)存管理機(jī)制了解清楚,有./效的利用C+內(nèi)存函數(shù)管理和使用內(nèi)存。假設(shè)數(shù)據(jù)存在物理內(nèi)存中,系統(tǒng)沒(méi)有RAM頁(yè)面后,會(huì)將這個(gè)頁(yè)面暫時(shí)寫(xiě)進(jìn)虛擬內(nèi)存頁(yè)文件中,這樣來(lái)回的倒騰系統(tǒng)會(huì)很慢;如果那一頁(yè)數(shù)據(jù)已經(jīng)不需要的話,系統(tǒng)可以直接使用。當(dāng)程序需要它那一頁(yè)時(shí),系統(tǒng)會(huì)分配另一頁(yè)給它。實(shí)驗(yàn)分項(xiàng)2頁(yè)面置換算法模擬演示(算法仿真實(shí)現(xiàn)級(jí))實(shí)驗(yàn)?zāi)康耐ㄟ^(guò)模擬實(shí)現(xiàn)請(qǐng)求頁(yè)式存儲(chǔ)管理的幾種基本頁(yè)面置換算法,了解虛擬存儲(chǔ)技術(shù)的特點(diǎn),掌握虛擬存儲(chǔ)請(qǐng)求頁(yè)式存儲(chǔ)管理中幾種基本頁(yè)面置換算法的基本思想和實(shí)現(xiàn)過(guò)程。實(shí)驗(yàn)要求具體題目頁(yè)面置換算法模擬演示系統(tǒng)平臺(tái)windows操作系統(tǒng)實(shí)驗(yàn)原理步驟(算法流程)設(shè)計(jì)一個(gè)虛擬存儲(chǔ)區(qū)和內(nèi)存工作區(qū),并使用下述算法計(jì)算訪問(wèn)命中率。1、先進(jìn)先出的算法(FIFO)2、最近最久未使用算法(LRU)輸入頁(yè)面訪問(wèn)序列 取訪問(wèn)頁(yè)號(hào)查頁(yè)表是否缺頁(yè) 是 否置缺頁(yè)標(biāo)記flag為“*”按照各自算法淘汰頁(yè)面調(diào)入所訪問(wèn)頁(yè)面1、先進(jìn)先出法(FIFO)入口 查詢指針前進(jìn)一步,指向下一個(gè)頁(yè)面 置頁(yè)面訪問(wèn)時(shí)間+1頁(yè)面訪問(wèn)時(shí)間是否最大 否 是選擇該頁(yè)面淘汰 返回2.最近最久沒(méi)使用(LRU) 進(jìn)入查詢指針前進(jìn)一步,指向下一頁(yè)面?zhèn)€頁(yè)面 先前訪問(wèn)的頁(yè)面的時(shí)間t+;前面已訪問(wèn)過(guò)此頁(yè)面字段t=max?返回選擇該頁(yè)面淘汰 否實(shí)驗(yàn)部分代碼:1、FIFO算法#include stdio.h#define n 20#define m 4void main()int ymn,i,j,q,memm=-1,-1,-1,-1,tablemn;char flag,fn;printf(請(qǐng)輸入頁(yè)面訪問(wèn)序列n);for(i=0;in;i+) scanf(%d,&ymi);printf(n);for(i=0;i0;j-) /淘汰最先調(diào)入的頁(yè)面調(diào)入當(dāng)前訪問(wèn)的 memj=memj-1; mem0=ymi; for(j=0;jm;j+) tableji=memj; fi=flag; printf(輸出結(jié)果為下表(-1代表為空,*代表有缺頁(yè)):n);for(i=0;in;i+) printf(“%3d”,ymi);printf(“n”);for(i=0;i=n;i+) printf(“%s”, “-”);printf(“n”);for(i=0;im;i+) for(j=0;jn;j+)printf(%3d,tableij);printf(n); for(i=0;in;i+) printf(%3c,fi);printf(”n”);2、LRU算法#include stdio.h#define n 20#define m 5void main()int ymn,i,j,q,memm=-1,-1,-1,-1,-1,tablemn;char flag,fn;printf(請(qǐng)輸入頁(yè)面訪問(wèn)序列n);for(i=0;in;i+) scanf(%d,&ymi);printf(n);for(i=0;in;i+) /查頁(yè)表,看是否缺頁(yè) q=0; while(ymi!=memq)&(q!=m) q+; if(q=m) flag=*; /缺頁(yè),則置標(biāo)志flag為* else flag= ; if(q0;j-) memj=memj-1;else for(j=q-1;j0;j-) memj=memj-1;mem0=ymi;for(j=0;jm;j+) tableji=memj;fi=flag; printf(輸出結(jié)果為下表(-1代表為空,*代表有缺頁(yè)):n);for(i=0;in;i+) printf(“%3d”,ymi);printf(“n”);for(i=0;i=n;i+) printf(“%s”, “-”);printf(“n”);for(i=0;im;i+) for(j=0;jn;j+)printf(%3d,tableij);printf(n); for(i=0;in;i+) printf(%3c,fi);printf(“n”);實(shí)驗(yàn)結(jié)果及分析1:2:心得體會(huì)通過(guò)本次實(shí)驗(yàn), 我明白如果一個(gè)經(jīng)常使用的頁(yè)面被置換出去,很有可能很快又要被調(diào)入內(nèi)存,帶來(lái)不必要的額外開(kāi)銷。頁(yè)面置換算法的優(yōu)劣將會(huì)影響到虛擬存儲(chǔ)系統(tǒng)的性能,進(jìn)而影響到整個(gè)操作系統(tǒng)的性能。實(shí)驗(yàn)分項(xiàng)3實(shí)際系統(tǒng)內(nèi)存分配演示(Linux,Windows平臺(tái))(操作系統(tǒng)觀察級(jí))實(shí)驗(yàn)?zāi)康膶W(xué)習(xí)并理解實(shí)際系統(tǒng)內(nèi)存分配原理實(shí)驗(yàn)要求具體題目實(shí)際系統(tǒng)內(nèi)存分配演示(Linux,Windows平臺(tái))(操作系統(tǒng)觀察級(jí))系統(tǒng)平臺(tái)Windows XP系統(tǒng)實(shí)驗(yàn)原理步驟(算法流程)內(nèi)存管理是計(jì)算機(jī)系統(tǒng)以一種優(yōu)化性能的方式,在需要內(nèi)存的不同進(jìn)程之間將有限的內(nèi)存進(jìn)行分配的過(guò)程,執(zhí)行這種任務(wù)的通用技術(shù)叫做虛擬內(nèi)存技術(shù)。模擬操作系統(tǒng)在內(nèi)存的分配以及回收所用內(nèi)存的運(yùn)行過(guò)程,采用首次適應(yīng)法來(lái)進(jìn)行,本程序運(yùn)行實(shí)際上不用輸入測(cè)試數(shù)據(jù),它能利用隨機(jī)函數(shù)生成測(cè)試數(shù)據(jù),對(duì)于用戶來(lái)講,可以直接觀察運(yùn)行結(jié)果。源代碼如下:#include #include /操作系統(tǒng)首次合并算法內(nèi)存實(shí)現(xiàn) malloc free 函數(shù)int g_MemoryAllocLen = 10;typedef struct double_link struct double_link * front; struct double_link * rear; int size; int state; /內(nèi)存空間狀態(tài) 0空閑 1占用doublelink_ST,*lpdoublelink_ST;/* 函數(shù)名稱:Createdoublelis* 功能描述:創(chuàng)建內(nèi)存節(jié)點(diǎn) * 輸入?yún)?shù):lpdoublelink_ST head* 輸出參數(shù): head * 返 回 值:0 */doublelink_ST * Init_doublelinklist(lpdoublelink_ST head) head = (lpdoublelink_ST)malloc(sizeof(doublelink_ST); head-front = NULL; head-rear = NULL; head-size = 1; head-state = 1; return head; /* 函數(shù)名稱:Createdoublelis* 功能描述:創(chuàng)建長(zhǎng)度為g_MemoryAllocLen的內(nèi)存節(jié)點(diǎn)鏈表 * 輸入?yún)?shù): void* 輸出參數(shù): 無(wú) * 返 回 值:0 */void Createdoublelist(lpdoublelink_ST head, int space) lpdoublelink_ST p = head; for(int i =0;isize = *(space+i); s-state = 0; s-rear = NULL; s-front = NULL; p-rear = s; s-front = p; p = s; /* 函數(shù)名稱:selfmalloc* 功能描述:分配內(nèi)存節(jié)點(diǎn) * 輸入?yún)?shù): void* 輸出參數(shù): 無(wú) * 返 回 值:0 */int self_malloc(lpdoublelink_ST head,int alloc_spacre) int place = 0; lpdoublelink_ST p = head; for(p,place=0;p-sizerear,place+); if(p-size=alloc_spacre) /如果分配的空間相等 p-state = 1; return place; else p-size = p-size - alloc_spacre; lpdoublelink_ST newspace = (lpdoublelink_ST)malloc(sizeof(doublelink_ST); newspace-state = 1; newspace-size = alloc_spacre;newspace-front = p-front; /插入節(jié)點(diǎn) p-front-rear = newspace; newspace-rear = p; p-front = newspace; g_MemoryAllocLen += 1; return place; /* 函數(shù)名稱 self_free* 功能描述:釋放節(jié)點(diǎn) * 輸入?yún)?shù): void* 輸出參數(shù): 無(wú) * 返 回 值:0 */void self_free(lpdoublelink_ST head,int place ) lpdoublelink_ST p = head; for(int i=0;irear; if(1 = p-state ) /釋放節(jié)點(diǎn)的左邊為空閑塊 if(0=p-front-state) & (1=p-rear-state) p-front-size += p-size; p-front-rear = p-rear; p-rear-front = p-front; free(p); p = NULL; g_MemoryAllocLen -= 1; return; /釋放節(jié)點(diǎn)的右邊為空閑塊 if(1=p-front-state) & (0=p-rear-state) p-rear-size +=p-size; p-front-rear = p-rear; p-rear-front = p-front; g_MemoryAllocLen -= 1; free(p); p = NULL; return; /釋放節(jié)點(diǎn)的左右兩邊都為空閑塊 if(0=p-rear-state) & (0=p-front-state) p-rear-size += p-front-size + p-size; p-front-front-rear = p-rear; p-rear-front = p-front-front; g_MemoryAllocLen -= 2; free(p-front); p-front = NULL; free(p); p = NULL; return; /釋放節(jié)點(diǎn)的左右兩邊都為占用塊 if(1=p-rear-state)&(1=p-front-state) p-state = 1; return; else printf(沒(méi)有找到該釋放的節(jié)點(diǎn)n); /* 函數(shù)名稱 print_memory* 功能描述:打印內(nèi)存空間情況 * 輸入?yún)?shù): void* 輸出參數(shù): 無(wú) * 返 回 值:0 */void print_memory(lpdoublelink_ST p,int size) int i; for (i=0;irear; printf(序列:%3d 分配空間:%3d 是否空閑:%dn,i,p-size,p-state); printf(n);int main(void)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 職業(yè)經(jīng)理人行業(yè)趨勢(shì)分析技巧試題及答案
- 營(yíng)養(yǎng)教育在學(xué)校的重要性與實(shí)踐方法試題及答案
- 考前準(zhǔn)備2024西醫(yī)臨床考題及答案
- 空氣科學(xué)考試題及答案
- 知識(shí)產(chǎn)權(quán)重大案例分析的考試試題及答案
- 期末解刨學(xué)試題及答案
- 藥品流通渠道管理試題及答案
- 水庫(kù)移民面試題及答案
- 圖書(shū)管理員文化傳承與發(fā)展試題及答案
- 西醫(yī)臨床知識(shí)運(yùn)用試題及答案總結(jié)
- 北京市引進(jìn)人才審批表格模板
- 第14篇局部水基滅火系統(tǒng)(修改后版本)
- 配管配線工程量計(jì)算實(shí)例
- CAMDS培訓(xùn)ppt課件
- 包裝設(shè)計(jì)外文文獻(xiàn)翻譯最新譯文
- 治安管理課件新興行業(yè)場(chǎng)所
- 中國(guó)鐵路總公司《鐵路技術(shù)管理規(guī)程》(普速鐵路部分)
- HY∕T 122-2009 海洋傾倒區(qū)選劃技術(shù)導(dǎo)則
- 《聲門下吸引技術(shù)》PPT課件
- 幼兒園繪本故事PPT:《小紅帽》
- 一年級(jí)下冊(cè)數(shù)學(xué)6.6兩位數(shù)減一位數(shù)、整十?dāng)?shù)(不退位減)人教版
評(píng)論
0/150
提交評(píng)論