![可變分區(qū)存儲(chǔ)管理方式的內(nèi)存分配回收(共12頁(yè))_第1頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/25/22d675d1-9394-4fa3-acf2-3ca40db757b1/22d675d1-9394-4fa3-acf2-3ca40db757b11.gif)
![可變分區(qū)存儲(chǔ)管理方式的內(nèi)存分配回收(共12頁(yè))_第2頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/25/22d675d1-9394-4fa3-acf2-3ca40db757b1/22d675d1-9394-4fa3-acf2-3ca40db757b12.gif)
![可變分區(qū)存儲(chǔ)管理方式的內(nèi)存分配回收(共12頁(yè))_第3頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/25/22d675d1-9394-4fa3-acf2-3ca40db757b1/22d675d1-9394-4fa3-acf2-3ca40db757b13.gif)
![可變分區(qū)存儲(chǔ)管理方式的內(nèi)存分配回收(共12頁(yè))_第4頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/25/22d675d1-9394-4fa3-acf2-3ca40db757b1/22d675d1-9394-4fa3-acf2-3ca40db757b14.gif)
![可變分區(qū)存儲(chǔ)管理方式的內(nèi)存分配回收(共12頁(yè))_第5頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/25/22d675d1-9394-4fa3-acf2-3ca40db757b1/22d675d1-9394-4fa3-acf2-3ca40db757b15.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上實(shí)驗(yàn)報(bào)告操作系統(tǒng)可變分區(qū)存儲(chǔ)管理方式的內(nèi)存分配回收班級(jí):XXXXXXXXXXXX 學(xué)號(hào):XXXXXXXXXXXX 姓名:XXXXXX 日期:XXXX.XX.XX版本歷史 Revisions History版 本 號(hào)Version Number修改項(xiàng)目To modify the project修訂者Redactor日期Date目錄1 引言1.1 實(shí)驗(yàn)?zāi)康耐ㄟ^(guò)首次適應(yīng)算法、最佳適應(yīng)算法和最壞適應(yīng)算法實(shí)現(xiàn)主存空間的分配, 可以使開(kāi)發(fā)人員更好地理解存儲(chǔ)分配算法。1.2 參考文檔1. 操作系統(tǒng)2.3.1節(jié) 空閑存儲(chǔ)區(qū)表2. 操作系統(tǒng)2.3.2節(jié) 首次適應(yīng)法(1.分配算法,2.回
2、收算法)2 可變分區(qū)存儲(chǔ)管理 2.1 實(shí)驗(yàn)原理分析在可變分區(qū)模式下,在系統(tǒng)初啟且用戶作業(yè)尚未裝入主存儲(chǔ)器之前,整個(gè)用戶區(qū)是一個(gè)大空閑分區(qū),隨著作業(yè)的裝入和撤離,主存空間被分成許多分區(qū),有的分區(qū)被占用,而有的分區(qū)時(shí)空閑的。為了方便主存空間的分配和去配,用于管理的數(shù)據(jù)結(jié)構(gòu)可由兩張表組成:“已分配區(qū)表”和“未分配區(qū)表”。在“未分配表中”將空閑區(qū)按長(zhǎng)度遞增順序排列,當(dāng)裝入新作業(yè)時(shí),從未分配區(qū)表中挑選一個(gè)能滿足用戶進(jìn)程要求的最小分區(qū)進(jìn)行分配。這時(shí)從已分配表中找出一個(gè)空欄目登記新作業(yè)的起始地址和占用長(zhǎng)度,同時(shí)修改未分配區(qū)表中空閑區(qū)的長(zhǎng)度和起始地址。當(dāng)作業(yè)撤離時(shí)已分配區(qū)表中的相應(yīng)狀態(tài)變?yōu)椤翱铡?,而將收回的?/p>
3、區(qū)登記到未分配區(qū)表中,若有相鄰空閑區(qū)再將其連接后登記。2.2 設(shè)計(jì)思路1、 分配算法:采用首次適應(yīng)法為作來(lái)分配大小為size的內(nèi)存空間時(shí),總是從表的起始端的低地址部分開(kāi)始查找,當(dāng)?shù)谝淮握业酱笥诨虻扔谏暾?qǐng)大小的空閑區(qū)時(shí),就按所需大小分配給作業(yè)。如果分配后原空閑區(qū)還有剩余空間,就修改原存儲(chǔ)區(qū)表項(xiàng)的m_size和m_addr,使它記錄余下的“零頭”。如果作業(yè)所需空間正好等于該空閑區(qū)大小,那么該空閑區(qū)表項(xiàng)的m_size就成為0,接下來(lái)要?jiǎng)h除表中這個(gè)“空洞”,即將隨后的各非零表項(xiàng)依次上移一個(gè)位置。2、 回收算法:當(dāng)某一作業(yè)回收以前所分配到的內(nèi)存時(shí),就要將該內(nèi)存區(qū)歸還給系統(tǒng),使其成為空閑區(qū)而可被其它作來(lái)使
4、用?;厥諘r(shí)如釋放區(qū)與鄰近的空閑區(qū)相銜接,要將它們合并成較大的空閑區(qū),否則空閑區(qū)將被分割得超來(lái)越小,最終導(dǎo)致不能利用;另外,空閑區(qū)個(gè)數(shù)越來(lái)越多,也會(huì)使空閑區(qū)登記表溢出。2.3 源程序/*| 如不會(huì)使用文件輸入/輸出,也不會(huì)使用I/O轉(zhuǎn)向做輸入和輸出結(jié)果文件,| 可以手再抄輸出結(jié)果后后再輸?shù)轿募?,?shí)驗(yàn)報(bào)告的文字內(nèi)容由自己掌握,能多能少。*/#include <stdio.h>#include <malloc.h>/*表的定義*/#define N 5#define MEMSIZE 1000typedef struct map unsigned m_size; char *
5、m_addr;struct map coremapN;/* coremap表的初始化程序*/void initcoremap(char *addr, unsigned size) unsigned i; printf("init coremap, first addr: %dn", addr); coremap0.m_size = size; coremap0.m_addr = addr; for(i = 1; i < N; i+) coremapi.m_size = 0; coremapi.m_addr = 0; /* 輸出表的內(nèi)容*/void printcorem
6、ap(void) unsigned i; /* 打印coremap表中各項(xiàng)的m_size和m_addr */ for(i = 0; i < N; i+) printf("coremap%d.m_addr=%d ", i, coremapi.m_addr); printf("coremap%d.m_size=%dn", i, coremapi.m_size); /* 首次適應(yīng)的分配函數(shù)*/char *fmalloc(unsigned size) register char *a; register struct map *bp; for (bp =
7、coremap; bp->m_size; bp+) if(bp->m_size >= size) a = bp->m_addr; bp->m_addr += size;/* 修改表項(xiàng)的首地址*/ if(bp->m_size -= size) = 0)/* 有正好大小的空閑區(qū)*/ do bp+; (bp - 1)->m_addr = bp->m_addr;/* 修改表項(xiàng)的首地址*/ while(bp - 1)->m_size = bp->m_size);/* 打印分配內(nèi)存空間的m_size和m_addr*/ printf("f
8、malloc size: %d, addr:%dn", size, a); return(a); return(0);/* 首次適應(yīng)的回收函數(shù)*/void ffree(unsigned size, char *addr) struct map *bp; char *a, *t; unsigned tt; printf("ffree mem size=%u, addr=%un", size, addr); a = addr; for (bp = coremap; bp->m_addr <= a && bp->m_size != 0;
9、 bp+); if (bp > coremap && (bp - 1)->m_addr + (bp - 1)->m_size = a) /* 情況 1、2 */ (bp - 1)->m_size += size;/* 情況 1 */ if (a + size = bp->m_addr) /* 情況 2 */ (bp - 1)->m_size += bp->m_size; while (bp->m_size) bp+; (bp - 1)->m_addr = bp->m_addr; (bp - 1)->m_size
10、= bp->m_size; else if (a + size = bp->m_addr && bp->m_size) /* 情況 3 */ bp->m_addr -= size; bp->m_size += size; else if (0 != size) /* 情況 4 */ do t = bp->m_addr; bp->m_addr = a; a = t; tt = bp->m_size; bp->m_size = size; bp+; while (size = tt); /* 主程序的框架*/int main(v
11、oid) char *mymem; int size; int addr; char cmdchar; char c="" if (mymem = malloc(MEMSIZE) = NULL) printf("Not enough memory to allocate buffern"); exit(1); initcoremap(mymem, MEMSIZE); while(c != 'q') do c = getchar(); while(c = 'n' | c = 't' | c = ' &
12、#39;); cmdchar = c; switch (cmdchar) case 'm':/* 分配空間*/ scanf("%u", &size); fmalloc(size); break; case 'f':/* 釋放空間*/ scanf("%u %u", &size, &addr); ffree(size, mymem + addr); break; case 'p': printcoremap(); break; default:/* 其它字母退出*/ break; free(mymem); return 0;2.4 重要結(jié)構(gòu)體說(shuō)明空閑存儲(chǔ)區(qū)表可采用結(jié)構(gòu)數(shù)組的形式,采用的數(shù)據(jù)結(jié)構(gòu)形式為:typedef struct map unsigned m_size; char *m_addr;m_size:是空閑分區(qū)的長(zhǎng)度m_addr:是空閑分區(qū)的起始地址2.5 重要變量說(shuō)明coremapN:是空閑存儲(chǔ)區(qū)表2.6 結(jié)果2.7 測(cè)試方法對(duì)結(jié)果的分析1、連續(xù)分配3個(gè)100長(zhǎng)度的分區(qū),剩下700長(zhǎng)度的分區(qū)2、從頭釋放掉一個(gè)100長(zhǎng)度的分區(qū),里面有兩個(gè)可用的分區(qū),一個(gè)是100長(zhǎng)度的分區(qū),一個(gè)是700長(zhǎng)度的分區(qū)3、程序運(yùn)行的結(jié)果,與設(shè)計(jì)思路一致。2.8 接口2.8.1 接口設(shè)
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030全球核電用鋼管行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025年全球及中國(guó)鋼制垂直推拉門行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025-2030全球微孔織物行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025-2030全球半導(dǎo)體電鍍前處理劑行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025-2030全球熱水箱行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025年全球及中國(guó)手機(jī)支付安全行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025年全球及中國(guó)超高壓HPP滅菌設(shè)備行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 液氨運(yùn)輸合同模板
- 2025員工入股合同(美容美發(fā))
- 外墻保溫勞務(wù)分包合同
- Unit6AtthesnackbarStorytimeDiningwithdragons(課件)譯林版英語(yǔ)四年級(jí)上冊(cè)
- 2023年四川省公務(wù)員錄用考試《行測(cè)》真題卷及答案解析
- 機(jī)電一體化系統(tǒng)設(shè)計(jì)-第5章-特性分析
- 2025年高考物理復(fù)習(xí)壓軸題:電磁感應(yīng)綜合問(wèn)題(原卷版)
- 雨棚鋼結(jié)構(gòu)施工組織設(shè)計(jì)正式版
- 醫(yī)院重點(diǎn)監(jiān)控藥品管理制度
- 2024尼爾森IQ中國(guó)本土快消企業(yè)調(diào)研報(bào)告
- 2024年印度辣椒行業(yè)狀況及未來(lái)發(fā)展趨勢(shì)報(bào)告
- 骨科醫(yī)院感染控制操作流程
- 鑄鋁焊接工藝
- 《社區(qū)康復(fù)》課件-第六章 骨關(guān)節(jié)疾病、損傷患者的社區(qū)康復(fù)實(shí)踐
評(píng)論
0/150
提交評(píng)論