可变分区存储管理代码

可变分区存储管理代码

ID:6633309

大小:182.00 KB

页数:7页

时间:2018-01-20

可变分区存储管理代码_第1页
可变分区存储管理代码_第2页
可变分区存储管理代码_第3页
可变分区存储管理代码_第4页
可变分区存储管理代码_第5页
资源描述:

《可变分区存储管理代码》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、实验三可变分区存储管理方式的内存分配回收#include"iostream.h"#include"stdio.h"#include"stdlib.h"#include"conio.h"#definen10//假定系统允许的最大作业数量为n#definem10//假定系统允许的空闲区表最大为m#defineminisize100struct{floataddress;//已分分区起始地址floatlength;//已分分区长度,单位为字节intflag;//已分分区表登记栏标志,用"0"表示空栏目,实验中只支持一个字符的作业名}used_table[n];//已分分区表struct{float

2、address;//空闲区起始地址floatlength;//空闲区长度,单位为字节intflag;//空闲区表登记栏标志,用"0"表示空栏目,用"1"表示未分配}free_table[m];//空闲区表intallocate(charJ,floatxk)//采用最有分配法分配xk大小的空间//charJ;//floatxk;{inti,k;floatad;k=-1;for(i=0;i=xk&&free_table[i].flag==1)if(k==-1

3、

4、free_table[i].len

5、gth

6、ength=free_table[k].length-xk;ad=free_table[k].address+free_table[k].length;}//修改分配区表i=0;while(used_table[i].flag!=0&&i=n){cout<<"无表目填写已分分区,错误"<

7、+xk;return0;}else{used_table[i].address=ad;used_table[i].length=xk;used_table[i].flag=J;}return1;}//内存分配函数结束}intreclaim(charJ)//回收作业名为J的作业所占内存空间//charJ;{inti,k,j,s,t;floatS,L;//寻找已分分区表中对应登记项s=0;while((used_table[s].flag!=J

8、

9、used_table[s].flag==0)&&s=n)//在已分分区表中找不到名字为J的作业{cout<<"找不到该作业"<

10、

11、

12、k==-1)){if(free_table[i].flag==0){if(free_table[i].address+free_table[i].length==S)k=i;//找到上邻if(free_table[i].address==S+L)j=i;//

13、找到下邻}i++;}if(k!=-1)if(j!=-1)//上邻空闲区,下邻空闲区,三项合并{free_table[k].length=free_table[j].length+free_table[k].length+L;free_table[j].flag=0;}else//上邻空闲区,下邻非空闲区,与上邻合并free_table[k].length=free_table[k].length+L;else

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

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

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