1、 操作系统原理操作系统原理 课程设计报告课程设计报告 题目:题目: 存储器的动态分区算法模拟存储器的动态分区算法模拟 所在学院: 班 级: 学 号: 姓 名: 指导教师: 成 绩: 2013 年 1 月 16 目录目录 一、一、 课程设计目的课程设计目的. 1 1 1、背景、背景 . 1 2 2、目的、目的 . 1 二、二、 课题任务描述课题任务描述. 1 三、三、 课题研发相关知识课题研发相关知识 1 1 1、 首次适应算法(首次适应算法(first fitfirst fit) 1 2 2、 最佳适应算法(最佳适应算法(best fitbest fit) 1 3 3、 最坏适应算法(最坏适应
2、算法(worst fitworst fit) 2 4 4、 回收内存回收内存 2 5 5、库函数的介绍、库函数的介绍 2 四、四、 课题设计课题设计 . 2 1 1、 总体结构总体结构 2 2 2、 数据结构数据结构 4 3 3、 主要功能的流程图主要功能的流程图 . 5 4 4、 程序的技术路线程序的技术路线8 五、五、 带有详细注解的源程序带有详细注解的源程序 8 六、六、 运行与测试运行与测试 . 18 七、七、 收获及改进意见收获及改进意见 20 OS课程设计.存储器动态分区分配算法模拟 第 1 页 一、一、 课程设计目的课程设计目的 1 1、背景、背景 主存是 CPU 可直接访问的信
3、息空间, 合理而有效的使用贮存将在很大程度上 影响整个计算机系统的性能。 本课题要求模拟实现分区式主存管理机制。 模拟实现各种分区管理方法以及 相应的主存分配以及回收算法。 2 2、目的、目的 通过该课题进一步加深对可变分区存储机制的理解。 加深对存储器动态分区 分配算法的认识。掌握“首次适应算法” 、 “下次适应算法” 、 “最佳适应算法发” 、 “最坏适应算法”的内存分配过程。掌握内存的回收策略。 二、二、 课题任务描述课题任务描述 1、设计可用的内存空闲空间,并能动态输入用户作业所需的内存大小。 2、编程模拟各种分配算法的实施过程,允许自行选择如“首次适应算法” 、 “下次适应算法” 、
4、 “最佳适应算法发” 、 “最坏适应算法”等常用算法,要求实现 不少于三种算法。 3、实现内存的回收。要求考虑回收时的内存合并问题。 三、三、 课题研发相关知识课题研发相关知识 (包含所用库函数的介绍)(包含所用库函数的介绍) 1 1、首次适应算法(首次适应算法(first fitfirst fit) FF 算法要求空闲分区链以地址递增的次序链接。在分配内存时,从链首开 始顺序查找,直至找到一个大小能男足要求的空闲分区位置;然后再按照作业的 大小,从该分区中划出一块内存空间分配给请求者,余下的空闲分区仍留在空闲 链中。若从链首直至链尾都不能找到一个能满足要求的分区,则此次内存分配失 败,返回。
5、但是,低址部分不断被划分,会留下许多难以利用的很小的空闲分区。 2 2、最佳适应算法(最佳适应算法(best fitbest fit) 所谓“最佳”是指每次为作业分配内存时,总是把能满足要求、又是最小的 空闲分区分配给作业,避免“大材小用” 。为了加速寻找,该算法要求将所有的 空闲分区按其容量以从小到大的顺序形成一空闲分区链。这样,第一次找到的能 满足要求的空闲区,必然是最佳的。这样,在存储器中会留下许多难以利用的小 空闲区。 OS课程设计.存储器动态分区分配算法模拟 第 2 页 3 3、最坏适应算法(最坏适应算法(worst fitworst fit) 要扫描整个空闲分区表或链表,总是挑选一
6、个最大的空闲区分割给作业使 用,其优点是可使剩下的空闲区不至于太小,产生碎片的几率最小,对中小作业 有力,查找效率很高。但是它会使存储器中缺乏大的空闲分区。 4 4、回收内存回收内存 当进程运行完毕释放内存时,系统根据会收取的首址,从空闲区链中找到相 应的插入点,并考虑回收区前后是否有空闲分区,如果有,则把两个分区合并成 一个大的空闲分区。 5 5、库函数的介绍、库函数的介绍 1)stdio 就是指 “standard buffered input 宏例如: EXIT_FALIRE,EXIT_SUCCESS,RAND_MAX 和 MB_CUR_MAX。 以下是一些常用的函数: dec 置基数为 10 相当于“%d“; hex 置基数为 16 相 当于“%X“;oct 置基数为 8 相当于“%o“;setw(n) 设域宽为