欢迎来到天天文库
浏览记录
ID:30220202
大小:224.46 KB
页数:8页
时间:2018-12-28
《首次适应算法实验报告材料》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、操作操作系统大作业题目:首次适应算法分配内存学号:1207300142学生姓名:张鲁云班级:计科121首次适应算法分配内存一、问题描述在内存分配中,动态分区是根据实际的进程需求,动态地为之分配空间。而首次适应算法分配时从表头指针开始查找可利用空间表,将找到的第一个大小不小于“请求”的空闲块的一部分分配给用户。可利用空间表本身既不按节点的初始地址有序,也不按节点的大小有序。用户释放内存,回收时只是将空闲块插入在链表的表头即可,此算法比较节省时间。二、运行环境VC6.0三、算法思想。首次适应算法要求空闲分区链以地址递增的次序链接。在分配内存时,从链首开始查找,直到找到一个
2、大小能满足要求的空闲分区为止;然后按照作业大小,从该分区中划出一块内存空间分配给请求者,余下的空闲区仍留在空闲链中。若从链首到链尾都不能找到一个能满足要求的分区,则此次分配失败。四、实验目的在计算机系统中,为了提高内存区的利用率,必须给电脑内存区进行合理的分配。本实验通过对内存区分配方法首次适应算法的使用,来了解内存分配的模式。五、首次适应算法分配内存算法概要(1)结构体Typedefstructfreearea//定义一个空闲区说明表结构{longsize;//分区大小longaddress;//分区地址intstate;//状态}ElemType;//线性表的双向
3、链表存储结构TypedefstructDuLNode{ElemTypedata;structDuLNode*prior;//前趋指针structDuLNode*next;//后继指针}DuLNode,*DuLinkList;StatusInitblock(intMAX_length)//开创带头结点的内存空间链表{block_first=(DuLinkList)malloc(sizeof(DuLNode));block_last=(DuLinkList)malloc(sizeof(DuLNode));block_first->prior=NULL;//头结点的前驱指针
4、指向空block_first->next=block_last;//头结点的后继指针指向尾结点block_last->prior=block_first;//尾结点的前驱指针指向头结点block_last->next=NULL;//尾结点的后继指针指向空block_last->data.address=0;//尾结点的地址是0block_last->data.size=MAX_length;//分区大小是最大分区block_last->data.state=Free;//状态是空returnOK;}(2)主要函数说明:voidalloc();进行内存分配的功能函数。S
5、tatusfree(intflag)将地址为flag的分区的内存回收。StatusFirst_fit(intrequest)创建进程空间的子函数;其中,参数request表示空闲分区链的链首指针;要配合函数alloc()使用。voidshow()查看内存中的分区情况。输入内存空间大小一、流程图开辟内存空间内存分配情况显示输入操作序列号其他数输入有误,请重试!1Alloc输入分配区间大小3退出FFirst_fitrequest<0
6、
7、request==0FTT分配成功!内存不足,分配失败!配大小不合适,请重试!输入回收区号分区回收2free(flag)一、代码实现#in
8、clude#include#include#defineFree0//空闲状态#defineBusy1//已用状态#defineOK1//完成#defineERROR0//出错//#defineMAX_length640//最大内存空间为640KBtypedefintStatus;intflag;typedefstructfreearea//定义一个空闲区说明表结构{longsize;//分区大小longaddress;//分区地址intstate;//状态}ElemType;//线性表的双向链表存储结构t
9、ypedefstructDuLNode{ElemTypedata;structDuLNode*prior;//前趋指针structDuLNode*next;//后继指针}DuLNode,*DuLinkList;DuLinkListblock_first;//头结点DuLinkListblock_last;//尾结点Statusalloc(int);//内存分配Statusfree(int);//内存回收StatusFirst_fit(int);//首次适应算法voidshow();//查看分配StatusInitblock();//开创空间表Stat
此文档下载收益归作者所有