操作系统实验报告存储器的分配与回收算法实现姓 名: 学 号: 09070009 班 级: 09 计算机 1 一、实验名称及要求1、实验名称:存储器的分配与回收算法实现2、实验要求: 学生应正确地设计有关的数据结构与各个功能模块,画出程序的流程图,编写程序,程序执行结果应正确。3、实验方式: 学生通过实验室的微机上机,实际调试程序。。4、实验环境: Windows 操作系统环境下的个人微机 C或C++程序设计语言二、实验内容1本实验是模拟操作系统的主存分配,运用可变分区的存储管理算法设计主存分配和回收程序,并不实际启动装入作业。2采纳最先适应法、最佳适应法、最坏适应法分配主存空间。3当一个新作业要求装入主存时,必须查空闲区表,从中找出一个足够大的空闲区。若找到的空闲区大于作业需要量,这是应把它分成二部分,一部分为占用区,加一部分又成为一个空闲区。4当一个作业撤离时,归还的区域假如与其他空闲区相邻,则应合并成一个较大的空闲区,登在空闲区表中。5运行所设计的程序,输出有关数据结构表项的变化和内存的当前状态。三、实验程序#include
#include #include typedef struct FreeLink{//定义自由链struct FreeLink *prior;char name;int start;int size;bool flag;struct FreeLink *next;}* ptr,*head;head top;ptr p;void print(){//将内存分配情况打印到屏幕上p=top;cout<<"************************内存分配情况表************************"<name<<"\t\t"<start<<"\t\t"<size<<"\t\t";if(p->flag==false){cout<<"空闲"<next;}while(p!=NULL);}void clear(){//结束操作时清空“内存”以备其他操作do{p=top;top=top->next;free(p);}while(top!=NULL);}void asc(ptr &p){//最佳适应法的内存分配函数int min;ptr op;FreeLink *fl=(FreeLink *)malloc(sizeof(FreeLink));cout<<"请输入要分配内存的进程名"<>fl->name;cout<<"请输入要分配内存的大小"<>fl->size;min=256;fl->flag=true;do{if(p->flag==false&&p->size<=min&&p->size>=fl->size){min=p->size;op=p;}p=p->next;}while(p!=NULL);if(op->size>fl->size){ fl->start=op->start; op->start=fl->start+fl->size; op->size=op->siz...