哈尔滨理工大学课程设计报告
系统框架图:如图2
存储器动态分区分配模拟首次适应算法 最佳适应算法 最坏适应算法 图2 退出系统 分配内存 回收内存 返回上一级菜单
2、数据结构
(1)定义的全局变量:
#define SIZE 1000 // 内存初始大小 #define MINSIZE 5 // 碎片最小值
enum STATE { Free, Busy }//枚举类型,记录分区是否空闲的状态量 (2)定义的结构体:struct subAreaNode。记录分区的主要数据。 (3)函数
1)void intSubArea():分配初始分区内存。
2)int firstFit(int taskId, int size):首次适应算法实现函数,taskId为作业名,size为作业申请的内存大小。
哈尔滨理工大学课程设计报告
3)int bestFit(int taskId, int size):最佳适应算法实现函数,taskId为作业名,size为作业申请的内存大小。
4)int worstFit(int taskId, int size):最坏适应算法实现函数,taskId为作业名,size为作业申请的内存大小。
5)int freeSubArea(int taskId):内存回收函数,该函数主要用于实现内存的回收,根据回收内存的位置对分区进行合并操作。其中taskId为所需回收内存的作业号。
6)void showSubArea():显示空闲分区链情况。包括起始地址 ,空间大小 。工作状态 。作业号。
7)int main():主函数,主要用于显示操作界面,调用各个子函数等功能。
3、主要功能的流程图
(1)首次适应算法First_fit(int,int); 流程图(图3)
哈尔滨理工大学课程设计报告
开始 p = subHead.nxt,从链表的第一个节点开始寻找 Y p是否为空 N N p是否空闲,p->size大小是否满足作业需求 Y p->size与作业需求大小之差是否小于等于内存碎片 Y p中内存大小全部分配给作业 N 分割分区p,并把剩余内存存入新的执行完毕 结束 图3
哈尔滨理工大学课程设计报告
(2)最佳适应算法Best_fit(int,int); 流程图(图4)
哈尔滨理工大学课程设计报告
开始 subAreaNode*p= Y P是否N P是否满足最佳分配空间 N p=p-Y tar=p Y tarN 为tar->size-size是否小于等于内存碎片 N 切割tar,分配给作业,并把剩余内存重新链入链Y tar全部分配给作业 结束 图4