首次适应算法实验报告(共8页).docx
《首次适应算法实验报告(共8页).docx》由会员分享,可在线阅读,更多相关《首次适应算法实验报告(共8页).docx(8页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上操作操作系统大作业题目:首次适应算法分配内存学 号: 学生姓名: 张鲁云 班 级:计科121 首次适应算法分配内存一、 问题描述在内存分配中,动态分区是根据实际的进程需求,动态地为之分配空间。而首次适应算法分配时从表头指针开始查找可利用空间表,将找到的第一个大小不小于“请求”的空闲块的一部分分配给用户。可利用空间表本身既不按节点的初始地址有序,也不按节点的大小有序。用户释放内存,回收时只是将空闲块插入在链表的表头即可,此算法比较节省时间。二、 运行环境 VC6.0三、 算法思想。首次适应算法要求空闲分区链以地址递增的次序链接。在分配内存时,从链首开始查找,直到找到一个
2、大小能满足要求的空闲分区为止;然后按照作业大小,从该分区中划出一块内存空间分配给请求者,余下的空闲区仍留在空闲链中。若从链首到链尾都不能找到一个能满足要求的分区,则此次分配失败。四、 实验目的在计算机系统中,为了提高内存区的利用率,必须给电脑内存区进行合理的分配。本实验通过对内存区分配方法首次适应算法的使用,来了解内存分配的模式。五、 首次适应算法分配内存算法概要 (1) 结构体Typedef struct freearea/定义一个空闲区说明表结构 long size; /分区大小long address; /分区地址int state; /状态ElemType; / 线性表的双向链表存储结
3、构Typedef struct DuLNode ElemType data; structDuLNode *prior; /前趋指针structDuLNode *next; /后继指针 DuLNode,*DuLinkList;Status Initblock(intMAX_length)/开创带头结点的内存空间链表 block_first=(DuLinkList)malloc(sizeof(DuLNode); block_last=(DuLinkList)malloc(sizeof(DuLNode); block_first-prior=NULL; /头结点的前驱指针指向空 block_fir
4、st-next=block_last; /头结点的后继指针指向尾结点 block_last-prior=block_first; /尾结点的前驱指针指向头结点 block_last-next=NULL; /尾结点的后继指针指向空 block_last-data.address=0; /尾结点的地址是0 block_last-data.size=MAX_length; /分区大小是最大分区 block_last-data.state=Free; /状态是空 return OK; (2)主要函数说明:void alloc();进行内存分配的功能函数。Status free(int flag)将地址
5、为flag的分区的内存回收。Status First_fit(int request)创建进程空间的子函数;其中,参数request表示空闲分区链的链首指针;要配合函数alloc()使用。void show()查看内存中的分区情况。输入内存空间大小六、 流程图开辟内存空间内存分配情况显示输入操作序列号其他数输入有误,请重试!1Alloc输入分配区间大小3退出FFirst_fit request0 |request=0FTT分配成功!内存不足,分配失败!配大小不合适,请重试!输入回收区号分区回收2free(flag)七、 代码实现#include#include#include#define F
6、ree 0 /空闲状态#define Busy 1 /已用状态#define OK 1 /完成#define ERROR 0 /出错/#define MAX_length 640 /最大内存空间为640KB typedefint Status; int flag; typedefstructfreearea/定义一个空闲区说明表结构 long size; /分区大小long address; /分区地址int state; /状态ElemType; / 线性表的双向链表存储结构typedefstructDuLNode ElemType data; structDuLNode *prior; /
7、前趋指针structDuLNode *next; /后继指针 DuLNode,*DuLinkList; DuLinkListblock_first; /头结点DuLinkListblock_last; /尾结点Status alloc(int);/内存分配Status free(int); /内存回收Status First_fit(int);/首次适应算法void show();/查看分配Status Initblock();/开创空间表Status Initblock(intMAX_length)/开创带头结点的内存空间链表 block_first=(DuLinkList)malloc(s
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 首次 适应 算法 实验 报告
限制150内