欢迎来到天天文库
浏览记录
ID:56523499
大小:564.50 KB
页数:23页
时间:2020-06-27
《动态分区分配存储管理系统.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、动态分区分配存储管理系统学院专业学号学生姓名指导老师2014年3月19日目录一、设计目的与容31、设计目的32、设计容33、设计要求3二、算法的基本思想31、首次适应算法32、循环首次适应算法3三、主要功能模块流程图41、主函数流程图.42、首次适应算法流程图.53、循环首次适应算法流程图.6四、系统测试.7输入界面,按要求输入:7五、结论8六、源程序9一、设计目的与容设计的目的操作系统课程设计是计算机专业重要的教学环节,它为学生提供了一个既动手又动脑,将课本上的理论知识和实际有机的结合起来,独立分析和解决实际问题的机会。l进一步巩固和复习操作系统的基础知识。l
2、培养学生结构化程序、模块化程序设计的方法和能力。l提高学生调试程序的技巧和软件设计的能力。l提高学生分析问题、解决问题以及综合利用C语言进行程序设计的能力。设计容:用高级语言编写和调试一个动态分区存分配程序,演示实现下列两种动态分区分配算法1.首次适应算法2.循环首次适应算法设计要求:1.存中有0-100M的空间为用户程序空间,最开始用户空间是空闲的2.作业数量、作业大小、进入存时间、运行时间需要通过界面进行输入3.可读取样例数据(要求存放在外部文件中)进行作业数量、作业大小、进入存时间、运行时间的初始化4.根据作业进入存的时间,采用简单的先进先出原则进行从外存
3、到存的调度,作业具有等待(从外存进入存执行)、装入(在存可执行)、结束(运行结束,退出存)三种状态。(为了简化,不考虑CPU的调度与切换,运行时间为作业在存中驻留的时间)5.能够自动进行存分配与回收,可根据需要自动进行紧凑与拼接操作,所有过程均有动态图形变化的显示6.采用可视化界面,可随时暂停显示当前存分配和使用情况图。二、算法的思想1、首次适应算法空闲分区链以地址递增的次序,分配存时,从链首开始顺序查找,直至找到一个大小能满足要求的空闲分区为止;然后再按照作业的大小,从该分区中划出一块存空间分配给请求者,取消的空闲分区仍留在空闲链中。若从链首直至链尾都不能找到
4、一个能满足要求的分区,则此次存分配失败,返回。2、循环首次适应算法在为进程分配存空间时,不再是每次都从链首开始查找,而是从上次找到的空闲分区的下一个空闲分区开始查找,直至找到一个能满足要求的空闲分区,从中划出一块与请求大小相等的存空间分配给作业三、主要功能模块流程图主函数开始Dulinklistpf否Inputchoice(ch)是Ch=2breakCh=1结束multiplexInitpartitionlist(p)否是否multiplex是首次适应算法:开始Intt=1T&&num否是Dulinklistpll=block...Intx=0X5、iplexX++multiplexmultiplex结束循环首次适应算法开始Intt=1T&&num否是Dulinklistpll=block...Intm=0m#include#include6、#include#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]7、;//循环intPartitionNumber=9,ProcessNum=6;//空闲分区数及进程数boolv();boolv(){intj;cout<<"首次适应算法"<=ProcessNeed[i]){FirstPartition[i]=j;FreePartition[j]-=ProcessNeed[i];break;}}//c_out8、(FirstPartit
5、iplexX++multiplexmultiplex结束循环首次适应算法开始Intt=1T&&num否是Dulinklistpll=block...Intm=0m#include#include
6、#include#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]
7、;//循环intPartitionNumber=9,ProcessNum=6;//空闲分区数及进程数boolv();boolv(){intj;cout<<"首次适应算法"<=ProcessNeed[i]){FirstPartition[i]=j;FreePartition[j]-=ProcessNeed[i];break;}}//c_out
8、(FirstPartit
此文档下载收益归作者所有