实验四 存储器管理1、目的与要求 本实验的目的是让学生熟悉存储器管理的方法,加深对所学各种存储器管理方案的了解;要求采纳一些常用的存储器分配算法,设计一个存储器管理模拟系统,模拟内存空间的分配和释放。2、实验内容① 设计一个存放空闲块的自由链和一个内存作业分配表,存放内存中已经存在的作业。② 编制一个根据首次适应法分配内存的算法,进行内存分配。③ 同时设计内存的回收以及内存清理(假如要分配的作业块大于任何一个空闲块,但小于总的空闲分区,则需要进行内存的清理,空出大块的空闲分区)的算法。3.实验环境①PC 兼容机②Windows、DOS 系统、Turbo c 2。0③C 语言4.实验提示一、数据结构1、自由链内存空区采纳自由链结构,链首由指针 freep 指向,链中各空区按地址递增次序排列.初启动时整个用户内存区为一个大空区,每个空区首部设置一个区头(freearea)结构,区头信息包括:Size 空区大小Next 前向指针,指向下一个空区Back 反向指针,指向上一个空区Adderss 本空区首地址2、内存分配表 JOBMAT系统设置一个 MAT,每个运行的作业都在 MAT 中占有一个表目,回收分区时清除相应表目,表目信息包括:Name 用户作业名Length 作业区大小Addr 作业区首地址二、算法存储分配算法采纳首次适应法,根据指针 freep 查找自由链,当找到第一块可满足分配请求的空区便分配,当某空区被分配后的剩余空闲空间大于所规定的碎片最小量 mini 时,则形成一个较小的空区留在自由链中。回收时,根据 MAT 将制定分区链入自由链,若该分区有前邻或后邻分区,则将他们拼成一个较大的空区。当某个分配请求不能被满足,但此时系统中所有碎片总容量满足分配请求的容量时,系统立即进行内存搬家,消除碎片.即将各作业占用区集中下移到用户内存区的下部(高地址部分),形成一片连续的作业区,而在用户内存区的上部形成一块较大的空闲,然后再进行分配。本系统的主要程序模块包括:分配模块 ffallocation,回收模块 ffcollection,搬家模块coalesce 及命令处理模块 menu,menu 用以模拟系统的输入,通过键盘命令选择进行分配模块、回收模块、内存查询以及退出的操作。程序运行的流程如下图:5.实验运行情况****************MENU***************You can select one of the following:(1)Require to be allocate。 请分配内存(2)Require to collecte the size。 将分配的内存回收(3)Check the ...