欢迎来到天天文库
浏览记录
ID:21801638
大小:303.68 KB
页数:18页
时间:2018-10-24
《课程设计:存储管理——动态分区分配算法的模拟》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、目录歸1籠22.课程设计任务及要求22.1设计任务22.2设计要求22.3课程设计任务安排23.算法及数据结构33.1算法的总体思想(流程)33.2首次适应算法33.2.1功能33.2.2数裾结构(包括变ft的定义,要注释!)33.2.3算法(流程图表示,或伪C表示)43.3循环首次适应算法43.3.1功能43.3.2数据结构53.3.3算法53.4S佳适应算法63.4.1功能63.4.2数据结构63.4.3算法73.5最坏适应算法83.5.1功能83.5.2数据结构83.5.3算法84.程序设计与实现94.1程序流程图94.2程序代码(
2、要注释)94.3实验结果165.组仑176.收获、体会和建议。18詹焕齐总结:18刘伟业总结:187.参考文献。19概述动态分区分配是根据进程的实际需要,动态地力之分配内存空间,而在分配时,须按照一定的分配算法,从空闲分区表或空闲分区链中选山一分区分配给该作业。在本实验中运用了五种分配算法,分别是:1.首次适应算法2.循环首次适应算法3.最坏应算法4.最佳适应算法5.快速适应算法2.课程设计任务及要求2.1设计任务要求设计主界面以灵活选择其屮算法,5种算法都要求实现。2.2设计要求1)首先由系统生成当前的内存状态,要求未分配的分区数量不少
3、于^且空间大小随机,然后随机生成一个数,表示等待分配进程的大小。2)然后显示上述算法由用户选择,结果显示分配后的状态。2.3课程设计任务安排日期刘伟业焙焕齐星期三下午研究算法研究算法星期四早上没计算法参与没计星期四下午设计算法,编写界面参与设计星期五早上编写算法完成部分文档星期五下午程序测试并优化程序测试,完成文档2.算法及数据结构3.1算法的总体思想(流程)设计程序模拟四种动态分区分配算法:首次适应算法、循环首次适应算法、最佳适应算法和最坏适应算法的工作过程。假设内存中空闲分区个数为n,空闲分区大小分别为1-,匕,在动态分区分配过程中
4、需要分配的进程个数为m(m5、tn//作业个数privatestaticintm;//空闲分区大小privatestaticintFreePartition]=new{[MaxNum}//作业名称privatestaticcharPr()cessName[]=newchar[MaxNum]//作业需求空间大小privatestaticintProcessNeed[=newint[MaxNum;//作业分配标志privatestaticbooleanstate[]=newboolean//空闲分区个数privatestaticintPartitionNu6、nr、//作业个数privatestaticintProcessNum.,//记录作业分配privatestaticcharorder[][]=newchar[MaxNum][McixNum];3.2.3算法(流程图表示,或伪C表示)publicstaticvoidFirst(){for(/=0;/7、ii(order[j][k]==0)"为空{orderj][k]=ProcessNatne[i];break;}elsecontinue;}FreePartiti()n{j}=FreePartiti()nj}-ProcessNeedi\state[i]=truc;}}}3.3循环首次适应算法3.3.1功能该算法是由首次适应算法演变而成,在为进程分配内存空间时,不再是每次都从第一个空间开始查找,而是从上次找到的空闲分区的下一个空闲分区开始查找,直至找到第一个能满足要求的空闲分区,从中划出一块与请求大小相等的内存空间分配给作业,为实现8、本算法,设置一个全局变量f,来控制循环查找,当f%N==0时,f=0;若査找结來都不能找到一个满足要求的分区,则此次内存分配失败。3.3.2数据结构privatestaticintMaxNum
5、tn//作业个数privatestaticintm;//空闲分区大小privatestaticintFreePartition]=new{[MaxNum}//作业名称privatestaticcharPr()cessName[]=newchar[MaxNum]//作业需求空间大小privatestaticintProcessNeed[=newint[MaxNum;//作业分配标志privatestaticbooleanstate[]=newboolean//空闲分区个数privatestaticintPartitionNu
6、nr、//作业个数privatestaticintProcessNum.,//记录作业分配privatestaticcharorder[][]=newchar[MaxNum][McixNum];3.2.3算法(流程图表示,或伪C表示)publicstaticvoidFirst(){for(/=0;/7、ii(order[j][k]==0)"为空{orderj][k]=ProcessNatne[i];break;}elsecontinue;}FreePartiti()n{j}=FreePartiti()nj}-ProcessNeedi\state[i]=truc;}}}3.3循环首次适应算法3.3.1功能该算法是由首次适应算法演变而成,在为进程分配内存空间时,不再是每次都从第一个空间开始查找,而是从上次找到的空闲分区的下一个空闲分区开始查找,直至找到第一个能满足要求的空闲分区,从中划出一块与请求大小相等的内存空间分配给作业,为实现8、本算法,设置一个全局变量f,来控制循环查找,当f%N==0时,f=0;若査找结來都不能找到一个满足要求的分区,则此次内存分配失败。3.3.2数据结构privatestaticintMaxNum
7、ii(order[j][k]==0)"为空{orderj][k]=ProcessNatne[i];break;}elsecontinue;}FreePartiti()n{j}=FreePartiti()nj}-ProcessNeedi\state[i]=truc;}}}3.3循环首次适应算法3.3.1功能该算法是由首次适应算法演变而成,在为进程分配内存空间时,不再是每次都从第一个空间开始查找,而是从上次找到的空闲分区的下一个空闲分区开始查找,直至找到第一个能满足要求的空闲分区,从中划出一块与请求大小相等的内存空间分配给作业,为实现
8、本算法,设置一个全局变量f,来控制循环查找,当f%N==0时,f=0;若査找结來都不能找到一个满足要求的分区,则此次内存分配失败。3.3.2数据结构privatestaticintMaxNum
此文档下载收益归作者所有