实验报告学院(系)名称:计算机与通信工程学院姓名刘俊杰学号20115542 专业信息与计算科学班级2011 级 1 班实验项目实验二:存储器的分配与回收算法实现课程名称操作系统课程代码0668036 实验时间2013-11-27 3-4 节2013-11-29 7-8 节2013-12-4 3-4 节2013-12-6 7-8 节实验地点主校区 7-215 批改意见成绩教师签字:实验内容:1. 本实验是模拟操作系统的主存分配,运用可变分区的存储管理算法设计主存分配和回收程序,并不实际启动装入作业。2. 采用最先适应法、最佳适应法、最坏适应法分配主存空间。3. 当一个新作业要求装入主存时,必须查空闲区表,从中找出一个足够大的空闲区。若找到的空闲区大于作业需要量,这是应把它分成二部分,一部分为占用区,加一部分又成为一个空闲区。4. 当一个作业撤离时,归还的区域如果与其他空闲区相邻,则应合并成一个较大的空闲区,登在空闲区表中。5. 设计的模拟系统中,进程数不小于5,进程调度方式可以采用实验一中的任何一种。6. 运行所设计的程序,输出有关数据结构表项的变化和内存的当前状态。实验要求:1. 详细描述实验设计思想、程序结构及各模块设计思路;2. 详细描述程序所用数据结构及算法;3. 明确给出测试用例和实验结果;4. 为增加程序可读性,在程序中进行适当注释说明;5. 认真进行实验总结,包括:设计中遇到的问题、解决方法与收获等;6. 实验报告撰写要求结构清晰、描述准确逻辑性强;7. 实验过程中,同学之间可以进行讨论互相提高,但绝对禁止抄袭。代码实现:#include #include #define NULL 0 #define LEN1 sizeof(struct job)// 作业大小#define LEN2 sizeof(struct idle)// 空闲区单元大小#define LEN3 sizeof(struct allocate)// 已分配区单元大小int SPACE=100;// 定义内存空间大小int ORIGI=1;// 定义内存起始地址struct job// 定义作业{ int name; int size; int address; }; struct idle// 定义空闲区{ int size; int address; struct idle *next; }; struct allocate// 定义已分配区{ int name; int size; int address; struct allocate *next; }; struct idle *creatidle(void)// 建立空闲表{ struct idle *head; struct idle *p1; p1=(struct idle*)malloc(LEN2); p1->size=SPACE; p1->address=ORIGI; p1->next=NULL; head=p1; return(...