实验报告撰写要求 实验报告要求具有以下内容: 一、实验目的 二、实验内容 三、实验要求 四、算法流程图 五、给出测试数据及运行结果 六、实验体会或对改进实验的建议 操作系统实验课第三次实验及代码 实验3 内存管理(2学时) 一、实验目的 通过实验加强对内存管理方法的理解和掌握。 二、实验内容 编写程序实现采用可变分区方法管理内存。 三、实验要求 1、在该实验中,采用可变分区方式完成对存储空间的管理(即存储空间的分配与回收工作)。 2、设计用来记录主存使用情况的数据结构:已分区表和空闲分区表或链表。 3、在设计好的数据结构上设计一个主存分配算法。 4、在设计好的数据结构上设计一个主存回收算法。其中,若回收的分区有上邻空闲分区和(或)下邻空闲分区,要求合并为一个空闲分区登记在空闲分区表的一个表项里。 5、(附加)若需要可以实现程序的浮动,对内存空间进行紧凑。 #include #include #include #include #include using namespace std; typedef struct node { int ID; //分区 ID struct node *next; //指向下个分区的指针 float beginAddress;//分区起始地址 float length;//分区长度 int ZY;//分区是否被占用,1 被占用,0 未被占用 } FQ; FQ *First=(FQ*)malloc(sizeof(FQ)); //链表的头指针 int FQCount=0;//分区的个数 void display();//显示内存状态 void FenPei(float len);//主存分配函数 void HuiShou(int id);//主存回收函数 int maxID=0; int main() { //初始化内存分区状态 fstream file; file.open("input.txt",ios_base::in|ios_base::out|ios_base::app); string s0; getline(file,s0); istringstream sin(s0); sin>>FQCount; FQ *temp=(FQ*)malloc(sizeof(FQ)); //当前指针 temp=First; for(string s;getline(file,s);) { FQ *fq=(FQ*)malloc(sizeof(FQ)); istringstream sin(s); sin>>fq->beginAddress; sin>>fq->length; sin>>fq->ZY; fq->ID=++maxID; fq->next=NULL; temp->next=fq; temp=fq; } cout<<"最初的内存分配状态:"<>choice; if(choice==1) { cout<<"请求分配内存\n"; cout<<"请输入要分配的内存的长...