- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
分区式储器管理
实验五:分区式储器管理
一.实验目的
模拟实现一个简单的固定(或可变)分区存储管理系统,进一步加深对分区分配方案设计思想的理解。
二.实验属性
该实验为设计性实验。
三.实验仪器设备及器材
普通PC386以上微机
四. 实验提示
1、本实验虽然不以前面实验为基础,但建议在其界面中继续增加分区存储管理功能。
2、数据结构:分区说明表,用数组实现。
3、存储管理:建议采取固定分区法管理内存。编写内存分配、内存回收算法。
5、功能测试:从显示出的分区说明表,可查看操作的正确与否。
五.实验要求
本实验要求2学时完成。
本实验要求完成如下任务:
(2)实现一个分区分配算法,如最先适应分配算法、最优或最坏适应分配算法;分配算法、
本次实验我实现了两种算法一种是由内存的起始地址大小排序进行分配的算法 即是固态的最先适应法
另一种是根据内存大小排序进行查询的内存分配算法 是最佳适应法
void rank()
{
Table temp;
for(int i=0;im;i++)
for(int j=i+1;jm;j++)
{
if(inadress[i].sizeinadress[j].size)
{ temp=inadress[i];
inadress[i]=inadress[j];
inadress[j]=temp;
}
}
}
建立相关的数据结构,作业控制块、已分配分区及未分配分区;
Struct table
{
Int Number;
Int size;
Int beginad;
Int state;
}
Struct work;
{
Int name;
Int size;
Int address;
}
实现一个分区回收算法;
(
void memoryalloction()
{bool f;
for(int i=0;in;i++)
{
for(int j=0;jm;j++)
{ f=false;
if(prowork[i].size=inadress[j].sizeinadress[j].state==0)
{
prowork[i].number=inadress[j].number;
inadress[j].state=1;
f=true;
cout进程prowork[i].name内存分配成功,且内存序号为inadress[j].numberendl;
break;
}
}
if(f==false)
cout进程prowork[i].name内存分配失败,无法分配给该进程分配内存endl;
}
}
4) 给定一批作业/进程,选择一个分配或回收算法,实现分区存储的模拟管理;
(5) 将整个过程可视化显示出来。
void show()
{ cout分区号\t大小\t起址\t状态endl;
for(int i=0;im;i++)
{
coutinadress[i].number\tinadress[i].size\tinadress[i].beginad\tinadress[i].stateendl;
}
}
实验前应复习实验中所涉及的理论知识和算法,针对实验要求完成基本代码编写并完成预习报告、实验中认真调试所编代码并进行必要的测试、记录并分析实验结果。实验后认真书写符合规范格式的实验报告(参见附录A),并要求用正规的实验报告纸按时上交。
实验结果
输入三个进程 a 30 b 40 c60 分别用两种方法分配内存
固定内存分配状况:
1 12 20 0
2 32 32 0
3 64 64 0
4 128 128 0
5 42 256 0
根据显示的分区说明表得知结果正确
然后回收内存的验证:
输入数据为回收c 进程的内存
经过观察分区说明表可知结果正确
附录
#includeiostream
#includefstream
using namespace std;
int m;
int n;
void createinad();
void rank();
void creatework();
void memoryalloction();
void show();
void recover();
struct Table
{
int number;
int size;
int beginad;
int state;
};
struct work
{
char name;
int size;
int number;
};
Table *inadress;
work *prowork;
int main()
{
cout实现模拟分区式储器管理,功能如下endl;
cout1、首次适应算法为进程分配内存endl;
cout4、最佳适应算法为进程分配内存endl;
cout2、回收内存endl;
cou
文档评论(0)