张蒙用首次适应算法模拟内存的分配和回收.docx

上传人:b****7 文档编号:16310501 上传时间:2023-07-12 格式:DOCX 页数:18 大小:407.51KB
下载 相关 举报
张蒙用首次适应算法模拟内存的分配和回收.docx_第1页
第1页 / 共18页
张蒙用首次适应算法模拟内存的分配和回收.docx_第2页
第2页 / 共18页
张蒙用首次适应算法模拟内存的分配和回收.docx_第3页
第3页 / 共18页
张蒙用首次适应算法模拟内存的分配和回收.docx_第4页
第4页 / 共18页
张蒙用首次适应算法模拟内存的分配和回收.docx_第5页
第5页 / 共18页
张蒙用首次适应算法模拟内存的分配和回收.docx_第6页
第6页 / 共18页
张蒙用首次适应算法模拟内存的分配和回收.docx_第7页
第7页 / 共18页
张蒙用首次适应算法模拟内存的分配和回收.docx_第8页
第8页 / 共18页
张蒙用首次适应算法模拟内存的分配和回收.docx_第9页
第9页 / 共18页
张蒙用首次适应算法模拟内存的分配和回收.docx_第10页
第10页 / 共18页
张蒙用首次适应算法模拟内存的分配和回收.docx_第11页
第11页 / 共18页
张蒙用首次适应算法模拟内存的分配和回收.docx_第12页
第12页 / 共18页
张蒙用首次适应算法模拟内存的分配和回收.docx_第13页
第13页 / 共18页
张蒙用首次适应算法模拟内存的分配和回收.docx_第14页
第14页 / 共18页
张蒙用首次适应算法模拟内存的分配和回收.docx_第15页
第15页 / 共18页
张蒙用首次适应算法模拟内存的分配和回收.docx_第16页
第16页 / 共18页
张蒙用首次适应算法模拟内存的分配和回收.docx_第17页
第17页 / 共18页
张蒙用首次适应算法模拟内存的分配和回收.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

张蒙用首次适应算法模拟内存的分配和回收.docx

《张蒙用首次适应算法模拟内存的分配和回收.docx》由会员分享,可在线阅读,更多相关《张蒙用首次适应算法模拟内存的分配和回收.docx(18页珍藏版)》请在冰点文库上搜索。

张蒙用首次适应算法模拟内存的分配和回收.docx

张蒙用首次适应算法模拟内存的分配和回收

采用首次适应算法实现主存的分配和回收

一、目的

在计算机系统中,为了提高内存区的利用率,必须给电脑内存区进行合理的分配。

本实验通过对内存区分配方法首次适应算法的使用,来了解内存分配的模式。

在熟练掌握计算机分区存储管理方式的原理的基础上,编程模拟实现操作系统的可变分区存储管理的功能,一方面加深对原理的理解,另一方面提高根据已有原理通过编程解决实际问题的能力,为进行系统软件开发和针对实际问题提出高效的软件解决方案打下基础。

二、实验内容与数据结构:

(1)可变式分区管理是指在处理作业过程中建立分区,使分区大小正好适合作业的需要,并且分区的个数是可以调整的。

当需要装入一个作业时,根据作业需要的贮存量,查看是否有足够的空闲空间,若有,则按需求量分割一部分给作业;若无,则作业等待。

随着作业的装入、完成,主存空间被分割成许多大大小小的分区。

有的分区被分配作业占用,有的分区空闲,例如,某时刻主存空间占用情况如图所示:

为了说明哪些分区是空闲的,可以用来装入新作业,必须要有一张空闲区说明表,如下图所示。

(2)当有一个新作业要求装入贮存时,必须查空闲区说明表,从中找出一个足够大的空闲区。

有时找到的空闲区可能大于作业的需求量,这时应将空闲区一分为二。

一个分给作业,另一个仍作为空闲区留在空闲区表中。

