• 大小: 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


评论

共有 条评论