主存空间的分配与回收Word文件下载.docx
- 文档编号:21495160
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:12
- 大小:206.75KB
主存空间的分配与回收Word文件下载.docx
《主存空间的分配与回收Word文件下载.docx》由会员分享,可在线阅读,更多相关《主存空间的分配与回收Word文件下载.docx(12页珍藏版)》请在冰豆网上搜索。
}NODE;
NODEOS[COUNT];
//数组
intcount;
//被分成的块数统计
intapplyfree;
floatnumb;
charc;
//先对数组进行初始化,使没有分配的名称为P
voidinit()
count=1;
OS[0].name='
P'
;
OS[0].start=0;
OS[0].end=COUNT;
OS[0].flag=1;
}//对数组的插入操作
voidinsert(intm,floatst,floaten)
inti;
count++;
for(i=count;
i>
m+1;
i--)
{
OS[i]=OS[i-1];
}
OS[m].start=st;
OS[m].end=en;
}//移动操作,即对数组的删除操作
voidmove(intm)
for(i=m;
i<
count-1;
i++)
OS[i]=OS[i+1];
count--;
}//如果相邻块都没有分配,则要合并到一起
voidrremove(intm,floatst,floaten)
if(!
OS[m-1].flag&
&
!
OS[m+1].flag)
OS[m].name='
OS[m].flag=1;
if(OS[m-1].flag)
OS[m-1].end=OS[m-1].end+en;
move(m);
if(OS[m+1].flag)
OS[m].end=OS[m].end+OS[m+1].end;
move(m+1);
}//打印输出
voidshow()
printf("
名称标识起址长度状态\n"
);
for(i=0;
count;
if(OS[i].flag)
printf("
P"
else
%c"
OS[i].name);
printf("
%d%1.0f%1.0f"
i,OS[i].start,OS[i].end);
未分配\n"
已分配\n"
}//从键盘输入数据
voidputin()
请输入申请或者释放的进程名称及资源数量:
\n"
rewind(stdin);
scanf("
%c"
&
c);
%d"
applyfree);
%f"
numb);
}
intapply()
inti=0;
intapplyflag=0;
intfreeflag=0;
if(applyfree)//提出申请资源
while(!
applyflag&
count)
{
if(OS[i].end>
=numb&
OS[i].flag)
{
if(OS[i].end==numb)
{
OS[i].name=c;
OS[i].flag=0;
}
else
{insert(i+1,OS[i].start+numb,OS[i].end-numb);
OS[i+1].flag=1;
OS[i+1].name='
OS[i].start=OS[i].start;
OS[i].end=numb;
applyflag=1;
}
i++;
}
if(applyflag)
{printf("
申请成功!
return1;
申请失败!
没有足够大的空闲空间。
return0;
else//提出释放资源
freeflag&
if(OS[i].name==c)
rremove(i,OS[i].start,OS[i].end);
if(OS[i].end>
numb)
{insert(i+1,OS[i].start+numb,OS[i].end-numb);
OS[i+1].name='
OS[i+1].flag=0;
OS[i].end=numb;
OS[i].flag=1;
if(OS[i-1].flag)
{rremove(i,OS[i].start,OS[i].end);
}
}
else
{printf("
释放失败,因为正使用的数量小于要求释放的数量。
return0;
freeflag=1;
if(freeflag)
释放成功!
释放失败!
未找到匹配的进程名称。
voidmain()
init();
show();
while
(1)
putin();
apply();
show();
测试结果如下图所示:
测试运行如图所示:
1、开始有512K的空间,未分配。
用名称P来表示。
进程A申请200K的空间,(申请用1表示,释放用0表示),其结果显示如下。
2、进程B申请150K的空间,
3.进程A释放200K的空间,
4、进程C申请100K的空间,进程D申请50K的空间
5、进程E申请30K的空间,进程F申请70K的空间
五、实验总结
本次实验即主存空间分配与回收,通过实验得出:
一个好的计算机系统不仅要有一个足够容量的、存取速度高的、稳定可靠的主存储器,而且要能合理地分配和使用这些存储空间。
当用户提出申请存储器空间时,存储管理必须根据申请者的要求,按一定的策略分析主存空间的使用情况,找出足够的空闲区域分配给申请者。
当作业撤离或主动归还主存资源时,则存储管理要收回作业占用的主存空间或归还部分主存空间。
主存的分配和回收的实现与主存储器的管理方式有关的,通过本实验我们理解了在可变分区管理方式下应怎样实现主存空间的分配和回收。
在清楚主存储器分配和回收的情况下,做些实验还是比较简单的。
关键是注意当找到一个大的块时,如何将这个大块分成两小块,一块用于分配,另一块依旧是未分配。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 主存 空间 分配 回收
![提示](https://static.bdocx.com/images/bang_tan.gif)