-
大小: 165KB文件類型: .rar金幣: 2下載: 1 次發布日期: 2021-05-17
- 語言: 其他
- 標簽:
資源簡介
實驗題目
設計和實現關于內存管理的內存布局初始化及內存申請分配、內存回收等基本功能操作函數,嘗試對用256MB的內存空間進行動態分區方式模擬管理。內存分配的基本單位為1KB,同時要求支持至少兩種分配策略,并進行測試和對不同分配策略的性能展開比較評估。
最佳適應算法(Best Fit):
它從全部空閑區中找出能滿足作業要求的、且大小最小的空閑分區,這種方法能使碎片盡量小。為適應此算法,空閑分區表(空閑區鏈)中的空閑分區要按從小到大進行排序,自表頭開始查找到第一個滿足要求的自由分區分配。該算法保留大的空閑區,但造成許多小的空閑區。因為它要不斷地找出能滿足作業要求的、且大小最小的空閑分區,所以比較比較頻繁。但是,對內存的利用率高
循環首次適應算法(Next Fit):
該算法是首次適應算法的變種。在分配內存空間時,不再每次從表頭(鏈首)開始查找,而是從上次找到空閑區的下一個空閑開始查找,直到找到第一個能滿足要求的的空閑區為止,并從中劃出一塊與請求大小相等的內存空間分配給作業。該算法能使內存中的空閑區分布得較均勻。比較次數少于最佳適應算法(Best Fit),內存利用率低于最佳適應算法(Best Fit)。

代碼片段和文件信息
#include?“mm.h“
int?occupied?=?0?count?=?0?compare?=?0?algo?=?CYCLE;
block?*head?=?NULL?*tail?=?NULL?*last?=?NULL;
void?prompt?()
{
int?cmd;
printf(“\n 當前分配算法:“);
if?(?algo?==?CYCLE?)
{
printf(“循環首次適應“);
}
else?if?(?algo?==?BEST?)
{
printf(“最佳適應“);
}
printf(“ 請選擇要執行的操作:\n\
??1.查看當前內存使用狀況\n\
??2.初始化內存,回收所有已分配空間\n\
??3.隨機申請一塊內存\n\
??4.隨機回收一塊內存\n\
??5.切換分配時使用的算法(循環首次適應或最佳適應)\n\
??6.自動隨機生成內存請求,用當前算法進行處理,并給出執行結果\n “);
scanf(“%d“&cmd);
switch?(?cmd?)
{
case?1: view(); break;
case?2: init();?break;
case?3: request();?break;
case?4: recycle();?break;
case?5:?convert();?break;
case?6: test();?break;
default:?break;
}
}
int?main?()
{
init();
while?(?1?)
{
prompt();
}
return?0;
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????3444??2010-06-04?11:10??process.c
?????文件???????1983??2010-06-04?11:10??tool.c
?????文件????????902??2010-06-04?11:10??mm.c
?????文件????????553??2010-06-04?11:03??mm.h
?????文件?????202399??2010-06-04?11:28??實驗三?內存管理.docx
-----------?---------??----------?-----??----
???????????????209281????????????????????5
- 上一篇:weixinqy.txt
- 下一篇:智能老鼠走迷宮源程序
評論
共有 條評論