计算机操作系统动态分区存储管理方式下的内存空间的分配与回收实验报告

上传人:ni****g 文档编号:456451609 上传时间:2024-03-05 格式:DOCX 页数:19 大小:124.56KB
返回 下载 相关 举报
计算机操作系统动态分区存储管理方式下的内存空间的分配与回收实验报告_第1页
第1页 / 共19页
计算机操作系统动态分区存储管理方式下的内存空间的分配与回收实验报告_第2页
第2页 / 共19页
计算机操作系统动态分区存储管理方式下的内存空间的分配与回收实验报告_第3页
第3页 / 共19页
计算机操作系统动态分区存储管理方式下的内存空间的分配与回收实验报告_第4页
第4页 / 共19页
计算机操作系统动态分区存储管理方式下的内存空间的分配与回收实验报告_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《计算机操作系统动态分区存储管理方式下的内存空间的分配与回收实验报告》由会员分享,可在线阅读,更多相关《计算机操作系统动态分区存储管理方式下的内存空间的分配与回收实验报告(19页珍藏版)》请在金锄头文库上搜索。

1、计算机操作系统实验报告实验二实验题系别:计算机科学与技术系班级:姓名:学号:2一、实验深入理解动态分区存储管理方式下的内存空间的分配与回收。二、实验内容编写程序完成动态分区存储管理方式下的内存分配和回收的实现。具体内容包括:确定用来管理内存当前使用情况的数据结构;采用首次适应算法完成内存空间的分配;分情况对作业进行回收;编写主函数对所做工作进行测试。三实验原理分配:动态分区存储管理方式把内存除os占用区域外的空间看作一个大的空闲区。当作业要求装入内存时,根据作业需要内存空间的大小查询内存中各个空闲区,当从内存中找到一个大于或等于该作业大小的内存空闲区时,选择其中一个空闲区,按作业要求划出一个分

