虚拟存储器管理

虚拟存储器管理

ID:41550702

大小:52.92 KB

页数:12页

时间:2019-08-27

虚拟存储器管理_第1页
虚拟存储器管理_第2页
虚拟存储器管理_第3页
虚拟存储器管理_第4页
虚拟存储器管理_第5页
资源描述:

《虚拟存储器管理》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、程旦09999129虚拟存储器管理……模拟内存分配与回收代码加注释#includenmalloc.hH#includenstdio.hn#includeniostream.hn#include"stdlib.h"#definen10//假定系统允许的最大作业为,假定模拟实验中n值为10#definem10//假定系统允许的空闲区表最大为m,假定模拟实验中m值为10#defineminisize100typedefstruct{floataddress;〃已分分区起始地址floatlength;//已分分区长度,单位为字节intflag;〃已分配区表登

2、记栏标志,用©表示空栏目,实验中只支持一个字符的作业名}used_table[n];//已分配区表typedefstruct{floataddress;〃空闲区起始地址floatlength;//空闲区长度,单位为字节intflag;//空闲区表登记栏标志,用9”表示空栏目,用”1”表示未分配}free_table[m];〃空闲区表〃采用最优分配算法分配xk大小的空间allocate(charJ,floatxk)inti,k;floatad;k二1;for(i=0;ivm;i++)//寻找空间大于xk的最小空闲区登记项kif(free_table[i

3、].length>=xk&&free_table[i].flag==l)if(k==-l

4、

5、free_table[i].length

6、k].flag=0;〃该空闲区被分配ad=free_table[k].address;xk=free_table[k].length;else{free_table[k].length=free_table[k].length-xk;ad=free_table[k].address+free_table[k].length;}〃修改已分配区表i=0;〃寻找空表目while(used_table[i].flag!=0&&ivn)i++;〃无表目填写已分分区if(i>=n)n);{printf(H无表目填写已分区,错误〃修正空闲区表if(free_t

7、able[k].flag==0)free_table[k].flag=l;〃前面找到的是某个空闲分区的一部分else{free_table[k]Jength=free_table[k].length+xk;return;}〃修改己分配表else{used_table[i].address=ad;used_table[i].length=xk;used_table[i].flag=J;}return;}〃回收作业名为J的作业所占主存空间reclaim(charJ){inti,k,j,s,t;floatS,L;〃寻找已分配表中对应登记项s=0;while

8、((used_table[s].flag!=J

9、

10、used_table[s].flag==O)&&s=n){printf(”找不到作业return;H);}〃修改已分配表used_toble[s].flag=O;〃取得归还分区的起始地址S和长度LS=used_table[s].address;L=used_table[s].length;j=-l;k二1;〃寻找回收分区的空闲上下邻,上邻表目k,下邻表目ji二0;while(i

11、

12、k==-1)){if(free_tabl

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

14、[k].length4-L;elseif(j!二1)〃上邻非空闲区,下邻为空闲区,与下邻合并free_tab

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

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

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