操作系统 动态内存管理

操作系统 动态内存管理

ID:6742899

大小:315.00 KB

页数:15页

时间:2018-01-24

操作系统 动态内存管理_第1页
操作系统 动态内存管理_第2页
操作系统 动态内存管理_第3页
操作系统 动态内存管理_第4页
操作系统 动态内存管理_第5页
资源描述:

《操作系统 动态内存管理》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、目 录一、课设目的1二、需求分析1三、函数设计2四、主函数设计2五、详细设计3六、详细代码设计7七、实验结果及相关说明12八、课设总结14九、参考文献1414一、课设目的操作系统是一门计算机专业的必修课程。此次课设选题为动态内存管理,让我们熟悉分区分配中所用到的数据结构,分区分配算法以及内存回收相关的问题,以加深我们对其的记忆,帮助我们理解内容,增强动手操作能力。二、需求分析动态分区分配是根据进程的实际需要,动态的为之分配内存空间。在实际可变分区分配时,将涉及到分配中所用的数据结构、分区分配算法和分区分配与回收操作。分区分配中用到的数据结构

2、一般为空闲分区表和空闲分区链。此次课设根据自身需求我选的时空闲分区链数据结构。为了实现对空闲分区的分配和链接,在每个分区的起始部分设置了一些用于控制分区分配的信息,在分区尾部则设置了一个后向指针,通过前后可以将所有的空闲分区链接成一个双向链。为了检索方便,在分区尾部重复设置状态位和分区大小表目。分区分配算法一般有首次适应算法,循环首次适应算法,最佳适应算法。这里我选的是首次适应算法。在分配内存时,从链首开始顺序查找,直至找到一个能满足要求的空闲区为止,然后再按照作业的大小,从该分区中划出一块内存空间分配给请求者,余下的空闲分区仍留在空链中。

3、内存分配,系统利用首次适应算法,从空闲分区链中找到所需大小的分区。内存回收,当进程运行完毕释放内存时,系统根据回收区的首地址,从空闲区链中找到相适应的插入点。当回收区与插入点的前一个空闲分区相邻接时,将回收区与插入点合并,不必为回收区分配新表项;当回收区与插入点的后一空闲分区相邻接时,将两分区合并,形成新的空闲分区;当回收区与插入点的前、后两个分区邻接时,将三个分区合并,大小、地址随之改变。14三、函数设计根据课设的实际需求,此次课设的函数设计如下:1.Init(memoryspace&L,intsize)初始化空间段,根据用户自身的实际需

4、求,可自行设计空闲链表的大小。2.choice(memoryspace&L)程序运行时,需要用户做出相应的选择,选择1时为新增加一条新作业,选择2时为删除一条已有作业。3.Add(memoryspace&L)执行choice函数时将会调用到的函数,用于增加一个新的作业。4.Display(constmemoryspaceL)执行choice函数时将会调用到的函数,用于删除一个作业。5.deltask(constmemoryspaceL)此函数时用于输出已经分配和空闲资源情况。6.voidsetfree(memoryspace&L)此函数用于

5、内存的回收。四、主函数设计主函数设计的比较简单,主要是新建一个空闲链,已经执行choice函数,调用所需的其他函数。主函数流程图如下所示:14五、详细设计各个主要函数的流程图如下所示:1.choice(memoryspace&L)choice=2Add(L);setfree(L);Display(L)choice=1coutchoice;NYNYcoutdeltask(L);setfree(L);Display(L);14cout<

6、

7、choice!=2NY2.Display(constmemoryspaceL

8、)3.setfree(memoryspace&L)144.voiddeltask(constmemoryspaceL)5.voidAdd(memoryspace&L)14coutp->state==0pcout<next;memoryspaceq=newLNode;q=p;q->next=q->next->next;!pp->size==0new_size<=0pp=L->next;intnew_size;14六、详细代码设计#include#includ

9、etypedefstructLNode{intsize;intstate;chartask_name;structLNode*next;}LNode,*memoryspace;voidInit(memoryspace&L,intsize);//初始化空闲链voidchoice(memoryspace&L);//用户操作选择voidAdd(memoryspace&L);//添加作业voidDisplay(constmemoryspaceL);//显示作业voiddeltask(constmemoryspaceL);//删除

10、作业voidsetfree(memoryspace&L);//内存回收voidmain(){memoryspaceL=newLNode;//memoryspaceintN;cou

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

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

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