华北电力大学 实 验 报 告 实 验 名 称 动 态 分 区 分 配 方 式 的 模 拟 课 程 名 称 计 算 机 操 作系统 专业班级: 学生姓名: 学 号: 成 绩: 指导教师: 实验日期: 华 北 电 力 大 学 实 验 报 告 一﹑实验目的: 了解动态分区分配方式中使用的数据结构和分配算法,并进一步加深对动态分区存储管理方式及其实现过程的理解。 二﹑实验内容: (1)用C 语言分别实现采用首次适应算法和最佳适应算法的动态分区分配过程alloc()和回收过程free()。其中,空闲分区通过分区链来管理;在进行内存分配时,系统优先使用空闲区低端的空间。 (2)假设初始状态下,可用内存空间为640K,并有下列请求序列: ◎作业 1 申请130KB。 ◎作业 2 申请60KB。 ◎作业 3 申请100KB。 ◎作业 2 释放 60KB。 ◎作业 4 申请200KB。 ◎作业 3 释放 100KB。 ◎作业 1 释放 130KB。 ◎作业 5 申请140KB。 ◎作业 6 申请60KB。 ◎作业 7 申请50KB。 ◎作业 6 释放 60KB。 请分别用首次适应算法和最佳适应算法进行内存块的分配和回收,要求每次分配和回收后显示出空闲内存分区链的情况。 四﹑设计思路和方法: 首次适应算法(First-fit):当要分配内存空间时,就查表,在各空闲区中查找满足大小要求的可用块。只要找到第一个足以满足要球的空闲块就停止查找,并把它分配出去;如果该空闲空间与所需空间大小一样,则从空闲表中取消该项;如果还有剩余,则余下的部分仍留在空闲表中,但应修改分区大小和分区始址。 最佳适应算法(Best-fit):当要分配内存空间时,就查找空闲表中满足要求的空闲块,并使得剩余块是最小的。然 后把它分配出去,若 大小恰 好 合 适,则直 按 分配;若 有剩余块,则仍保 留该余下的空闲分区,并修改分区大小的起 始地 址。 内存回收:将 释放作业所在内存块的状态改为空闲状态,删 除 其作业名 ,设置 为空。并判 断 该空闲块是否 与其他 空闲块相 连 ,若 释放的内存空间与空闲块相 连 时,则合 并为同 一个空闲块,同 时修改分区大小及起 始地 址。 五 ﹑主 要数据结构和算法: 主 要数据结构: 华 北 电 力 大 学 实 验 报 告 定义一个空闲区说明表结构 struct freearea { int ID; //分区号 long size; //分区大小 long address; //分区地址 int state; //状态 }ElemType;...