0121010340518
课 程 设 计
题 目 模拟设计动态分区存储管理的分配与
回收
学 院 计算机科学与技术学院
专 业 班 级
姓 名
指导教师
吴利军
2013 年 01 月 16 日
学 号:
课程设计任务书
学生姓名: 专业班级:
指导教师: 吴利军 工作单位: 计算机科学与技术学院
题 目: 模拟设计动态分区存储管理的分配与回收 初始条件:
1.预备内容:阅读操作系统的内存管理章节内容,理解动态分区存储管理,掌握动态分区管理内存的分配和回收过程。
2.实践准备:掌握一种计算机高级语言的使用。
要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写
等具体要求)
1.采用动态分区管理方案实施内存分配和回收。能够处理以下的情形
⑴ 能够输入给定的内存大小,进程的个数,每个进程所需内存空间的大小; ⑵ 当某进程提出申请空间的大小后,显示能否满足申请,以及为该进程分配资源后有关内存空间使用的情况;
⑶ 当某进程撤消时,显示内存回收后内存空间的使用情况(注意回收后的合并)。
2.设计报告内容应说明: ⑴ 需求分析;
⑵ 功能设计(数据结构及模块说明); ⑶ 开发平台及源程序的主要部分;
⑷ 测试用例,运行结果与运行情况分析; ⑸ 自我评价与总结:
i)你认为你完成的设计哪些地方做得比较好或比较出色; ii)什么地方做得不太好,以后如何改正;
iii)从本设计得到的收获(在编写,调试,执行过程中的经验和教训); iv)完成本题是否有其他方法(如果有,简要说明该方法);
时间安排:
设计安排一周:周1、周2:完成程序分析及设计。
周2、周3:完成程序调试及测试。 周4、周5:验收、撰写课程设计报告。
(注意事项:严禁抄袭,一旦发现,一律按0分记)
指导教师签名: 年 月 日 系主任(或责任教师)签名: 年 月 日
模拟设计动态分区存储管理的分配与回收
1.需求分析
1.1动态分区
动态分区分配又称为可变式分区分配,是一种动态划分存储器的分区方法。 不事先将内存划分成一块块的分区,而是在作业进入内存时,根据作业的大小动态地建立分区,并使分区的大小正好适应作业的需要。因此系统中分区的大小是可变的,分区的数目也是可变的。这种分配方法管理简单,只需小量的软件和硬件支持,便于用户了解和使用。进程的大小与某个分区大小相等,从而主存的利用率有所提高。
动态分区虽然解决了固定分区所造成的内存浪费问题,但随着进程的动态变化,系统也将进行一系列的内存空间的分配和回收活动,每个进程所释放的内存空间就作为一个空闲区加以再分配。
由于再分配时只能分给不大于当前空闲区的进程,所以每个空闲区再分配时多数情况下会变成两个区:一个区分给当前请求内存空间的进程,剩下的空间依然作为空闲区等待分配。这样,分配后剩余的空闲区将会越分越少,从而导致内存中存在大量分散的小空闲区,这种小得不能再利用的空闲区称之为“碎片”。 1.2分配内存
系统利用某种分配算法,从空闲分区表/链中找到所需大小的分区。
分区的切割:设请求的分区大小为u.size,空闲分区的大小为m.size,若m.size-u.size?size(size是事先规定的不再切割的剩余分区的大小),说明多余部分大小,可不再切割,将整个分区分配给请求者;否则,从该分区中按请求的大小划分出一块内存空间分配出去,余下的部分仍留在空闲分区表/链中,然后,将分配区的首址返回给调用者。 1.3回收内存
当作业执行结束时,应回收已使用完毕的分区。系统根据回收分区的大小及首地址,在空闲分区表中检查是否有邻接的空闲分区,如有,则合成为一个大的空闲分区,然后修改有关的分区状态信息。回收分区与已有空闲分区的相邻情况有以下四种:
①回收分区上邻接一个空闲分区,合并后首地址为空闲分区的首地址,大小为二者之和。
②回收分区下邻接一个空闲分区,合并后首地址为回收分区的首地址,大小为二者之和。
③回收分区上下邻接空闲分区,合并后首地址为上空闲分区的首地址,大小为三者之和。
④回收分区不邻接空闲分区,这时在空闲分区表中新建一表项,并填写分区大小等信息。
2.功能设计
2.1数据结构
2.1.1空闲分区表
用来登记系统中的空闲分区(分区号,分区起始地址,分区大小及状态). 分区号 大小KB 起始地址状态 KB 1 32 352 空闲 2 … … 空表目 3 520 504 空闲 4 … … 空表目