为了尽量减少由于分割造成的碎片,尽可能分配地地址部分的空闲区,将较大的空闲区留在高地址端,以利于大作业的装入。

为此在空闲区表中,按空闲区首地址从低到高进行登记。

(3)当一个作业执行完成时,作业所占用的分区应归还给系统。

在归还时,要考虑相邻空间区合并问题。

作业的释放区与空闲区的邻接分以下种情况考虑:

A、释放区下邻空闲区;

B、释放区上邻空闲区;

C、释放区上下都与空闲区邻接;

D、释放区上邻空闲区不邻接;

一、实验要求

1.内存大小初始化

2.可以对内存区进行动态分配,采用首次适应算法来实现

3.可以对已分配的内存块进行回收,并合并相邻的空闲内存块。

二、实验内容

把一个作业装入内存,按照首次适应算法对内存区进行分配,作业结束,回收已分配给该作业的内存块,并合并相邻的空闲内存块。

三、实验结果

运行效果:

初始化内存区大小,并添加作业,选择添加作业

当作业大小超过存储块大小时,分配失败。

选择,可查看内存分配情况

4.选择回收内存

5.选择添加新作业

6.回收作业,相邻的空闲内存块合并。

五、程序流程图:

六、实验源代码:

可变分区用首次适应算法来模拟内存回收

最大碎片值

分区表目

分区大小

分区序号或者名字

分区地址

分区使用情况表示空闲,表示使用

前向指针

后向指针

函数,返回类型指针

初始化空闲分区表

错误内存初始化分配失败!

程序结束

请预先输入分区总大小以为单位:

初始化已分配分区表

已分配区先暂定分配十个表目

错误内存分配失败!

程序结束

为新的进程分配资源

请输入新作业的名称和大小整数

表目已查完,无法分配

已无空闲分区本次无法分配

空表目

大小满足空闲分区大小》要分配的大小

大小满足

空闲分区大小要分配的大小碎片值会产生碎片将整块内存大小分配出去,

分配的大小为整块内存

会产生碎片

其他情况就分配大小为请求大小,不会产生碎片,

保存空闲分地址

该次内存分配会产生碎片将整块内存大小分配出去

该次内存分配不会产生碎片

否则,继续往下查找

大小满足空闲分区大小》要分配的大小

分配新的表目,处理一条数据,分配一次内存

指向空闲分区地址

修改指针

分配大小为要请求分配的大小

名称

修改空闲分区所指区块大小减

所指区块地址加

大小相等的,把当前表项设置空表目

保存已分配地址

在已分配表中设置为已分配

所申请资源已大过系统所拥有的请重新输入

结束作业资源回收为作业名,回收内存

为释放区,为后分区,为前分区

作业名

可有可无?

请输入您想结束的作业名

对已分配表进行操作

标志为空表目

这时保存着所指分区的信息

如果找不到该作业,则提示出错

所输入的作业名称不正确请重新输入

对空闲表进行操作

标志为空表目

内存回收成功

后分区

前分区

后接分区为空闲

判断后接分区是否为尾结点

把合并到

已回收大小内存

后分区不为空闲,表示已经被使用

已回收大小内存

前分区为空闲分区,则合并去前分区

若为尾结点

已回收大小内存

输出已分配分区和空闲分区

已分配分区表

分区序号大小始址状态

已分配

空表目

总的空闲分区表

分区序号大小始址状态

已分配

空表目

主入口函数,进行菜单选择

主菜单

申请新的作业分配内存

结束作业回收内存

查看内存表

退出系统

请选择

根据输入选择分支方向

选择错误请重新选择

退出循环

主函数入口

七、实验结果图示:

四、实验总结

通过此次的实验,让我对内存分配中首次适应算法更加熟悉,通过编程模拟实现操作系统的可变分区存储管理的功能,一方面加深对原理的理解,另一方面提高根据已有原理通过编程解决实际问题的能力,为进行系统软件开发和针对实际问题提出高效的软件解决方案打下基础。

 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2