一、设计要求: 1、设计主存分配和回收
采用可变分区存储管理,使用首次适应算法、循环首次适应算法、最佳适应算法三种算法完成设计
2、要求:采用分区说明表进行
设计一个空闲区说明表,设计一个某时刻主存空间占用情况表,作为主存当前使用基础
初始化空闲区和已分配区说明表的值
自己设计一个作业申请队列以及作业完成后的释放顺序,实现主存的分配和回收
把空闲区说明表的变化情况以及各作业的申请、释放情况显示、打印出来
设计分析 内存分配: ①.动态输入构造空闲区表,并显打印示构造好的空闲区表
②.键盘接收内存申请尺寸大小
③.根据申请,实施内存分配,并返回分配所得内存首址
④.分配完后,调整空闲区表(即扣除分配部分),并显示调整后的空闲区表
⑤.若分配失败,返回分配失败信息
内存回收 ①.动态输入构造空闲区表,并显示构造好的空闲区表
②.根据空闲区表,按内存回收的四种情况从键盘接收回收区域的内存首址与大小
③.回收区域,调整空闲区表(与前面空闲区相连、与后面空闲区相连、与前后空闲区相连则合并、与前后空闲区都不相连则插入该项),并显示调整后的空闲区表
三.实现原理: 1)本实验采用可变分区管理,使用首次适应算法,循环首次适应算法和最佳适应算法这三种比较常见的算法实现主存的分配和回收 1、可变分区管理是指在处理作业过程中建立分区,使分区大小正好适合作业的需求,并且分区个数是可以调整的
当要装入一个作业时,根据作业需要的主存量查看是否有足够的空闲空间,若有,则按需要量分割一个分区分配给该作业;若无,则作业不能装入,作业等待
随着作业的装入、完成,主存空间被分成许多大大小小的分区,有的分区被作业占用,而有的分区是空闲的
为了说明那些分区是空闲的,可以用来装入新作业,必须有一张空闲说明表 这个空闲区表可以用数组实现,也可以用链表实现
用数组实现的空闲区说明表格式如