课程设计报告名称
目录
1. 课程设计内容 1
2. 背景知识 1
3. 设计步骤与方法 2
3.1. 步骤1:设计内存分区结构 2
3.2. 步骤2:设计链表结构 2
3.3. 步骤3:初始化链表 2
3.4. 步骤4:写算法 2
3.5. 步骤5:内存回收 2
3.6. 步骤4:增加算法 2
3.7. 步骤4:完善程序 3
4. 设计结果及分析 3
5. 问题及心得体会 4
6. 课程设计评价(教师) 5
1.课程设计内容
用C++语言分别实现采用首次适应算法和最佳适应算法的动态分区分配过程alloc()和回收过程free()。空间分区和被占用分区通过链结构来管理。
2.背景知识
了解动态分区分配方式中使用的数据结构和分配算法,因为这几个算法都是基于顺序搜索的动态分区分配算法,所以使用链表来管理。每个算法都大同小异,只要掌握如果通过链表管理和每个算法的特点就能实现出来。
3.设计步骤与方法
3.1.步骤1:设计内存分区结构
在课堂上或者一般情况下,人们习惯把内存想象为一个矩形,从下往上分配空间,所以需要定义这个矩形的大小,则是内存的空间大小,然后是起始地址,再判断这个分区是否被占用。
3.2.步骤2:设计链表结构
与进程调度相似,通过第一个头结点往下找,但这里需要定义多一个前继指针用于分割区块。
3.3.步骤3:初始化链表
定义头尾两个结点有利于在后续的分配空间中开始和结束,对头尾两个结点的相关变量赋值。
3.4.步骤4:写算法
通过添加程序来查看是否分配正确,首次适应算法中通过头结点往下找状态为空闲的分区,如果适合则将此程序放入此分区,并且将多余的空间分割出来。
3.5.步骤5:内存回收
通过分区号来索引需要回收的内存,首先判断该分区是否存在或者是否已经被释放,然后确定回收的时候是否与前后的分区合并(当是空闲块时则合并)。
3.6.步骤4:增加算法
当步骤四与步骤五完善好的时候,这个时候只需要增加算法则可,因为内存回收各个算法都是一样的方法回收,因为时间关系目前只增加了实验的最低要求增加了一个最佳适应算法。
3.7.步骤4:完善程序
定义使程序更有选择性,例如一开始因为方便调试而定义的最大内存空间改成自定义大小,一些逻辑判断和用户体验。