欢迎来到天天文库
浏览记录
ID:42561169
大小:527.08 KB
页数:17页
时间:2019-09-17
《主存空间的分配实验》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、1•采用可变分区管理,使用首次适应算法实现主存的分配与回收#include#include#inelude#inelude#includeusingnamespacestd;structblock{〃定义空闲块的记录表;intbegin;intlength;};boolcmp(constblock&pl,constblock&p2){讦(pl.beginvp2・begin)returntrue;returnfalse;}vectormem_tabl
2、e;vectorfree_table;voidinit(){〃初始化空闲块,并将空闲信息记录到空闲分区说明表中;blocknow;while(cin»now.begin»now」ength,now.begin>=0){mem_table.push_back(now);}sort(mem_table.begin(),mem_table.end(),cmp);if(mem_table[0].begin>0){now.begin=0;now」ength=mem_table[O].begin;free_table.push_back(now);}v
3、ector::iteratorp=mem_table.begin();while(p!=mem_table.end()&&p+l!=mem_table.end()){if(p->begin+p->lengthv(p+l卜〉begin){now.begin二p・>begin+p・>length;now」ength=(p+l)・>begin-now.begin;free_table.push_back(now);}P++;}if(mem_table[mem_table.size()-l].begin+mem_table[mem_table.si
4、ze()-l].length<256){now.begin=mem_table[mem_table.size()-l].begin+mem_table[mem_table.size()-l].length;now」ength=256-now.begin;free_table.push_back(now);}sort(free_table.begin(),free_table.end(),cmp);}voidapplacation(constintlenght){〃内存申请操作;vector::iteratorp=free_table.beg
5、in();while(p!=free_table.end()){if(p->length>=lenght){blocknow;now.begin二p・>begin;now」ength=lenght;mem_table.push_back(now);if(p->length==lenght)〃查找成功就将内存分配岀去;free_table.erase(p);else{p->begin+=lenght;p->length-=leright;}cout«H分配成功!"«endl;return;}P++;}cout«"内存不够,无法分配"«endl;exit(O
6、);}voidprint(){〃主存空间占用表和空闲分区说明表的打卬;coutvv”主存空间占用情况"vvendl起始地址长度"«endl«endl;for(inti=O;i7、vendl;}voidrecover(){〃内存的回收;intt;t=rand()%mem_table.size();〃随机选取一个非系统内存块进行回收;while(t==0)t=rand()%mem_table.size();vector::iteratorp=t+mem_table.begin();free_table.push_back(*p);mem_table.erase(p);〃将内存块与空闲分区进行合sort(free_table.begin(),free_table.end(),cmp);for(p=free_table.b8、egin();p!=free_table.end();p++){并;if(p+l
7、vendl;}voidrecover(){〃内存的回收;intt;t=rand()%mem_table.size();〃随机选取一个非系统内存块进行回收;while(t==0)t=rand()%mem_table.size();vector::iteratorp=t+mem_table.begin();free_table.push_back(*p);mem_table.erase(p);〃将内存块与空闲分区进行合sort(free_table.begin(),free_table.end(),cmp);for(p=free_table.b
8、egin();p!=free_table.end();p++){并;if(p+l
此文档下载收益归作者所有