实验四 内存管理模拟 1.实验要求: 模拟动态分区管理方式来管理内存,实现内存的分配和回收,观察内存空闲链表和内存分配表在内存分配和回收过程中数据的变化。 2.实验内容 要求随机产生进程或者由用户输入进程相应信息,实现动态内存管理:设计主界面以灵活选择某算法,主要实现以下算法:首次适应算法、最佳适应算法、最坏适应算法。实现的主要功能:内存的分配、内存的回收,内存空闲链表的变化、内存分配表的变化、内存分配和回收过程的模拟。 3.实验预备内容 (1)阅读和学习教材关于存储器管理和虚拟存储器管理的内容(连续存储管理和离散存储管理),了解相关的内存分配算法、内存分配和回收相关机制,内存管理过程中需要的数据结构。 (2)熟悉 Visual C++的简单使用。 4.实验环境 (1)一台运行 Windows 2000 professional操作系统的计算机。 (2)选用turbo c、visual c++、Delphi、c++ builder或visual basic等任何一种语言。 5.实验时间 4个机时。 6.参考算法 #include #include #include #define MIN 5 //碎片最小容量 #define MAX 1024 //存储区的最大容量 #define MATSIZE 100 //作业分配表的最大容量 #define NOT_EXIST -1 //不存在 #define SUCCESS 1 //成功 #define FAILED 0 //失败 #define EXIT 0 //退出 #define NO_OPERATE -1//无操作 //+*+*+*+*+ 程序主要变量 +*+*+*+*+ typedef struct Free_Area FREEAREA;//***** 定义"空闲块链表"结构 ***** typedef struct Free_Area{ int size; //空区大小(以字节计),包括区头所占空间 int address; //空闲块首地址 FREEAREA *next; //前向链指针,指向下一个空区 FREEAREA *back; //反向链指针,指向上一个空区 } FREEAREA; //********** ********** typedef struct MAT_Table //***** 定义"作业分配表"结构 ***** { int name; //用户作业名 int length; //作业所占分区大小 int addr; //作业所占分区首地址 } MATS; //********** ********** MATS MAT[MATSIZE]; //定义"作业分配表"变量 FREEAREA *head; //定义"空闲块链表"变量 int FreeAreaLength;//空闲分区的数目 int MAT_Length;//作业分配表的数目 //+*+*+*+*+ end 变量 +*+*+*+*+ // !*!*!*!*! 程序主要函数 !*!*!*!*! void init(); //初始化作业分配表 void...