实验-存储器管理(二).doc

实验-存储器管理(二).doc

ID:60722096

大小:35.50 KB

页数:10页

时间:2020-12-11

实验-存储器管理(二).doc_第1页
实验-存储器管理(二).doc_第2页
实验-存储器管理(二).doc_第3页
实验-存储器管理(二).doc_第4页
实验-存储器管理(二).doc_第5页
资源描述:

《实验-存储器管理(二).doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、存储器管理(二)一、目的本课题实验的目的是,使学生实验存储器管理系统的设计方法;加深对所学各种存储器管理方案的了解;要求采用一些常用的存储器分配算法,设计一个存储器管理模拟系统并调试运行。二、题目存储器管理三、要求及提示1、要求采用一种常用的存储器分配算法,设计一个存储器管理模拟系统。允许进行多次的分配和释放,并可向用户反馈分配和释放情况及当前内存的情况;采用“命令菜单”选择和键盘命令输入的会话方式,根据输入请求调用分配模块,或回收模块,或内存查询模块,或最终退出系统。2、编程实现。3、工具:C语言或其它高

2、级语言4、实验时间:3学时四、实验报告1、写出存储器管理的思想。2、画出算法流程图和设置的数据结构。3、写出调试程序出现的问题及解决的方法。4、打印实验报告及程序清单。5、报告给出测试的结果。五、范例采用可变分区存储器管理方案的模拟系统。1、问题描述该模拟系统的外部特性与真实系统基本一样。存储分配算法采用首次适应法。用“拼,接”和“紧凑”技术来处理存储器碎片。2、算法存储分配算法采用首次适应(FF)法。根据指针freep查找自由链,当找到第一块可满足分配请求的空闲区时便分配之。当某空闲区被分配后的剩余空闲区

3、空间大于规定的碎片最小容量min时,则形成一个较小的空闲区留在自由链中。回收时,根据MAT将指定分区链入自由链。若该分区有前邻或后邻空闲分区,则将他们拼接成一块加大的空闲区。当某个分配请求不能被满足,但此时系统中所有碎片总量满足分配请求的容量时,系统立即进入内存“紧凑”以消除碎片。即将各作业占用区集中下移到用户内存区的下部(高地址部分),形成一片连接的作业区,而在用户内存区的上部形成一块较大的空闲区。然后再进行分配。本系统的主要程序模块包括:分配模块ffallocation,回收模块ffcolection,

4、紧凑模块coalesce及命令处理模块menu。Menu用以模拟系统的输入,采用“命令菜单”选择和键盘命令输入的会话方式,根据输入请求调用分配模块,或回收模块,或内存查询模块,或最终退出系统。系统的主流程如图3所示。3、数据结构(1)自由链与区头。内存空闲区采用自由链结构。链首由freep指向,链中各个空闲区按地址递增次序排列。初启时整个用户内存区为一个空闲区。在每个空闲区首部设置一个区头(freearca)结构。区头信息包括:size空闲区大小(以字节计),包括区头所占空间;next前向链指针,指向下一个

5、空闲区;back反向链指针,指向上一个空闲区;address本空闲区首地址。(1)内存分配表MAT。系统设置一个MAT,每个运行作业都在MAT中占有一个表目,回收分区时清除相应表目。表目信息包括:name用户作业名;length作业区大小;addr作业区首地址;4、程序清单#include#include#defineTOTAL5000#defineSETADDRESS2000#defineMIN100#defineMAX10typedefstructfreearea{

6、intaddress;intsize;structfreearea*next;structfreearea*back;}*freeptr;typedefstructmat{charname;intaddress;intlength;structmat*next;structmat*back;}*jobptr;charstring[10];longtotalfree;charjobnumber;freeptrfreep;jobptrjobp;/********初始化**********/init(){free

7、p=(freeptr)malloc(sizeof(structfreearea));freep->size=TOTAL;freep->address=SETADDRESS;freep->next=NULL;freep->back=NULL;totalfree=TOTAL;jobp=NULL;jobnumber=0;return(0);}/******分配模块*******/fengpei(intjl,charjn){freeptrfp;jobptrjp,jp1,jp2;jp2=(jobptr)malloc(

8、sizeof(structmat));if(totalfreesizenext;else{jobnumber=jobnumber+1;totalfree=totalfree-jl;jp2->name=jn;jp2->length=jl;jp2->address=freep->address;if(jo

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。