2、区装入该作业。回收:作业执行完后,它所占用的内存空间被收回,成为一个空闲区。如果该空闲区的相邻分区也是空闲区,则需要将相邻空闲区合并成一个空闲区。实验方法实现动态分区的分配与回收,主要考虑三个问题:第一、设计记录内存使用情况的数据表格,用来记录空闲区和作业占用的区域(利用结构体类型数组来保存数据);第二、在设计的数据表格基础上设计内存分配算法(采用首次适应算法找合适的分区(对空闲分区表进行排序),分配时要考虑碎片问题);第三、在设计的数据表格基础上设计内存回收算法(分四种情况进行回收(上邻、下邻、上下邻和无相邻分区)。五、实验步骤第一,设计记录内存使用情况的数据表格已分配分区表:起始地址、长度

3、、标志(0表示“空表项,1表示“已分 配)空闲分区表:起始地址、长度、标志(0表示“空表项,1表示“未分配)struct used_table float address;已分分区起始地址float length;已分分区长度,单位为字节int flag;已分配表区登记栏标志,用0表示空栏目,char zuoyename;已分配区表Struct free_table float address;空闲分区起始地址float length;空闲分区长度,单位为字节int flag;空闲分区表登记栏目用0表示空栏目,1表示未配; /空闲分区表第二,在设计的表格上进行内存分配首次适应算法:为作业分配内

4、存,要求每次找到一个起始地址最小的适 合作业的分区(按起始地址递增排序)。最大碎片size :要求当找到的空闲分区-作业的大小的值小于或等于size 时,将该分区全部分配给作业(数组后面元素向前移);否则,给作业分割出一部分空间时,其余部分仍作为新的空闲分区登记(空闲分区长度二空闲分区长度-作业长度,空闲分区起始地址二空闲分区起始地址+作业长度第三,在设计的表格上进行内存回收。1、上邻:条件:回收作业的始址二某个空闲区的始址+长度操作:空闲区的长度二空闲区的长度+作业的大小2、下邻:条件:回收作业的始址+作业的长度二某个空闲区的始址操作:空闲区的始址二回收作业的始址空闲区的长度二空闲区的长度+

5、作业的长度3、上下邻:条件:1, 2条件同时成立操作:空闲区的始址二上邻的始址空闲区的长度二上邻的长度+作业的长度+下邻的长度删除下邻4、无上下邻:操作:找flag=0的行空闲区的始址二回收作业的始址空闲区的长度二作业的长度六、实验代码# include# include#define M 10#define N 10#define MIN 1#define SADDRESS 200#define SLENGTH 150000允许的空闲区表长最大为m允许的最大作业数量为n碎片的最大值空闲分区初始的起始地址空闲分区的初始长度void reclaim(char);回收算法子程序struct use

6、d_tfloat address;已分分区起始地址float length;/已分分区长度int flag;已分配表区登记栏标志,用0表示空栏目used_tableN;struct free_tfloat address;空闲分区起始地址float length;/空闲分区长度int flag;空闲分区表登记栏目用0表示空栏目,1表示未分配free_tableM;空闲分区表分配算法子程序void allocate(char,float);void main()int i,a;float zyl;char zyn;/空闲分区表初始化free_table0.address二SADDRESS;空闲分

7、区表的起始地址free_table0.length二SLENGTH; 空闲分区表的长度free_table0.flag = 1;标志位置1表示未分配for(i=1;iM;i+) free_tablei.address=0;free_tablei.length=0;free_tablei.flag=0; /0 表示空栏目已分分区表初始化for(i=0;iN;i+) used_tablei.address=0;used_tablei.length=0;used_tablei.flag=0;while(1)cout请选择功能项:endl1-分配主存endl2-回收主存endl3-显示主存endl 0

8、-退出endl a;switch(a)case 0:/当选择0时退出程序return;case 1: /a = 1分配主存空间cout驯n请输入作业名zyn和作业所需长度zyl(作业名为 一个字符,长度 zyl 要小于SLENGTH”):zynzyl;allocate(zyn,zyl);为作业zyn分配主存空间break;case 2:/ a=2回收主存空间coutzyn;reclaim(zyn);回收作业zyn的主存空间break;case 3: /a = 3显示主存情况,输出空闲区表和已分配区表coutn输出空闲区表:endl起始地址分区长度标志endl;for(i=0;iM;i+)if(

9、free_tablei.flag!=0)coutsetw(10)free_tablei.addresssetw(10)奋llks淅皿 couiAAseiw(10)AAusedl-tab-e=LaddressAAseiw(10)AAusedl-tab-e=L-engih AAseiw(10)AA(char)usedliab-e=J.f-agAAendL )breaksdefauscouiu-丰n沛时短济I河一 -/人end- break-sdn .g esHMwwnvoid a=ocaie(char zypfoai zy-)( foai ad-ini kYl;miHpwh=eTMp?p?k H

10、Y1)4W.4苒 找空间大于zyl的最小空闲区登记项kif(free_tablei.length=zyl&free_tablei.flag = = 1)k=i;i + +;if(k= = -1)未找到可用空闲区,返回cout无可用空闲区! endl;return;/*找到可用空闲区,开始分配:若空闲区大小与作业要求分配的空间差小于MIN,则将找到的空闲区全部分配给该作业;若空闲区大小与要求分配的空间的差大于minisize,则从空闲区划出一部分分配给作业。*/if(free_tablek.length-zyl = MIN) free_tablek.flag=0;ad=free_tablek.a

11、ddress;zyl=free_tablek.length;for(i=k;iM;i+)free_tablei=free_tablei+1; elsefree_tablek.length=free_tablek.length-zyl;ad=free_tablek.address;free_tablek.address=free_tablek.address+zyl;七啸罔印叫H冈淅H淅淅皿 s 克卅甘甘rt淅皿 snusedlorb-es.address; T妈奋llkzynffl34-fl-sMsilt Lnusedl-tab-es.-engih; 妈奋l=zyn 渊叫国四s34s木网 h-akYl;-Ho-4W.4苒 寻找回收分区的上下邻空闲区,上邻表目k ,下邻表目jwhile(iM&(j= = -1|k= = -1)if(free_tablei.flag = = 1)if(free_tablei.address+free_tablei.length =S) k=i;if(free_tablei.address= = S+L) j = i;i+;if(k! = -1)有上邻空闲区if(j! = -1)有下邻空闲区即有上下邻空闲区,三项合并free_tablek.len

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号