操作系统之内存分配与回收.doc

操作系统之内存分配与回收.doc

ID:48514830

大小:411.50 KB

页数:17页

时间:2020-02-06

操作系统之内存分配与回收.doc_第1页
操作系统之内存分配与回收.doc_第2页
操作系统之内存分配与回收.doc_第3页
操作系统之内存分配与回收.doc_第4页
操作系统之内存分配与回收.doc_第5页
资源描述:

《操作系统之内存分配与回收.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、......操作系统实验内存的分配与回收实验报告一、实验题目:内存的分配与回收二、实验内容:利用可变分区的首次适应算法,模拟内存的分配与回收。三、实验目的:掌握可变分区首次适应算法的原理以及其编程实现。.专业.专注.......一、实验过程:1、基本思想:可变分区分配是根据进程的实际需求,动态地为之分配内存空间。首次适应算法要求空闲空间链以地址递增的次序链接。进行内存分配时,从链表头部开始依次检索,找到第一个不小于请求空间大小的空闲空间进行分配。分配时需考虑碎片问题,若分配会导致碎片产生则将整块分区分配。内存的回收需要考虑四种情况:⑴回收分区前后两个分区都空闲,则需要和前后两个分区合并;

2、(2)回收分区只有前一分区空闲,则与前一分区合并;(3)回收分区只有后一分区空闲,则和后一分区合并;(4)回收分区独立,不考虑合并。2、主要数据结构:structFreeArea{链结点包含的数据:分区号、大小、起址、标记intID;intsize;longaddress;intsign;};structNode{双链表结点结构体:数据区、前向指针、后继指针FreeAreadata;structNode*prior;structNode*next;}*DLinkList;.专业.专注.......3、输入、输出:输入:I.内存分配时由键盘输入分区ID和大小;II.内存回收时由键盘输入需要

3、回收的分区ID;输出:输出内存的分配情况(按照地址从低到高)4、程序流程图:结束合并后回收合并后回收该分区后一个分区空闲该分区前一个分区空闲合并后回收该分区前后都空闲回收分区独立输入分区号显示分区情况结束开始退出Choice==0Choice==3Choice==2将分区从空闲链移出,并修改相应数据结构整块分配判断是否会有碎片内存不足判断剩余空间是否足够输入分区大小输入分区号输入有误验证该分区是否已经被占用Choice==1Choice>3或choice<0选择操作choice输出可选操作.专业.专注........专业.专注.......5、实验结果截屏:.专业.专注........专

4、业.专注.......5、源程序代码:#includeusingnamespacestd;#defineFree0//空闲状态#defineBusy1//已用状态#definePBusy2//碎片已用状态#defineFINISH1//完成#defineFINISH21//完成#defineERROR0//出错#definememory512//最大内存空间为(单位:KB)#definemin10//碎片最小值(单位:KB).专业.专注.......typedefstructFreeArea//空闲链数据{intID;intsize;longaddress;intsi

5、gn;};typedefstructNode//空闲连结构{FreeAreadata;structNode*prior;structNode*next;}*DLinkList;DLinkListhead;//头结点DLinkListtail;//尾结点intCreate()//初始化{head=(DLinkList)malloc(sizeof(Node));//分配内存.专业.专注.......tail=(DLinkList)malloc(sizeof(Node));head->prior=NULL;head->next=tail;tail->prior=head;tail->next=

6、NULL;tail->data.address=0;tail->data.size=memory;tail->data.ID=0;tail->data.sign=Free;returnFINISH;}intFirstFit(intID,intrequest)//首次适应算法{DLinkListtemp=(DLinkList)malloc(sizeof(Node));//新建作业的结点temp->data.ID=ID;temp->data.size=request;temp->data.sign=Busy;Node*p=head;//插入指针Pwhile(p){if(p->data.sig

7、n==Free&&p->data.size==request)//剩余大小恰好满足{.专业.专注.......p->data.sign=Busy;p->data.ID=ID;returnFINISH;break;}elseif(p->data.sign==Free&&p->data.size>request&&(p->data.size-request>min))//满足需求且有剩余且不产生碎片{temp->prior=p->pri

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。