您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 公司方案 > 动态分区分配存储管理系统
动态分区分配存储管理系统学院专业学号学生姓名指导老师2014年3月19日目录一、设计目的与内容..........................................................................................................................31、设计目的..........................................................................................................................32、设计内容..........................................................................................................................33、设计要求..........................................................................................................................3二、算法的基本思想..........................................................................................................................31、首次适应算法..................................................................................................................32、循环首次适应算法..........................................................................................................3三、主要功能模块流程图..................................................................................................................41、主函数流程图........................................................................................................................42、首次适应算法流程图............................................................................................................53、循环首次适应算法流程图....................................................................................................6四、系统测试......................................................................................................................................7输入界面,按要求输入:...........................................................................................................7五、结论..............................................................................................................................................8六、源程序..........................................................................................................................................9一、设计目的与内容设计的目的操作系统课程设计是计算机专业重要的教学环节,它为学生提供了一个既动手又动脑,将课本上的理论知识和实际有机的结合起来,独立分析和解决实际问题的机会。进一步巩固和复习操作系统的基础知识。培养学生结构化程序、模块化程序设计的方法和能力。提高学生调试程序的技巧和软件设计的能力。提高学生分析问题、解决问题以及综合利用C语言进行程序设计的能力。设计内容:用高级语言编写和调试一个动态分区内存分配程序,演示实现下列两种动态分区分配算法1.首次适应算法2.循环首次适应算法设计要求:1.内存中有0-100M的空间为用户程序空间,最开始用户空间是空闲的2.作业数量、作业大小、进入内存时间、运行时间需要通过界面进行输入3.可读取样例数据(要求存放在外部文件中)进行作业数量、作业大小、进入内存时间、运行时间的初始化4.根据作业进入内存的时间,采用简单的先进先出原则进行从外存到内存的调度,作业具有等待(从外存进入内存执行)、装入(在内存可执行)、结束(运行结束,退出内存)三种状态。(为了简化,不考虑CPU的调度与切换,运行时间为作业在内存中驻留的时间)5.能够自动进行内存分配与回收,可根据需要自动进行紧凑与拼接操作,所有过程均有动态图形变化的显示6.采用可视化界面,可随时暂停显示当前内存分配和使用情况图。二、算法的思想1、首次适应算法空闲分区链以地址递增的次序链接,分配内存时,从链首开始顺序查找,直至找到一个大小能满足要求的空闲分区为止;然后再按照作业的大小,从该分区中划出一块内存空间分配给请求者,取消的空闲分区仍留在空闲链中。若从链首直至链尾都不能找到一个能满足要求的分区,则此次内存分配失败,返回。2、循环首次适应算法在为进程分配内存空间时,不再是每次都从链首开始查找,而是从上次找到的空闲分区的下一个空闲分区开始查找,直至找到一个能满足要求的空闲分区,从中划出一块与请求大小相等的内存空间分配给作业三、主要功能模块流程图主函数否是否是否是fInputchoice(ch)Initpartitionlist(p)Ch=1breakCh=2multiplexmultiplex结束开始Dulinklistp首次适应算法:否是否是开始T&&numDulinklistpll=block...Intx=0XnmultiplexX++multiplexmultiplex结束Intt=1循环首次适应算法否是否是四、系统测试开始T&&numDulinklistpll=block...Intm=0mnmultiplexm++multiplexmultiplex结束Intt=1程序运行实例如下:输入界面,按要求输入:五、结论作业采用数组形式进行存储,起初想用数组模拟分区,但划分记录比较不易,时间空间复杂度较大,容易混乱,遂决定用链表形式模拟分区情况。基本能运行符合要求,能模拟出动态分区过程及最终结果六.源程序#includestdio.h#includestdlib.h#includeiostream.h#includewindows.h#defineFree0#defineUse1#defineMAX_length100//最大内存空间为100MB#defineMaxNumber100intFreePartition[MaxNumber]={16,16,8,32,64,32,8,16,64};//空闲分区intProcessNeed[MaxNumber]={7,18,9,20,35,8};//每个进程需求intFirstPartition[MaxNumber];//首次intCycleFirstPartition[MaxNumber];//循环intPartitionNumber=9,ProcessNum=6;//空闲分区数及进程数boolv();boolv(){intj;cout首次适应算法endl;//FirstPartitionMethod();for(inti=0;iProcessNum;i++)//进程for(j=0;jProcessNum;j++)//分区{if(FreePartition[j]=ProcessNeed[i]){FirstPartition[i]=j;FreePartition[j]-=ProcessNeed[i];break;}}//c_out(FirstPartition);for(i=0;iProcessNum;i++)coutFreePartition[i];coutendl;//Beginning();FreePartition[0]=16;FreePartition[1]=16;FreePartition[2]=8;FreePartition[3]=32;FreePartition[4]=64;FreePartition[5]=32;FreePartition[6]=8;FreePartition[7]=16;FreePartition[8]=64;cout循环首次适应算法endl;//CycleFirstPartitionMethod();j=0;for(i=0;iProcessNum;i++)//进程for(;;)//分区{if(FreePartition[j]=ProcessNeed[i]){CycleFirstPartition[i]=j;FreePartition[j]-=ProcessNeed[i];break;}j++;j=j%PartitionNumber;}//c_out(CycleFirstPartition);for(i=0;iProcessNum;i++)coutCycleFirstPartition[i];coutendl;return1;}//--------------作业结构体数组----------------------------typedefstructJOB{intnum;//作业号intsize;//作业大小intctime;//作业进入时间intrtime;//作业运行时间intstate;//作业状态}Job;typedefstructDuLNode{intID;//分区号intstart;//开始地址intsize;//大小intstate;//0=尚未使用1=使用2=释放structDuLNode*prior;//前驱指针structDuLNode*next;//后即指针}DuLNode,*DuLinkList;//-------------------------------------------------------------------------------intFirstfit(int);//首次适应算法intNext_fit(int);//循环首次适应算法voidshowJob(int);//显示作业表voidshowPartiton(DuLinkList);//显示分区表//-----------------------------------------------------------------------------//-------------------------
本文标题:动态分区分配存储管理系统
链接地址:https://www.777doc.com/doc-4059940 .html