操作系统课程设计---动态分区分配存储管理

上传人:ji****72 文档编号:27374463 上传时间:2018-01-09 格式:DOC 页数:25 大小:184.50KB
返回 下载 相关 举报
操作系统课程设计---动态分区分配存储管理_第1页
第1页 / 共25页
操作系统课程设计---动态分区分配存储管理_第2页
第2页 / 共25页
操作系统课程设计---动态分区分配存储管理_第3页
第3页 / 共25页
操作系统课程设计---动态分区分配存储管理_第4页
第4页 / 共25页
操作系统课程设计---动态分区分配存储管理_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《操作系统课程设计---动态分区分配存储管理》由会员分享,可在线阅读,更多相关《操作系统课程设计---动态分区分配存储管理(25页珍藏版)》请在金锄头文库上搜索。

1、1操作系统课程设计动 态 分 区 分 配 存 储 管 理吕 霆20102675计 算 机 10-01 班设计题目学 号专业班级学生姓名号指导教师第一章 课程设计概述1.1 设计任务:动态分区分配存储管理1.2 设计要求建立描述内存分配状况的数据结构; 建立描述进程的数据结构; 使用两种方式产生进程:(a)自动产生, (b)手工输入; 在屏幕上显示内存的分配状况、每个进程的执行情况; 建立分区的分配与回收算法,支持紧凑算法; 时间的流逝可用下面几种方法模拟:(a)按键盘,每按一次可认为过一个时间单位; (b) 响应 WM_TIMER; 将一批进程的执行情况存入磁盘文件,以后可以读出并重放; 支持

2、算法:首次适应算法、循环首次适应算法、最佳适应算法:最坏适应算法。1.3 设计目的旨在让我们更好的了解动态分区管理方面的知识.第二章 原理及算法描述2.1 动态分区分配算法原理首次适应算法* 算法概述:分配内存时,从链首开始顺序查找,找到满足的空闲分区则划出空间分配,余下的空闲空间仍保留在空闲链表中* 实现方法:分配时从数组第一个元素开始比较,若符合条件则将该元素减去对应作业的值循环首次适应算法* 算法概述:由首次适应算法演变,只是每次分配改为由上一次找到的空闲分区开始查找* 实现方法:在首次适应算法的基础上增加一个值用于记录找到的空闲分区的位置最佳适应算法* 算法概述:每次为作业分配内存时,

3、总是把能满足要求、又是最小的空闲分区3分配给作业* 实现方法:我们决定每次分配先把空闲分区按从小到大的顺序排列,然后将第一个匹配分区分配给作业最坏适应算法* 算法概述:每次为作业分配内存时,总是挑选一个最大的空闲分区分割给作业使用* 实现方法:算法与最佳适应算法几乎相同,仅在排序时把空闲分区表按从大到小的顺序排列,所以未作详细注释回收分区当进程运行完毕释放内存时,系统根据回收区的首址,从空闲区链(表)中找到相应的插入点,此时可能出现以下四种情况之一;1)回收区与插入点的前一个空闲分区 F1 相邻接,此时应将回收区与插入点的前一分区合并,不必为回收区分配新表项,而只需修改其前一分区 F1 的大小

4、.2)回收分区与插入点的后一空闲分区 F2 相邻接,此时也可将两分区合并,形成新的空闲分区,但用回收区的首址作为新空闲区的首址,大小为两者之和.3)回收区同时与插入点的前,后两个分区邻接,此时将三个分区合并,使用 F1 的表项和 F1 的首址,取消 F2 的表项,大小为三者之和.4)回收区既不与 F1 相邻接,又不与 F2 邻接.这时应为回收区单独建立一新表项,填写回收区的首址和大小,并根据其首址插入到空闲链中的适当位置.紧凑算法通过移动内存中的作业的位置,以把原来多个分散的小分区拼接成一个大分区的方法.第三章 开发环境此程序是本人利用 c+语言在 vs2012 的开发环境中实现的 第四章 程

5、序实现-数据结构#include #include #include using namespace std;ofstream stream;/输出流对象int ary1204;/内存分配状态int ary2203;/空闲分区状态int ary310;/进程分配状态4int recycle;/需要回收的盘块序号 int id1;/算法选择号int m;/内存区数int n;/空闲区数int q;/进程数int r=0;/循环首次适应算法:对应的这次查找到的空闲分区序号/打印输出函数void vision() int i;int j;if(id1=1)stream.open(first_fit.

6、txt, ios:app);if(id1=2)stream.open(nextfirst_fit.txt, ios:app);if(id1=3)stream.open(best_fit.txt,ios:app);if(id1=4)stream.open(worst_fit.txt, ios:app);if(id1=5)stream.open(compact.txt,ios:app);if(id1=6)stream.open(huishou.txt,ios:app);coutchoice2;q=choice2;coutj;ary3i=j;coutk;coutx;ary1i1=x;/大小couty

7、;if(y=2)n+;ary1i3=y;/状态ary102=0;ary112=ary101;for(int i=2;i=ary3i)/进程占用空间小于等于其中一个空闲区的大小coutary2j0+1;k-)ary1k-10=ary1k-20+1;ary1k-11=ary1k-21;ary1k-12=ary1k-22;ary1k-13=ary1k-23;l=ary2j0;9ary1l0=l+1;ary1l1=d-ary3i;ary1l2=ary1l-11+ary1l-12;ary1l3=0;k=0;for(id2=0;id2k;s-)ary1s0=ary1s-10+1;ary1s1=ary1s-

8、11;ary1s2=ary1s-12;11ary1s3=ary1s-13;/改变第 k+1 块内容:对应的数组是 ary1kary1k0=ary1k-10+1;ary1k1=d-ary1k-11;ary1k2=ary1k-11+ary1k-12;/-/-改变空闲表分配情况-k=0;for(id2=0;id2=ary3i)&(eary2s1)/满足分配要求e=ary2s1;j=s;if(jary2j0+1;l-)ary1l-10=ary1l-20+1;ary1l-11=ary1l-21;ary1l-12=ary1l-22;ary1l-13=ary1l-23;k=ary2j0;ary1k0=k+1

9、;ary1k1=d-ary1k-11;ary1k2=ary1k-11+ary1k-12;ary1k3=0;k=0;for(id2=0;id2=ary3i)&(eary2j0+1;l-)ary1l-10=ary1l-20+1;ary1l-11=ary1l-21;ary1l-12=ary1l-22;ary1l-13=ary1l-23;k=ary2j0;ary1k0=k+1;ary1k1=d-ary1k-11;ary1k2=ary1k-11+ary1k-12;ary1k3=0;k=0;for(id2=0;id2choice1; if(choice1=1)num=rand()q=num;int id3=2+rand()%8;m=id3;/内存区数量create_apply();create_pro();if(choice1=2) create_zuoye();create_fenqu();vision(); coutid1;if(id1=1) first_fit();if(id1=2) next_fit();if(id1=3) best_fit();if(id1=4) worst_fit();if(id1=5) compact();if(id1=6) coutrecycle;if(recyclem)|(recycleo;flag=o;25

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号