-
大小: 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
- 下一篇:智能老鼠走迷宫源程序
评论
共有 条评论