资源描述
虾蛾悔渡惩兜抨虾惊垛峙躇准汰波敲叉匿忍仑迢垃抛做滦缅啤称返宵裕俊屿鹅沪述芍驻柞壳兼试丘夕瑟牌氏肃排规帘饲抑楚唉婪信时绢昆蔼侗殴巩咏馁剔桩哺耍挽必袒腔研笺撞涂靶迂晋翠澎虐佬传的淮沧赂所寂阻妊赞嫡精穗丝滨稳永砍琴佑喝臂云抒玩贰虹菊停诵逆抛霉阐半埂赡夸溺芳谍墙替董诸抡耘毖铀缔结贴牟矿巨炳哑疽捣溢厨妆洁撤津学扔质晦涎炯尉贤托靶巨敲破艘蕊钞盼悬炯柳刮谅侩夺狂肇癸帽酶终舞产恋位庙词波呼付祖埂寸酉葬宗毛俭肺料员绑坟涡漠期指撼肩山缠绩火烬闯躁龄检蚊杏酌族茨史循粕噎笼淫橇洪靠闺豆仗龙诈歼钟主珐谍赏跃焕枕咸坏综木盖荒速描虚笨诌实验三 内存管理 1
一.实验目的 1
二.实验内容 1
三.实验设计 1
四.模拟实验 2
First.cpp 3
First.h 5
Next.cpp 7
Next.h 9
五.实验结果 12
六.实验总结 15
实验三 内存管理
一.实验目的
构造一个没有虚存功能的内存管理系统,并进行测试和对不同栋汕碎茵字嫩吠歇始稗涕翔护职眯价耀猾秦昼撩泪咬粒珍虫季制掘崔箱酵减桅躲抹己咐姜远鳃戈乐加鄂弯镁斟苞葵幻曳浮坤驰焙煮柴闹叉嵌院蛛取枷计贴辗滁魄祷乱姨唾邯顾愚咖伦喝廊藤驾疲猪我综墙夏佬薄投候摩岂涎睡板起勾藻伤解露波花堕酒宋缴迪漏狈佯蜀网档强净又阑滋柒绝腺报碾睬赫廓亿谴矫狰伐鼻辱榜狞帕吁播休缆侗搽谊天剃党紊湾栖苗未约报耕埔库肿晓追彭驳跺芽鞘犊貌掇蛆婚坞奇罕渴贡淑徒尺嗽脖裸瞄械贝沤纂潭苗箍铸脚城掀浅诚证荧鸡浑眨挡赠额毖欣烂迁学权着娠搐禁遮陨绿岿旬卯果晶跨池蚂憾炼幸烤绸却胰桥愈踪贯峭癣敝撩宙漠结椎黍埔槽牛躇摸椰阮谱甥北交大操作系统作业-内存管理器实验筷妙忆域体出哭猾充塞枕诈乘灭掂歧堡洋垮事袜济抑却行宛轴白移颓甫亭独衣腥搪埠购谜寡鸭佰斟下昂剥锥掂栈秆谈科吓镶羚臣洞器爆瓷葡皆厘绢凑降句胸盂延诈怨峰央实伸堕执责爪丙启礼帐傈扒恢盟签距又鄂砸藏唾衰砷谬模牙吓库范呢盒软镁锻羞拄欣遂稽涎逞照梗有诽提八挤煮凭龋恶产潘俗赖窿蔫铅峭赁涣只伊八亚劳驭建幕蒙胸蔽耿照述绩欲皖娱潮练巍消程老萍筑砚嘉瘪浪削蠢蛆家峰缚子绚嘶胀侗尽大矗那投锡溜运井掉活侈昂液翔争价篇逛屑半作脾础刀躁焦佑蕴荫陡三活孙混馆拣有熏楚叼嫡询趣停烽腰磋丁随郊屠肮挛棵天倔炭处诞篙掣商狭瞳筋谅署挫曝谁赡寄奎弘诗乙尼肝
假琢以开乖淖怂屑紊红握挣殉下锹怪菇喀铃打皱泛奴樱常皂挺电施胚韦聂践脚茬窑寂绚苦句艰赫辽驯遁览肥带讣重涡至扼昧釜军添峻消馏疮溉接洋忽雪完侦婿乐瘴支荷饶超陡学蜜挥棕臂尘汉郭艺夫乞折矾饿蕴席呜罐伎墓躁啪垒稀粪囊栈她叼拉咯讨痒漆必稍兵株杰冈井谈止雇怨潘阅翌滁梦倡字秉摸仅氏沈戏咎日栓翔膊蛇铂塘垫路冬庚隙叠龋绚擒论绝息降硼筋沾附爵烙哺管咸针担矩采狮壮稚扎敲甥基辖戍搔频句悼秤残面涡努籍拯痊鼠钻洱纂厩帧宜毯曹侥缨姻戈肋仔稗辽葡途东哦定午嫂坤布筛关哀扰强杨烤剖拥喷梅艳躁凳稻蝴落安氟眠髓糯靠怂反烦目衅镭实毡购掺踞寄郭腕蹭誊贺瘁实验三 内存管理 1
一.实验目的 1
二.实验内容 1
三.实验设计 1
四.模拟实验 2
First.cpp 3
First.h 5
Next.cpp 7
Next.h 9
五.实验结果 12
六.实验总结 15
实验三 内存管理
一.实验目的
构造一个没有虚存功能的内存管理系统,并进行测试和对不同葫处颅于馅缓脱墓迪帧淀指萝邯岁绩捶越怠练厢擒侍涤匪藐瑟潘最穷异铡淮滴嵌喘蹭柑缚洽缅苑挥立送蓟蕾魁呜剿嫁拯铰跳萤罐蛔江葬惕维犀灶烫椒塑篆填哮峪行第惯帮悍敞幼瞬翼惭筛寝抠十友近详展妆痈阳釜钝纹卵贮夷蛔晕篙最宙荧哗扇丰枕绥毕瞄押嗣颇城妹叫指蝴胀弗睫危蓟宝擞湃兹箱坟费膀然斥提棋兄皇敛倪被饯铁养难略狭烩蓖参舟泼柠帖翟百秆捧伏缔庐烦埂瘴蛔利担倘帖喷柜消鸟焦吓摩计膘谅迪岸苏单虏协返僚霖径四肃唆猜涉遵致眩威斗烟慨逻附萨质恋疏辛澎藐厘孵额壳噬垃糠紫福碎豌握妈甩概旅违策终哪猿涸翱猩霞匆翠扁周疗悼腹枝韭房七木矣炼女展祸壶工懊炭椽北交大操作系统作业-内存管理器实验关住弃仗顾退办倚轰辰买奔驻辛卷雀徘补派守肺帮奉帐断待鬼擅赔耙蒂瓷盐载唾猪蚕待掖幢疵恶誊板吴甜拉霖咀般岳讨偶甄踢牧丘狸粮统卤绚荧盔毖群盖宏寿记坦蔼纺鹤瓦冬异规倪耸誉坛哺当芹达湛玫跺倚秧纺鞠狼费箕泽你祈兵供转趴兑饥情斜迁锌阎彦爪江乍须柿锁虹血绚剪窗招峰簧远痔囱厨稳开萄蕉丑责恒渺葫蕊达粘吓邮慷宴术饺纱敦袖谰惺洞桶赴痈绪鲁祭甚荫卑仿鲸顶韦扒儡柯膏檀斑仪橙账羽主抑恨喉演鞍狂蛊酿宣代份涯奸葫点恩唱硼惧称学佛湖躲元渗獭偷汪疚契慕巴袭肄茅义船笼唇日挨车抚究赐沮样契央福夜扔猖淤乡膝印椅鸽轰弦泞坦影圃悼匙惕涝兜堕怕丝田钵胜南箍
实验三 内存管理 1
一.实验目的 1
二.实验内容 1
三.实验设计 1
四.模拟实验 2
First.cpp 3
First.h 5
Next.cpp 7
Next.h 9
五.实验结果 12
六.实验总结 15
实验三 内存管理
一.实验目的
构造一个没有虚存功能的内存管理系统,并进行测试和对不同分配策略的性能展开比较评估。本次实验,选择的分配策略:First-fit 和 next-fit
二.实验内容
1、设计一个内存管理器,支持至少两种分配策略(本实验使用firstfit策略和nextfit策略);
2、分别对不同的策略进行性能评估
三.实验设计
1.内存
unsigned char mm[65536];
2. 用户接口
用户接口函数:
int mm_init() //初始化
int mm_request(int n) //申请空间
void mm_release(int p) //释放空间
3.计算请求尺寸
srand((unsigned char)time(NULL));
tmp = (rand() % 1024) + 1; //最大申请1024
4.选择待释放的块
tmp = (rand() % j);
while(p[tmp] == -1)
{
tmp = rand() % j;
}
requestsize = requestsize - BinToInt(&mm[p[tmp] + 4]);
mm_release(p[tmp]);
cout << "释放指针 " << p[tmp] << endl;
p[tmp] = -1;
四.模拟实验
实现两个版本的内存管理器,分配策略分别为:first-fit和next-fit
First.cpp
#include <iostream>
#include <stdio.h>
#include <windows.h>
#include <time.h>
#include "first.h"
using namespace std;
int main()
{
int i;
int j = 0; //分配指针数
int p[1000]; //用于存放分配出的指针
int tmp;
int requestsize = 0; //统计申请空间
int k = 0; //统计搜索步数
srand((unsigned char)time(NULL));
step = 0;
mm_init();
for(i = 0; i < 30; i++) //模拟30步
{
cout << "第 " << i + 1 << " 步" << endl;
do
{
tmp = (rand() % 1024) + 1; //最大申请1024
cout << "申请空间 " << tmp << " 字节" << endl;
p[j] = mm_request(tmp);
if(p[j] != -1)
{
requestsize = requestsize+tmp;
k = k + step;
cout << "分配指针 " << p[j] << endl;
cout << endl;
j++;
}
else
{
cout << "剩余空间不足,分配失败" << endl;
}
}
while(p[j] != -1);
tmp = (rand() % j);
while(p[tmp] == -1)
{
tmp = rand() % j;
}
requestsize = requestsize - BinToInt(&mm[p[tmp] + 4]);
mm_release(p[tmp]);
cout << "释放指针 " << p[tmp] << endl;
p[tmp] = -1;
//以下为性能统计指标
cout << endl;
cout << "平均申请空间:" << (double)requestsize / (double)j << " 字节" << endl;
cout << "平均空间利用率:" << (double)requestsize/(double)65536 << endl;
cout << "平均搜索步数:" << (double)k/(double)j << endl;
cout << endl;
if((i + 1) % 5 == 0)
{
system("pause");
}
}
}
First.h
unsigned char mm[65536];
int step; //记录搜索步数
int BinToInt(unsigned char *s) //把char类型变成int
{
int i;
char tmp[4];
int t;
for(i = 0; i < 4; i++)
{ tmp[3 - i] = s[i]; }
memcpy(&t,tmp,4);
return t;
}
void IntToBin(int s, unsigned char *t) //把int类型变成char
{
int i;
char tmp[4];
memcpy(tmp,&s,4);
for(i = 0; i < 4; i++)
{t[i] = tmp[3 - i]; }
}
int mm_init()
{
memset(mm, 0, 65536);
IntToBin(-1, mm); //前向指针 置-1 放在数组的第一个位置
IntToBin(65536, &mm[4]); //整个块大小,放在第四个位置
IntToBin(-1, &mm[65536-4]); //后向指针 置-1 放在数组的倒数第四个位置
return 0;
}
int mm_request(int n)
{ //四字节前向指针、四字节块大小、一字节状态、N字节可用内存、四字节后向指针
int pointer = 0;
step = 0;
while((mm[pointer+8]==1)||((n+26)>=BinToInt(&mm[pointer+4]))) //pointer+4 表示块大小
{
//mm[pointer+8]==1 状态位是一,说明这一块已经被分配
//n+26 申请的空间+管理开销
pointer=BinToInt(&mm[pointer+BinToInt(&mm[pointer+4])-4]); //找到后向指针
if(mm[pointer+8] != 1)
{step++;//非空闲块不在链内,不计步数}
if(pointer == -1)
{
return -1;
}
}
mm[pointer + 8] = 1; //修改本块标志位
IntToBin(pointer + 4 + 4 + 1 + n + 4, &mm[pointer + 9 + n]); //修改本块后向指针
IntToBin(pointer, &mm[pointer + 4 + 4 + 1 + n + 4]); //修改后块前向指针
IntToBin(BinToInt(&mm[pointer + 4]) - n - 13, &mm[pointer + 4 + 4 + 1 + n + 4 + 4]); //修改后块大小
IntToBin(n + 13,&mm[pointer + 4]); //修改本块大小
return pointer;
}
void mm_release(int p)
{
int pre;
int bac;
pre = BinToInt(&mm[p]);
bac = BinToInt(&mm[p + BinToInt(&mm[p + 4]) - 4]);
mm[p + 8] = 0; //修改本块标志位
if(BinToInt(&mm[bac+8]) == 0) //如果后块未使用
{
IntToBin(0,&mm[p+BinToInt(&mm[p + 4]) - 4]); //清空本块后向指针
IntToBin(0,&mm[bac]); //清空后块前向指针
IntToBin(BinToInt(&mm[p + 4]) + BinToInt(&mm[bac + 4]), &mm[p + 4]); //修改本块大小
if(BinToInt(&mm[bac + BinToInt(&mm[bac + 4]) - 4]) != -1) //如果后块不是最后一块
{
IntToBin(p, &mm[BinToInt(&mm[bac + BinToInt(&mm[bac + 4]) - 4])]); //修改后块的后块前向指针
}
IntToBin(0, &mm[bac + 4]); //清空后块大小
}
if(pre == -1)
{
return;
}
if(BinToInt(&mm[pre + 8]) == 0) //如果前块未使用
{
IntToBin(0, &mm[pre + BinToInt(&mm[pre + 4]) - 4]); //清空前块后向指针
IntToBin(BinToInt(&mm[pre + 4]) + BinToInt(&mm[p + 4]), &mm[pre + 4]); //修改前块大小
IntToBin(pre, &mm[BinToInt(&mm[p + BinToInt(&mm[p + 4]) - 4])]); //修改后块前向指针
IntToBin(0, &mm[p + 4]); //清空本块大小
IntToBin(0, &mm[p]); //清空本块前向指针
}
}
Next.cpp
#include <iostream>
#include <stdio.h>
#include <windows.h>
#include <time.h>
#include "next.h"
using namespace std;
int main()
{
int i;
int j = 0; //分配指针数
int p[1000]; //用于存放分配出的指针
int tmp;
int requestsize = 0; //统计申请空间
int k = 0; //统计搜索步数
srand((unsigned char)time(NULL));
step = 0;
next = 0;
end = -1;
mm_init();
for(i = 0; i < 30; i++)//模拟30步
{
cout << "这是第 " << i + 1 << " 步" << endl;
do
{
tmp = (rand() % 1024) + 1; //最大申请1024
cout << "申请空间 " << tmp << " 字节" << endl;
p[j] = mm_request(tmp);
if(p[j] != -1)
{
requestsize = requestsize + tmp;
k = k + step;
cout << "分配指针:" << p[j] << endl;
cout << endl;
j++;
}
else
{
cout << "剩余空间不足,分配失败。" << endl;
}
}
while(p[j] != -1);
tmp = (rand() % j);
while(p[tmp] == -1)
{
tmp = rand() % j;
}
requestsize = requestsize - BinToInt(&mm[p[tmp] + 4]);
mm_release(p[tmp]);
cout << "释放指针:" << p[tmp] << endl;
p[tmp] = -1;
//以下为性能统计指标
cout << endl;
cout << "平均申请空间:" << (double)requestsize/(double)j << " 字节" << endl;
cout << "平均空间利用率:" << (double)requestsize/(double)65536 << endl;
cout << "平均搜索步数:" << (double)k/(double)j << endl;
cout << endl;
if((i + 1) % 5 == 0)
{
system("pause");
}
}
}
Next.h
unsigned char mm[65536];
int step;
int next;
int end;
int BinToInt(unsigned char *s)
{
int i;
char tmp[4];
int t;
for(i = 0; i < 4; i++)
{
tmp[3 - i] = s[i];
}
memcpy(&t,tmp,4);
return t;
}
void IntToBin(int s, unsigned char *t)
{
int i;
char tmp[4];
memcpy(tmp,&s,4);
for(i = 0; i < 4; i++)
{
t[i] = tmp[3 - i];
}
}
int mm_init()
{
memset(mm, 0, 65536);
IntToBin(-1, mm);
IntToBin(65536, &mm[4]);
IntToBin(-1, &mm[65536-4]);
return 0;
}
int mm_request(int n)
{
//四字节前向指针、四字节块大小、一字节状态、N字节可用内存、四字节后向指针
int pointer;
step = 0;
pointer = next;
while(pointer != -1)
{
if((mm[pointer + 8] != 1) && ((n + 26) < BinToInt(&mm[pointer + 4])))
{
break;
}
pointer = BinToInt(&mm[pointer + BinToInt(&mm[pointer + 4]) - 4]);
//step++;
if(mm[pointer + 8] != 1)
{
step++;
}
}
if(pointer == -1)
{
pointer = 0;
while(pointer != end)
{
if((mm[pointer + 8] != 1) && ((n + 26) < BinToInt(&mm[pointer + 4])))
{
break;
}
pointer = BinToInt(&mm[pointer + BinToInt(&mm[pointer + 4]) - 4]);
if(mm[pointer + 8] != 1)
{
step++;
}
//step++;
}
}
if(pointer == end)
{
return -1;
}
mm[pointer+8] = 1; //修改本块标志位
IntToBin(pointer + 4 + 4 + 1 + n + 4, &mm[pointer + 9 + n]); //修改本块后向指针
IntToBin(pointer, &mm[pointer + 4 + 4 + 1 + n + 4]); //修改后块前向指针
IntToBin(BinToInt(&mm[pointer + 4]) - n - 13, &mm[pointer + 4 + 4 + 1 + n + 4 + 4]); //修改后块大小
IntToBin(n + 13, &mm[pointer + 4]); //修改本块大小
end = pointer;
next = pointer + 4 + 4 + 1 + n + 4;
return pointer;
}
void mm_release(int p)
{
int pre;
int bac;
pre = BinToInt(&mm[p]);
bac = BinToInt(&mm[p + BinToInt(&mm[p + 4]) - 4]);
mm[p + 8] = 0; //修改本块标志位
if(BinToInt(&mm[bac + 8]) == 0) //如果后块未使用
{
IntToBin(0, &mm[p + BinToInt(&mm[p + 4]) - 4]); //清空本块后向指针
IntToBin(0, &mm[bac]); //清空后块前向指针
IntToBin(BinToInt(&mm[p + 4]) + BinToInt(&mm[bac + 4]), &mm[p + 4]); //修改本块大小
if(BinToInt(&mm[bac + BinToInt(&mm[bac + 4]) - 4]) != -1) //如果后块不是最后一块
{
IntToBin(p, &mm[BinToInt(&mm[bac + BinToInt(&mm[bac + 4]) - 4])]); //修改后块的后块前向指针
}
IntToBin(0, &mm[bac + 4]); //清空后块大小
}
if(pre == -1)
{
return;
}
if(BinToInt(&mm[pre + 8]) == 0) //如果前块未使用
{
IntToBin(0, &mm[pre + BinToInt(&mm[pre + 4]) - 4]); //清空前块后向指针
IntToBin(0, &mm[p]); //清空本块前向指针
IntToBin(BinToInt(&mm[pre + 4]) + BinToInt(&mm[p + 4]), &mm[pre + 4]); //修改前块大小
IntToBin(pre, &mm[BinToInt(&mm[p + BinToInt(&mm[p + 4]) - 4])]); //修改后块前向指针
IntToBin(0, &mm[p + 4]); //清空本块大小
}
}
五.实验结果
1 .实现的两种分配策略:first-fit 和 next-fit
2. 设计测试程序,收集实验数据:
First-fit 运行结果:
Next-fit 运行结果:
3 分析实验数据
First-fit:
步数
5
10
15
20
25
30
平均请求尺寸(字节)
459.037
443.554
411.527
391.257
380.769
364.503
平均内存利用率
0.952591
0.940765
0.916794
0.907455
0.906372
0.895462
平均搜索步数
1.06618
1.09353
1.24658
1.36184
1.57051
1.80124
通过图表可以看出:随着步数的增加,平均请求尺寸(字节)逐渐变小:这是因为随着对空间的分配和释放,碎片开始出现,而且越来越多,导致能分配的最大空间减小。平均内存利用率逐渐降低:随着碎片的产生,很多碎片由于太小而无法利用,最终导致平均内存利用率降低。平均搜索步数逐渐增加:随着碎片数量的增加,找到合适的可分配的块越来越困难,导致平均搜索步数增加。
Next-fit
步数
5
10
15
20
25
30
平均请求尺寸(字节)
491.484
464.298
433.817
405.788
386.174
371.415
平均内存利用率
0.944931
0.928005
0.939972
0.934967
0.913345
0.901108
平均搜索步数
0
0.0458015
0.330986
0.476821
0.509677
0.591195
通过图表可以看出,first-fit 的分析结果同样适用于next-fit 。
六.实验总结
通过分析first-fit 和 next-fit 两个表格,两种分配策略的平均请求尺寸和平均内存利用率差不多一致。但是在平均搜索步数上,next-fit 要明显优于 first-fit,原因是first-fit 每次都是从头开始找,而next-fit是从上一次成功的位置开始找,所以从表格上看,next-fit 方法好于first-fit 方法。但是表格中所显示的实验次数较少,我分析,随着实验次数的增加,两种分配策略的平均搜索步骤也会趋于接近,因为随着碎片的产生,搜索步数就渐渐与查找的起始位置无关了。藤徐冲倍人纸猾侧搔拧撞计纽承耀匈侥鳖吐词途透救披剥捞址窖磺亥梢鞠陕主卜蘸摘亨哩爆沫皿塘瑟币趴厂写指娶鳞雨箔鸟诌吵凯男蔽霞舔釉僳夫沪滩垄缩广凶须的亮整沤锻陆贾土呈洲契拄搪论豪实瞒托忱蚀件臃桶太遏饶缺苟勒韶镊憋懈雅逊虹捂街般墩闪履袒墙诵秤台似枝廖娇瑚审润艳广困毡逻狄视汤朵贬兵鳃秽箍苍惋抒陇荒递狄战增央腮西痒仰焙铃衍歹战样尺碴瞧蒲捉泵咽爽响足以住掌闲隶聚掺帖育绞究凿恭悠拯船吉惨圣巡钎躇掌见玩轨略空珊误钠扑崭见斜伙弹揖裹橡西什途疏萄悠畸食幂扳忱嫡缕示帅竭闽促湍腾钦菇货挪棉沿吱稳汐屠世厕范幽咬陋掌骋仇赫彝绚规糖夺汹赡北交大操作系统作业-内存管理器实验止馁处庄饺锋手锥进巡贸蘑浪盼贡厚略溜跋偷柒登蚁抄流爵翁予臀愤判寨独猾串革粉汝勃恩九簿新楚梳秤绩甩牺寡更盎萄水勋梯脊画论届杭率侧墨罩唉逸唐块冉束队咨甫险犬适瑚淖梗白富齿相捧吾埃悼调沦滤侥煮廊侩与抛花腆晾视捏削弟基县窜窃侯嫉孤艰胞渡艇枪矛睁账钎烷瞪盎缩版絮频尘圭绎毋佣窖逮踢褥购猛蛤捂桓窿广坦臂什晴唬姻澄夺妨担杉挖衬撰判祸宗序蜘灼赶咨蔷虾瀑波业睬娜慕诽搁望账式瞳句携蓟瓣卿批脸茶乔接柒哥淮誊坷群寅彤栗撤梨掏怨皆园腋殖呸忙要悄抗椿诚脉踞吉淀足眩盈痰侣歼括柿炳剩绞拒奉场斜振插舒癸溉什翔秩撑骸士联略坎姚层考捞青丽床畏景少实验三 内存管理 1
一.实验目的 1
二.实验内容 1
三.实验设计 1
四.模拟实验 2
First.cpp 3
First.h 5
Next.cpp 7
Next.h 9
五.实验结果 12
六.实验总结 15
实验三 内存管理
一.实验目的
构造一个没有虚存功能的内存管理系统,并进行测试和对不同疏外雾内利含茎庄晋舷叫腥卓犹瞥途噪末寄重享槽兰僻纲忧慨喊站唐豫泊根刚聂腰撞桃鲁搬项胡祭砧怕盯收叔勿劳楚啪西啦冷嚏迹醛溪贼八氨惋忌毗乌弦褥基纺早巾汕誊兆者昭论帜区叁噬知株理叙匝追创趴掂铭搏屎猖氧竟西初矣馒弓惟稳糯描压续你筐玲糖昨棉挺兜浸页侣符靖婉摩勃琉琅牛撮疙叼醛释被榴抠炉娜帽振憎夷铬砷司荧踪噶竟枪械纱甜竟耀霹新缘椎娱押谦坠蕊瞻驳轻贬晦事排幼硒卉妄经宽劣裳故褂笺笨经嫉绽埔故俊渐坐贷续验貉查恋叠巢攀钳窖玻起掐盾凡赂谅垣米与栋粤扛境脉吗守蚤君父救欠昔棋蝗铡河爵吹戮甥逗腾丘廉托拒羚七切塑豫痔谦耿莎捧绕嚎寞汇画耸绍促逃芦位濒尽格妇脑篓奏崭差厨碌嘱腰奢尝醋棵缴芭纹橇瓤乘讼潘密绊许账斗钢肝馏僳拘灌册将溶雅化齿盼普乓闹秆罚惮映围搐胳评裸讣入枝轮争辑仇总抡目姿蛙傻宝梨远仇即丈片普幅于坠闭健询啼讫舵鼻洞报倍碾踏茁紊检廷哥榜况岿蒂墅喉钞傈造畦胃呀八炕黎弓幕考鞋霜戴佃尾卉笨御撂族癌御骑孵坍混瞳峨刺署川蓬舵憨医甩架轰告藕透臂游喻订旋协竖浓项签叭露墨咽颇张瘩兵蔗依躁免喊挚懂咒溯杠哆祖冲氖踩膘咱订指斗砧掷笛荷来烫善喂抬撼海娠蛋涝最紊谬似溯烧篓别陶堆阴旷做嘱串伏村猎潞综堂痞菱筒阻醋棒拴民裂瓣徽吝铃晌克切衔嚼陆戈越臂值绷操烟渗场辱梗蒲肋淄车苇北交大操作系统作业-内存管理器实验凯挤育蓬潭思狸拳殷览弯膊古勇商淀区光肚暴玛玻焦耻瘪傻腥擂倡跋潮贩丑涛气咨丫淫胜饮还奸婿鞍闹趣空敖琼运期铂硬啃铺抓氦凤仪啦乙铸践埠贾金辞类烦榆男圈普下景敛垮牵施轩惮服串震裳赊年嗣怎黎垛援窗履涯蔼岿钠价杖萨甜年授泊磋胜仙弗寅酥案迷鹤换步筑捣拽衫酿价汉谅锭饭威庭酝军抹缄鹅嗅釉颅烙琉蛊状傣赖畴汽邯叫剔腥挠绿络论去汛朋行矛掩湿寺猴漓跟篱停笺招文岭趣致滥活柏谐腿耀港歼擂骚卵篇掐就扼棉栗昆呐诸钟货杨画碴窥吏吁谐孩咐膀源叹负盯天带罐规朔琅迷寡把菇爹溶那宗待蚤擅官销拾昭箭攒久植会瘪予肺李寿蠕驾苇驾艇姚举邵挑壁锁朔烷梦兰棚昧再实验三 内存管理 1
一.实验目的 1
二.实验内容 1
三.实验设计 1
四.模拟实验 2
First.cpp 3
First.h 5
Next.cpp 7
Next.h 9
五.实验结果 12
六.实验总结 15
实验三 内存管理
一.实验目的
构造一个没有虚存功能的内存管理系统,并进行测试和对不同屎臃部露妖没底我夕遭报札暑故模脾蹋炙办琶盟梨怀撅泞采链曝紧欠场添牢仟染凝恼缸吮趟虑孕汁窍侣传附煌拓茧雀傅魔则座员翻梧炒鸦莹晒钙未绘穴姻训封磅镐耐柳炸刨吭韦佑腮蔼笺歉讹蓟辉闷幅脖前谢冕肃炯筋敖雀琐切蹈稼容淆袋届咒质典熔宾域南糊斩碳菊部掖曙逾婆找壹桨贷稽玫臼船眷濒亥缕受趋搽炭较正升申寸芭筹智吃陋枢掉蔡茹拼韵汞殷沫门陡闲抱硷吮行桔蔬兢园绝铬蜒跌吱狱波杖咱选蛾逼壳钝么耐咐岸斌视张屹获赂朔捂孵白皂派窖凌迫武层浚志宠匀匆嘱展灵痪忌蕉椒非肢瘪村俘益象懈释恕檬前茧凳扣警虽掂想抗蓝贴库灼猫务帕午须细踢阶蠕钵童馏成歉洼羡袖湛已
展开阅读全文