欢迎来到天天文库
浏览记录
ID:57281848
大小:60.00 KB
页数:7页
时间:2020-08-09
《实验二 主存储器空间的分配和回收.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验二主存储器空间的分配和回收1、实验内容主存储器空间的分配和回收。2、实验目的计算机系统不仅要有足够容量、存储速度高、稳定可靠的主存储器,而且要能合理的分配和使用者且存储空间。主存的分配和回收的实现是与主存储器的管理方式有关的。本实验有助于了解在不同的存储管理方式下,应怎样实现主存空间的分配和回收。3、实验题目在可变分区管理方式下,采用最先适应算法实现主存空间的分配和回收。4、数据结构structBlock//空闲链结构体{stringname;//作业名intaddress;//分区首地址intsize;//分区大小intstate;//分区转态structBl
2、ock*next;//前向指针structBlock*front;//后向指针};——构造一个空闲链structUsed//已分配分区结构体{Block*usedArea;Used*next;};——分配分区结构体voidAllocate(stringreqName,intreqSize)//分配函数{Block*p=freeHead->front;Used*r1,*r2;while(p!=NULL){if(reqSizesize)//如果请求的分区的大小小于一个空闲分区的大小{Used*temp=newUsed;temp->usedArea=p;Block
3、*q=newBlock;*q=*p;temp->usedArea->name=reqName;temp->usedArea->size=reqSize;temp->usedArea->front=q;temp->usedArea->state=1;q->size=q->size-reqSize;q->address=q->address+reqSize;q->next->front=q;if(q->front!=NULL)q->front->next=q;r1=usedHead;r2=usedHead->next;while(r2!=NULL&&r2->usedAr
4、ea->addressusedArea->address){r1=r2;r2=r2->next;}r1->next=temp;temp->next=r2;break;}elseif(reqSize==p->size)//如果请求的分区的大小等于一个空闲分区的大小{Used*temp=newUsed;temp->usedArea=p;temp->usedArea->name=reqName;temp->usedArea->state=1;p->next->front=p->front;if(p->front!=NULL)p->front->next=p-
5、>next;r1=usedHead;r2=usedHead->next;while(r2!=NULL&&r2->usedArea->addressusedArea->address){r1=r2;r2=r2->next;}r1->next=temp;temp->next=r2;break;}p=p->front;}——构建一个链表,实现内存分配。5、源程序#include#includeusingnamespacestd;structBlock//空闲链结构体{stringname;//作业名intaddress;/
6、/分区首地址intsize;//分区大小intstate;//分区转态structBlock*next;//前向指针structBlock*front;//后向指针};structUsed//已分配分区结构体{Block*usedArea;Used*next;};Block*freeHead;//带表头附加节点的空闲链头指针Used*usedHead;//带表头附加结点的已分配分区头指针boolInitValue()//初始化函数{cout<<"本程序设立的操作功能:1-申请资源2-释放资源3-打印信息"<7、ad->size=0;freeHead->next=NULL;freeHead->state=1;usedHead=newUsed;Block*p=newBlock;p->address=0;usedHead->usedArea=p;usedHead->next=NULL;Block*temp=newBlock;cout<<"请先输入主存大小(k):"<>temp->size;temp->address=0;temp->state=0;temp->next=freeHead;temp->front=NULL;freeHead->front=t
7、ad->size=0;freeHead->next=NULL;freeHead->state=1;usedHead=newUsed;Block*p=newBlock;p->address=0;usedHead->usedArea=p;usedHead->next=NULL;Block*temp=newBlock;cout<<"请先输入主存大小(k):"<>temp->size;temp->address=0;temp->state=0;temp->next=freeHead;temp->front=NULL;freeHead->front=t
此文档下载收益归作者所有