动态不等长存储资源分配算法_第1页
动态不等长存储资源分配算法_第2页
动态不等长存储资源分配算法_第3页
动态不等长存储资源分配算法_第4页
动态不等长存储资源分配算法_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、动态不等长存储资源分配算法集美大学诚毅学院信息工程系实验报告课程名称计算机操作系统序号名称实验六动态不等长存储资源分配算法姓名学号专业计算机0991日期2011.11.26成绩教师评语:1 .实验目的:1 .理解动态异长存储分区资源管理;2 .掌握所需结构和管理程序;3 .了解各种存储分配算法的优点和缺点;2 .实验环境linux3 .实验内容?按要求编写最佳适应算法(BF)、最坏适应算法(WF)和循环首次适应算法(NF);?编写测试数据:- 要求至少分配5次;- 释放区域、再次请求,能够检测是否满足要求:能够检查所采用的算法;- 释放时是否进行相邻区域合并;4.实验程序#ifdefHAVE_

2、CONFIG_H#include<config.h>#endif#include<stdio.h>#include<stdlib.h>#defineMAPSIZE100/最大100个空闲分区/空闲区域表structmapintm_addr;intm_size;一/定义100个单元的空闲分区表structmapmapMAPSIZE;intBF_malloc(structmap*mp,intsize)registerinta,s;registerstructmap*bp,*bpp;for(bp=mp;bp->m_size;bp+)if(bp->m_s

3、ize>=size)a=bp->m_addr;s=bp->m_size;for(bpp=bp;bpp->m_size;bpp+)if(bpp->m_size>=size&&bpp->m_size<s)a=bpp->m_addr;s=bpp->m_size;bp=bpp;bp->m_addr+=size;if(bp->m_size-=size)=0)dobp+;(bp-1)->m_addr=bp->m_addr;while(bp-1)->m_size=bp->m_size);retur

4、n(a);return(-1);/连续分区分配方式的内存回收算法mfree(structmap*mp,intsize,intaa)registerstructmap*bp;registerintt,a;a=aa;/要释放的起始地址for(bp=mp;bp->m_addr<=a&&bp->m_size!=0;bp+);if(bp>mp&&(bp-1)->m_addr+(bp-1)->m_size=a)(bp-1)->m_size+=size;if(a+size=bp->m_addr)(bp-1)->m_size

5、+=bp->m_size;while(bp->m_size)bp+;(bp-1)->m_addr=bp->m_addr;(bp-1)->m_size=bp->m_size;elseif(a+size=bp->m_addr&&bp->m_size)/与后合并bp->m_addr-=size;bp->m_size+=size;elseif(size)do/无合并t=bp->m_addr;bp->m_addr=a;a=t;t=bp->m_size;bp->m_size=size;bp+;while(s

6、ize=t);)voidinit()structmap*bp;intaddr,size;inti=0;bp=map;printf("Pleaseinputstartingaddressandtotalsize:");scanf("%d,%d”,&addr,&size);bp->m_addr=addr;bp->m_size=size;(+bp)->m_size=0;voidshow_map()inti=0;structmap*bp;bp=map;printf("nCurrentmemorymapn");print

7、f("AddressttSize'n");while(bp->m_size!=0)printf("<%dtt%d>n",bp->m_addr,bp->m_size);bp+;printf("n");main()inta,s;inti;init();do(show_map();printf("Pleaseinput:1forrequest,2forrelease,0forexit:n");scanf("%d",&i);switch(i)(case 1:

8、printf("Requestsize:");scanf("%d",&s);a=BF_ma110c(map,s);printf("Allocmemoryataddress:%d,size:%dn",a,s);break;case 2:printf("Pleaseinputaddressandsize:");scanf("%d,%d",&a,&s);mfree(map,s,a);break;case0:exit(0);while(1);5 .实验结果及其分析Pleasein

9、putstartingaddressandtotalsize:0f109CurrentmemorymapAddressSize<0109>Pleaseinput:1forrequest,2Torrelease,9forexit:1Requestsize:20Allocmemoryat3ddess:0,size;2GCurrentmemorymap.».AddressSize<2080>Oforexit:Oforexit:Pleaseinput:1forrequest,2forrelease1Requestsize:35Allocmemoryataddress:

10、20fsize:35CurrentmemorymapAddressSize<5545>Pleaseinput:1forrequest,2forrelease1Requestsize:15Allocmemoryataddress:55,size:15CurrentmemoryMapAddressSize<7030>Pleaseinput:1forrequestP2TorreleasereTorexit:2Pleaseinputaddressandsize:20r35Currentmemorym叩.Size35a3G>Address<20<70Pleaseinput:1farrequestr2forrelease,etorexit:1Requestsize:15Allocmemoryataddress:70Psize:15Currentmemorymap.”AddressSize<2035><8515>Pleaseinput:1forrequest,2forrelease,0Torexit:2Pleaseinputaddressandsize:0,2。Currentmemorymap.AddressSize<055><8515APleaseinput:1forreq

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论