操作系统分区分配java算法_合肥工业大学操作系统课程设计 动态分区分配存储管理java版.doc...

本文档介绍了合肥工业大学操作系统课程设计,重点是动态分区分配存储管理的Java实现,包括首次适应、循环首次适应、最佳适应和最坏适应等算法。设计目标包括建立内存和进程数据结构,模拟进程执行,实现分区分配与回收,并支持紧凑算法。
摘要由CSDN通过智能技术生成

41528d3028836879cd698677c3999917.gif合肥工业大学操作系统课程设计 动态分区分配存储管理java版.doc

1课程设计动态分区分配存储管理设计题目学号专业班级学生姓名号指导教师22010年12月合肥工业大学课程设计任务书设计题目动态分区分配存储管理成绩主要内容动态分区分配存储管理建立描述内存分配状况的数据结构;建立描述进程的数据结构;使用两种方式产生进程(A)自动产生,(B)手工输入;在屏幕上显示内存的分配状况、每个进程的执行情况;建立分区的分配与回收算法,支持紧凑算法;时间的流逝可用下面几种方法模拟(A)按键盘,每按一次可认为过一个时间单位;B响应WM_TIMER;将一批进程的执行情况存入磁盘文件,以后可以读出并重放;支持算法首次适应算法、循环首次适应算法、最佳适应算法最坏适应算法。指导教师意见该生能按时完成课程设计任务书所规定的程序设计,综合运用所学知识独立分析和解决问题的能力。程序设计方案。论文论述,文理,格式。程序运行结果。程序验收时回答问题。签名4第一章课程设计概述11设计任务动态分区分配存储管理12设计要求建立描述内存分配状况的数据结构;建立描述进程的数据结构;使用两种方式产生进程(A)自动产生,(B)手工输入;在屏幕上显示内存的分配状况、每个进程的执行情况;建立分区的分配与回收算法,支持紧凑算法;时间的流逝可用下面几种方法模拟(A)按键盘,每按一次可认为过一个时间单位;B响应WM_TIMER;将一批进程的执行情况存入磁盘文件,以后可以读出并重放;支持算法首次适应算法、循环首次适应算法、最佳适应算法最坏适应算法。13设计目的旨在让我们更好的了解动态分区管理方面的知识第二章原理及算法描述21动态分区分配算法原理首次适应算法算法概述分配内存时,从链首开始顺序查找,找到满足的空闲分区则划出空间分配,余下的空闲空间仍保留在空闲链表中实现方法分配时从数组第一个元素开始比较,若符合条件则将该元素减去对应作业的值循环首次适应算法算法概述由首次适应算法演变,只是每次分配改为由上一次找到的空闲分区开始查找实现方法在首次适应算法的基础上增加一个值用于记录找到的空闲分区的位置最佳适应算法算法概述每次为作业分配内存时,总是把能满足要求、又是最小的空闲分区分配给作业实现方法我们决定每次分配先把空闲分区按从小到大的顺序排列,然后将第一个匹配分区分配给作业5最坏适应算法算法概述每次为作业分配内存时,总是挑选一个最大的空闲分区分割给作业使用实现方法算法与最佳适应算法几乎相同,仅在排序时把空闲分区表按从大到小的顺序排列,所以未作详细注释回收分区当进程运行完毕释放内存时,系统根据回收区的首址,从空闲区链表中找到相应的插入点,此时可能出现以下四种情况之一1回收区与插入点的前一个空闲分区F1相邻接,此时应将回收区与插入点的前一分区合并,不必为回收区分配新表项,而只需修改其前一分区F1的大小2回收分区与插入点的后一空闲分区F2相邻接,此时也可将两分区合并,形成新的空闲分区,但用回收区的首址作为新空闲区的首址,大小为两者之和3回收区同时与插入点的前,后两个分区邻接,此时将三个分区合并,使用F1的表项和F1的首址,取消F2的表项,大小为三者之和4回收区既不与F1相邻接,又不与F2邻接这时应为回收区单独建立一新表项,填写回收区的首址和大小,并根据其首址插入到空闲链中的适当位置紧凑算法通过移动内存中的作业的位置,以把原来多个分散的小分区拼接成一个大分区的方法第三章开发环境此程序是本人利用JAVA语言在一种JCREATOR的开发环境中实现的6第四章重要算法和设计思路描述41设计首次适应算法首先从内存分区的状态中找到空闲分区,若无空闲分区则不进行后面的运算,直接弹出对话框“内存中无空闲分区“把作业所需空间的大小与按始址大小,与各个空闲分区进行比较,如果某分区大小合适,把该分区一分为二,前部为已经分配出去的分区,后者为剩余的分区,然后对内存情况进行更新,每次分区小于作业,将指示不符合次数的N加一,如果不符合次数为空闲分区数组长度,说明找遍空闲分区都无符合项,最后对作业数组进行更新,把已运行的作业去除42设计循环首次适应算法同样根据内存分区的状态中找到空闲分区数组,令X指向上次找到空闲分区的下一个空闲分区,比较方法与首次适应算法相比,仅在此改为用X指示空闲分区在数组中的位置,每次查找空闲分区,都是从X后面那个分区开始查询,如果某分区大小合适,把该分区一分为二,前部为已经分配出去的分区,后者为剩余的分区,然后对内存情况进行更新,每次分区小于作业,将指示不符合次数的N加一,到了数组末尾后再次进行循环回到数组头,一直寻找到上次所分配的位置,转为从首位开始查找后只比较到上一次找到的匹配分区,以保证循环可结束如果不符合次数为空闲分区数组长度,说明找遍空闲分区都无符合项,最后对作业数组进行更新,把已运行的作业去除43设计最佳适应算法和最坏适应算法最佳适应算法的实质就是对内存分区数组进行排序后,利用首次适应算法最坏适应算法的实质也是对内存分区数组排序后,进行首次适应算法,只不过它与最佳适应算法排序的方向刚好相反44设计分区回收算法对内存分区状态进行查找,若回收区与插入点的前一个空闲分区F1相邻接,此时应将回收区与插入点的前一分区合并,不必为回收区分配新表项,而只需修改其前一分区F1的大小若回收分区与插入点的后一空闲分区F2相邻接,此时也可将两分区合并,形成新的空闲分区,但用回收区的首址作为新空闲区的首址,大小为两者之和若回收区同时与插入点的前,后两个分区邻接,此时将三个分区合并,使用F1的表项和F1的首址,取消F2的表项,大小为三者之和若回收区既不与F1相邻接,又不与F2邻接这时应为回收区单独建立一新表项,填写回收区的首址和大小,并根据其首址插入到空闲链中的适当位置45设计紧凑算法同样对内存分区状态进行查找,若存在空闲分区,对分区数组,把已分配的数组的位置进行移动,使已分配的分区全部相邻,这样得到的最后剩下的一个大分区就是可以分配的分区啦7第五章程序实现数据结构CLASSMEMORY{PRIVATEINTM1//分区的序号PRIVATEINTM2//分区的大小PRIVATEINTM3//分区的起始地址PRIVATEINTM4//是否已分配的标志}这是定义的内存分区的结构CLASSPROCESS{PRIVATEINTXUHAO//作业序号PRIVATEINTKONGJIAN//作业运行所需的空间}这是定义的作业的结构8第六章程序实现程序清单IMPORTJAVAAWTEVENTIMPORTJAVAXSWINGIMPORTJAVAAWTIMPORTJAVAIOIMPORTJAVAUTILPUBLICCLASSALGORITHM{PRIVATEJFRAMEFRAMEPRIVATEJTEXTPANEMEMORYPRIVATEJTEXTPANEPROCESSPRIVATEMEMORYDATAMDPRIVATEPROCESSDATAPDPRIVATEINTFITINDEX1PRIVATEINTSELECTPRIVATEJTEXTFIELDFIELDPRIVATEJFRAMEFRAMEPUBLICVOIDGO{FRAMENEWJFRAME“动态分区“JPANELMAINPANELNEWJPANELJPANELPRINTP

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值