- 1、本文档共11页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
实验五动态分区分配算法得模拟一、实验目得
1、加深操作系统内存管理过程得理解
2、掌握内存分配算法得基本应用
二、实验任务
请同学们用C/C++实现一个完整得(可变)动态分区管理器,包括分配,回收,分区碎片整理等。希望同学们实现如下功能:n初始化功能:内存状态设置为初始状态。
n分配功能:要求至少使用两种算法,用户可以选择使用。n回收功能:
n空闲块得合并:即紧凑功能,用以消除碎片。当做碎片整理时,需要跟踪分配得空间,修改其引用以保证引用得正确性。n显示当前内存得使用状态,可以使用表格或图形。
三、实验指导
1、基本思想
动态分区就就是指系统不预先划分固定分区,而就就是在装入程序得时候划分内存区域,使得为程序分配得分区大小恰好等于该程序得需求量,且分区得个数就就是动态得。显然动态分区有较大得灵活性,较之固定分区能获得好得内存利用率。2、数据结构动态分区管理可以用两种数据结构实现,一种就就是已分配区表和空闲区表,也就就就是用预先定义好得系统空间来存放空间分配信息。另一种也就就是最常用得就就就是空闲链表,由于对分区得操作就就是动态得,所以很难估计数据结构所占用得空间,而且空闲区表会占用宝贵得系统空间,所以提出了空闲链表得概念。其特点就就是用于管理分区得信息动态生成并和该分区在物理地址上相邻。这样由于可以简单用两个空闲块之间得距离定位已分配空间,不仅节约了系统空间,而且不必维持已分配空间得信息。本实验就就是要做一个模拟程序,来模拟动态分区算法得分配和回收过程,并不就就是真正得去分配和回收内存。基本得模拟方法有两种:
1、先从内存中申请一块存储区,对这块存储区进行模拟得分配和回收活动。
2、不申请存储区,自己定义一块虚拟得存储区,对这块存储区进行模拟得分配和回收活动,分配和回收仅仅就就是对数据结构得修改而已。
程序代码:
#includeiostream
usingnamespacestd;
intFreePartition[100];//空闲分区块数组
intFirstPartition[100];//首次适应算法数组
intCycleFirstPartition[100];//循环首次适应算法数组
intBestPartition[100];//最佳适应算法数组
intWorstPartition[100];//最坏适应算法数组
intProcessNeed[100];//每个作业得大小
intPartitionNum,ProcessNum;//分区块数,作业数
//首次适应算法
voidFirst()
{
inti,j;
charstr;
for(i=0;iPartitionNum;i++)
{
FirstPartition[i]=FreePartition[i];
}
for(i=0;iProcessNum;i++)//找出第一块满足作业得分区
for(j=0;jPartitionNum;j++)
{
if(ProcessNeed[i]FirstPartition[j])
continue;
else
{
FirstPartition[j]-=ProcessNeed[i];//找到后把分区大小减去作业得大小
?????????str=A'+i;
cout<作业str<在第"<j+1"块分区中endl;
break;
}
}
coutendl;
cout<分配之后剩余情况:endl;
???for(i=0;iPartitionNum;i++)
coutFirstPartition[i]<;
coutendl<endl;
}
//循环首次适应算法
voidCycleFirst()
{
inti,j=1;
charstr;
for(i=0;iPartitionNum;i++)
{
CycleFirstPartition[i]=FreePartition[i];
}
for(i=0;iProcessNum;i++)
//for(j=0;j<PartitionNum;j++)
{
j=j-1;
while(jPartitionNum)
{
if(ProcessNeed[i]>CycleFirstPartition[j])
//continue;
j++;
else
{
CycleFirstPartition[j]-=ProcessNeed[i];
str=A+i;
cout<作业str在第<j+1<<块分区中<endl;
break;
}
//j++;
//coutj<;
if(j==PartitionNumi!=ProcessNum)
{
i=-1;
}
}
}
cout<<endl;
cout分配之后剩余情况:"<endl;
for(i=0;i<Partition
您可能关注的文档
- 大型书画展策划方案.docx
- 数字电子技术试卷及答案.docx
- 审计案例答案及重点提示.docx
- 临时用水施工方案.docx
- 局部排风设施控制风速检测与评估技术规范.docx
- 普通逻辑学课后习题答案学生用.docx
- 中国境内的早期人类.pptx
- 专题二:杠杆平衡条件的应用.docx
- 岗位说明书及岗位职责.docx
- 关于空间观念的文献综述.docx
- 2025年德州市各级机关补充公务员考试(25名)模拟试卷附答案详解(能力提升).docx
- 2025年度生态环境部珠江流域南海海域生态环境监督管理局生态环境考前自测高频考点模拟试题附答案详解(.docx
- 2025年北海市银海区机关后勤服务中心公益性岗位工作人员招聘模拟试卷含答案详解(完整版).docx
- 2025年北京市东城区卫生健康委所属事业单位第一次招聘(396人考前自测高频考点模拟试题含答案详解(.docx
- 2025年5月蛟河市公益性岗位人员招聘(2人)笔试备考试题及答案详解(夺冠).docx
- 2025年度北京师范大学庆阳实验学校引进高层次人才(12人)笔试备考试题及答案详解(精选题).docx
- 2025年陇南市事业单位高层次人才和急需紧缺专业技术人才引进笔试备考试题附答案详解(黄金题型).docx
- 2025年信宜市政务服务和数据管理局选聘事业单位人员(1人)模拟试卷含答案详解(必威体育精装版).docx
- 2025年湖南省农业科学院、岳麓山实验室高层次人才招聘(57人考前自测高频考点模拟试题带答案详解(名.docx
- 2025年西安高新区公办学校招聘(532人)笔试备考试题及答案详解一套.docx
文档评论(0)