计算机操作系统实验报告
姓名: 班级: 学号:
题目:动态分区分配方式的模拟
实习
内容
简要
描述
本次实验要完成两部分内容:
一 是 用 C 语 言 实现对采用首 次适 应 算 法 和 最佳 适 应 算 法 的动态分 区 分 配 过 程
ALLOC()和回收过程 FREE(),其中空闲分区由空闲分区链来管理,进行分配
时,系统优先使用空闲区底端空间。
二是假设初始状态下,可用内存空间为 640KB。按照题目要求的作业顺序,以及各个
作业分配和回收的内存空间。分别采用首次适应法和最佳适应法,对内存进行分配和
回收,要求每次分配和回收后显示空闲内存分区链的情况。
实验
分析
算法
介绍
本次实验通过用 C 语言进行编程并调试、运行,形象地表现出动态分区的分配方式,
直观地展现了首次适应算法和最佳适应算法对内存的释放和回收方式之间的区别。加
深了我们对两种算法优缺点的理解,帮助我们了解一些数据结构和分配算法,进一步
加深我们对动态分区存储器管理方式及其实现过程的理解。主要的问题在于,如何解
决两种算法对内存的释放和回收空间的表示。
动态分区分配:又称为可变分区分配,这种分配方式并不事先先将主存划分成一块块
的分区,而是在作业进入主存时,根据作业的大小动态地建立分区。并使分区的大小
正好适应作业的需要。因此系统中分区的大小是可变的,分区的数目也是可变的。
分区分配算法:(两者的空闲块链接方式不同)
① 首次适应法:
为作业选择分区时总是按地址从高到低搜索,只要找到可以容纳该作业的空白块,
就把该空白块分配给该作业。
特点:优先利用内存中底地址部分的空闲分区 (将所有空闲区,按其地址递增的顺序链
接)
② 最佳适应算法:
接到内存申请时,在空闲块表中找到一个不小于请求的最小空块进行分配 ;为作业
选择分区时总是寻找其大小最接近于作业所要求的存储区域。
特点:用最小空间满足要求 (将所有空闲区,按其大小递增的顺序联接成空闲区链)
结果
分析
(思
考题
解
答;
错误
原因
分
析)
运行结果分析:
1、参考程序方法 1 中,用两个独立的程序分别实现首次适应算法和最佳适应算法的
分配和回收过程。首次适应算法,在进行内存分配时,从空闲分区链首开始顺序
查找,能满足其大小要求的空闲分区为止。然后,再按照作业大小,从该分区中
划出一块内存空间分配给请求者,余下的空闲分区仍然留在空闲分区链中。最佳
适应算法,在进行内存分配时,从空闲分区链首开始顺序查找,直至找到第一个
能满足其大小要求的空闲分区为止。如果给空闲分区大于作业的大小,则从该分
区中划出一块内存空间分配给请求者,将剩余空闲区仍然留在空闲区分链中。当
作业运行完成时,对已使用完的分区进行回收,系统根据回收分区的大小及首地
址,在空闲分区链中检查是否有邻接的空闲区,如有相邻空闲区则合并成一个大
的空闲区,然后修改有关的分区状态信息。
2、参考程序方法 2 中,只用了一个程序来实现整个操作内容:首先确定内存空间分
评论1