下载此文档

张蒙用首次适应算法模拟内存的分配和回收.doc


文档分类:通信/电子 | 页数:约15页 举报非法文档有奖
1/15
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/15 下载此文档
文档列表 文档介绍
采用首次适应算法实现主存的分配和回收一、目的在计算机系统中,为了提高内存区的利用率,必须给电脑内存区进行合理的分配。本实验通过对内存区分配方法首次适应算法的使用,来了解内存分配的模式。在熟练掌握计算机分区存储管理方式的原理的基础上,编程模拟实现操作系统的可变分区存储管理的功能,一方面加深对原理的理解,另一方面提高根据已有原理通过编程解决实际问题的能力,为进行系统软件开发和针对实际问题提出高效的软件解决方案打下基础。二、实验内容与数据结构:可变式分区管理是指在处理作业过程中建立分区,使分区大小正好适合作业的需要,并且分区的个数是可以调整的。当需要装入一个作业时,根据作业需要的贮存量,查看是否有足够的空闲空间,若有,则按需求量分割一部分给作业;若无,则作业等待。随着作业的装入、完成,主存空间被分割成许多大大小小的分区。有的分区被分配作业占用,有的分区空闲,例如,某时刻主存空间占用情况如图所示:为了说明哪些分区是空闲的,可以用来装入新作业,必须要有一张空闲区说明表,如下图所示。当有一个新作业要求装入贮存时,必须查空闲区说明表,从中找出一个足够大的空闲区。有时找到的空闲区可能大于作业的需求量,这时应将空闲区一分为二。一个分给作业,另一个仍作为空闲区留在空闲区表中。为了尽量减少由于分割造成的碎片,尽可能分配地地址部分的空闲区,将较大的空闲区留在高地址端,以利于大作业的装入。为此在空闲区表中,按空闲区首地址从低到高进行登记。当一个作业执行完成时,作业所占用的分区应归还给系统。在归还时,要考虑相邻空间区合并问题。作业的释放区与空闲区的邻接分以下4种情况考虑:释放区下邻空闲区;释放区上邻空闲区;释放区上下都与空闲区邻接;释放区上邻空闲区不邻接;实验要求内存大小初始化可以对内存区进行动态分配,采用首次适应算法来实现可以对已分配的内存块进行回收,并合并相邻的空闲内存块。实验内容把一个作业装入内存,按照首次适应算法对内存区进行分配,作业结束,回收已分配给该作业的内存块,并合并相邻的空闲内存块。实验结果运行效果:,并添加作业,选择1添加作业2. 当作业大小超过存储块大小时,分配失败。,可查看内存分配情况选择2回收内存选择1添加新作业回收C作业,相邻的空闲内存块合并。五、程序流程图:六、实验源代码://:可变分区用首次适应算法来模拟内存回收#include<>#include<>intMAX_SEGMENT=10;//最大碎片值structPartition //分区表目{ intPar_Size; //分区大小 intPar_No; //分区序号或者名字 intAddr; //分区地址 intIsUse; //分区使用情况,0表示空闲,1表示使用 Partition*pri; //前向指针 Partition*next; //后向指针};Partition*Int()//函数,返回Partition类型指针{ //初始化空闲分区表 Partition*list,*H,*H1; list=(structPartition*)malloc(sizeof(structPartition)); list->next=NULL; H=list; if(!list) { printf("\n错误,内存初始化分配失败!程序结束"); exit(1); } H1=(structPartition*)malloc(sizeof(structPartition)); printf("请预先输入分区总大小(以KB为单位):"); scanf("%d",&H1->Par_Size); H1->Addr=0; H1->Par_No=0; H1->IsUse=0; H1->pri=H; H1->next=NULL; H->next=H1;////list--->H1 returnlist;}Partition*InitFP(){ //初始化已分配分区表 Partition*FP,*F,*H; inti; FP=(structPartition*)malloc(sizeof(structPartition)); FP->next=NULL; H=FP; for(i=0;i<10;i++) //已分配区先暂定分配十个表目 { F=(structPartition*)malloc(sizeof(structPartition)); if(!F) { printf("\n错误,内存分配失败!程序结束"); exit(1); } F->Par_Size=0; F->Addr=0; F->Par_No=0; F->IsUse=0; F->next=NULL; H->next=F; F->pri=H; H=H

张蒙用首次适应算法模拟内存的分配和回收 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数15
  • 收藏数0 收藏
  • 顶次数0
  • 上传人tswng35
  • 文件大小476 KB
  • 时间2020-02-19