1、 1 操作系统课程设计 动态分区分配存储管理 计算机10-01班 设计题目 学 号 专业班级 学生姓名 指导教师 第一章第一章 课程设计课程设计概述概述 1.1 1.1 设计设计任务任务: : 动态分区分配存储管理 1.2 1.2 设计要求设计要求 建立描述内存分配状况的数据结构; 建立描述进程的数据结构; 使用两种方式产生进程: (a)自动产生, (b)手工输入; 在屏幕上显示内存的分配状况、每个进程的执行情况; 建立分区的分配与回收算法,支持紧凑算法; 时间的流逝可用下面几种方法模拟: (a)按键盘,每按一次可认为过一个时间单位; (b) 响应 WM_TIMER; 将一批进程的执行情况存入
2、磁盘文件,以后可以读出并重放; 支持算法:首次适应算法、循环首次适应算法、最佳适应算法:最坏适应算法。 1.3 1.3 设计目的设计目的 旨在让我们更好的了解动态分区管理方面的知识. 第二章第二章 原理及算法描述原理及算法描述 2.12.1动态分区分配算法原理动态分区分配算法原理 首次适应算法首次适应算法 * 算法概述:分配内存时,从链首开始顺序查找,找到满足的空闲分区则划出空 间分配,余下的空闲空间仍保留在空闲链表中 * 实现方法:分配时从数组第一个元素开始比较,若符合条件则将该元素减去对 应作业的值 循环首次适应算法循环首次适应算法 * 算法概述:由首次适应算法演变,只是每次分配改为由上一
3、次找到的空闲分区 开始查找 * 实现方法:在首次适应算法的基础上增加一个值用于记录找到的空闲分区的位 置 最佳适应算法最佳适应算法 * 算法概述:每次为作业分配内存时,总是把能满足要求、又是最小的空闲分区 3 分配给作业 * 实现方法:我们决定每次分配先把空闲分区按从小到大的顺序排列,然后将第 一个匹配分区分配给作业 最坏适应算法最坏适应算法 * 算法概述:每次为作业分配内存时,总是挑选一个最大的空闲分区分割给作业 使用 * 实现方法:算法与最佳适应算法几乎相同,仅在排序时把空闲分区表按从大到 小的顺序排列,所以未作详细注释 回收分区回收分区 当进程运行完毕释放内存时,系统根据回收区的首址,从
4、空闲区链(表)中找到相应 的插入点,此时可能出现以下四种情况之一; 1)回收区与插入点的前一个空闲分区F1相邻接,此时应将回收区与插入点的前一分 区合并,不必为回收区分配新表项,而只需修改其前一分区 F1 的大小. 2)回收分区与插入点的后一空闲分区 F2 相邻接,此时也可将两分区合并,形成新的 空闲分区,但用回收区的首址作为新空闲区的首址,大小为两者之和. 3)回收区同时与插入点的前,后两个分区邻接,此时将三个分区合并,使用F1的表项 和 F1 的首址,取消 F2 的表项,大小为三者之和. 4)回收区既不与 F1 相邻接,又不与 F2 邻接.这时应为回收区单独建立一新表项,填 写回收区的首址和大小,并根据其首址插入到空闲链中的适当位置. 紧凑算法紧凑算法 通过移动内存中的作业的位置,以把原来多个分散的小分区拼接成一个大分区的方 法. 第三章第三章 开发开发环境环境 此程序是本人利用 c+语言在 vs2012 的开发环境中实现的 第四第四章章 程序实现程序实现- - -数据结构数据结构 #include #include #inc