存储管理实验报告_18386.doc

  1. 1、本文档共20页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
存储管理实验报告 题目:1。存储管理 描述请求分页存储管理。 产生一个作业及作业页面序列P(pi),例如:P(0,2,3,4,1,5,2,3,0,4,1,5)。 分配物理内存块数M。 采用FIFO,LRU置换算法。 设计原理:本程序提供两种分区管理法供用户使用,这两种算法是最佳适应算法和首次适应算法。 最佳适应算法要求将所有的空闲区,按其大小以递增的顺序形成一空闲区链。这样,第一次找到的满足要求的空闲区,必然是最优的。但该算法会留下许多这样难以利用的小空闲区。 首次适应算法要求空闲分区链以地址递增的次序链接。在进行内存分配时,从链首开始顺序查找,直至找到一个能满足其大小要求的空闲分区为止。然后,再按照作业的大小,从该分区中划出一快内存空间分配该请求者,余下的空闲分区仍留在空闲链中。 三.不足之处: 该程序可以用文件形式输入作业的信息,但是该文件没有绑定在程序中。不过,用户用键盘输入的作业的信息会自动保存到该文件中,下次当以文件形式输入作业信息时,文件中的内容是上一次用户用键盘输入的内容。 四.源程序以及解释: #includestdio.h #includetime.h #includestdlib.h int memoryStartAddress = -1; int memorySize = -1; struct jobList //作业后备队列的链结点 { int id; //作业的ID号 int size; //作业的大小 int status; //作业状态 struct jobList *next; }; struct freeList //空闲链的链结点 { int startAddress; //空闲分区的首地址 int size; //空闲分区的大小 struct freeList *next; }; struct usedList //已分配内存的作业链 { int startAddress; //以分配内存的首地址 int jobID; struct usedList *next; }; void errorMessage(void) //出错信息 { printf(\n\t错误!\a); printf(\n按任意键继续!); getch(); exit(1); } void openFile(FILE **fp,char *filename,char *mode) //打开文件函数 { if((*fp = fopen(filename,mode)) == NULL) { printf(\n不能打开 %s.,filename); errorMessage(); } } void makeFreeNode(struct freeList **empty,int startAddress,int size)//申请内存空间 { if((*empty = malloc(sizeof(struct freeList))) == NULL) { printf(\n没有足够空间.); errorMessage(); } (*empty)-startAddress = startAddress; //当有足够空间时,则分配 (*empty)-size = size; (*empty)-next = NULL; } void iniMemory(void) //输入要求分配内存的首地址,大小 { char MSA[10],MS[10]; printf(\n请输入要分配内存的首地址 !); scanf(%s,MSA); memoryStartAddr

文档评论(0)

131****8213 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档