合肥工业大学操作系统课程设计 动态分区分配存储管理java版
合肥工业大学操作系统课程设计 动态分区分配存储管理java版 课程设计报告
课 程 设 计
设计题目 动态分区分配存储管理
学生姓名
学 号 专业班级 指导教师
2010 年 12 月
合肥工业大学操作系统课程设计 动态分区分配存储管理java版 课程设计报告
合肥工业大学课程设计任务书
合肥工业大学操作系统课程设计 动态分区分配存储管理java版 课程设计报告
第一章 课程设计概述
1.1 设计任务:
动态分区分配存储管理
1.2 设计要求
建立描述内存分配状况的数据结构; 建立描述进程的数据结构; 使用两种方式产生进程:(a)自动产生, (b)手工输入; 在屏幕上显示内存的分配状况、每个进程的执行情况; 建立分区的分配与回收算法,支持紧凑算法; 时间的流逝可用下面几种方法模拟:(a)按键盘,每按一次可认为过一个时间单位; (b) 响应WM_TIMER;
将一批进程的执行情况存入磁盘文件,以后可以读出并重放;
支持算法:首次适应算法、循环首次适应算法、最佳适应算法:最坏适应算法。
1.3 设计目的
旨在让我们更好的了解动态分区管理方面的知识.
第二章 原理及算法描述
2.1动态分区分配算法原理
首次适应算法
* 算法概述:分配内存时,从链首开始顺序查找,找到满足的空闲分区则划出空间分配,余下的空闲空间仍保留在空闲链表中
* 实现方法:分配时从数组第一个元素开始比较,若符合条件则将该元素减去对应作业的值
循环首次适应算法
* 算法概述:由首次适应算法演变,只是每次分配改为由上一次找到的空闲分区开始查找
* 实现方法:在首次适应算法的基础上增加一个值用于记录找到的空闲分区的位置
最佳适应算法
* 算法概述:每次为作业分配内存时,总是把能满足要求、又是最小的空闲分区分配给作业
* 实现方法:我们决定每次分配先把空闲分区按从小到大的顺序排列,然后将第一个匹配分区分配给作业
合肥工业大学操作系统课程设计 动态分区分配存储管理java版 课程设计报告
最坏适应算法
* 算法概述:每次为作业分配内存时,总是挑选一个最大的空闲分区分割给作业使用
* 实现方法:算法与最佳适应算法几乎相同,仅在排序时把空闲分区表按从大到小的顺序排列,所以未作详细注释
回收分区
当进程运行完毕释放内存时,系统根据回收区的首址,从空闲区链(表)中找到相应的插入点,此时可能出现以下四种情况之一;
1)回收区与插入点的前一个空闲分区F1相邻接,此时应将回收区与插入点的前一分区合并,不必为回收区分配新表项,而只需修改其前一分区F1的大小. 2)回收分区与插入点的后一空闲分区F2相邻接,此时也可将两分区合并,形成新的空闲分区,但用回收区的首址作为新空闲区的首址,大小为两者之和.
3)回收区同时与插入点的前,后两个分区邻接,此时将三个分区合并,使用F1的表项和F1的首址,取消F2的表项,大小为三者之和.
4)回收区既不与F1相邻接,又不与F2邻接.这时应为回收区单独建立一新表项,填写回收区的首址和大小,并根据其首址插入到空闲链中的适当位置.
紧凑算法
通过移动内存中的作业的位置,以把原来多个分散的小分区拼接成一个大分区的方法.
第三章 开发环境
此程序是本人利用JAVA 语言在一种JCreator 的开发环境中实现的
合肥工业大学操作系统课程设计 动态分区分配存储管理java版 课程设计报告
第四章 重要算法和设计思路描述
4.1 设计 首次适应算法
首先从内存分区的状态中找到空闲分区, 若无空闲分区则不进行后面的运算,直接弹出对话框"内存中无空闲分区".
把作业所需空间的大小与按始址大小,与各个空闲分区进行比较,如果某分区大小合适,把该分区一分为二,前部为已经分配出去的分区,后者为剩余的分区,然后对内存情况进行更新, 每次分区小于作业,将指示不符合次数的n加一, 如果不符合次数为空闲分区数组长度,说明找遍空闲分区都无符合项,最后对作业数组进行更新,把已运行的作业去除.
4.2 设计循环首次适应算法
同样根据内存分区的状态中找到空闲分区数组, 令x指向上次找到空闲分区的下一个空闲分区, 比较方法与首次适应算法相比,仅在此改为用x指示空闲分区在数组中的位置,每次查找空闲分区,都是从x后面那个分区开始查询, 如果某分区大小合适,把该分区一分为二,前部为已经分配出去的分区,后者为剩余的分区,然后对内存情况进行更新, 每次分区小于作业,将指示不符合次数的n加一, 到了数组末尾后再次进行循环回到数组头, 一直寻找到上次所分配的位置, 转为从首位开始查找后只比较到上一次找到的匹配分区,以保证循环可结束. 如果不符合次数为空闲分区数组长度,说明找遍空闲分区都无符合项,最后对作业数组进行更新,把已运行的作业去除.
4.3 设计最佳适应算法和最坏适应算法
最佳适应算法的实质就是对内存分区数组进行排序后,利用首次适应算法 最坏适应算法的实质也是对内存分区数组排序后,进行首次适应算法,只不过它与最佳适应算法排序的方向刚好相反
4.4 设计分区回收算法
对内存分区状态进行查找,若回收区与插入点的前一个空闲分区F1相邻接,此时应将回收区与插入点的前一分区合并,不必为回收区分配新表项,而只需修改其前一分区F1的大小.若回收分区与插入点的后一空闲分区F2相邻接,此时也可将两分区合并,形成新的空闲分区,但用回收区的首址作为新空闲区的首址,大小为两者之和.若回收区同时与插入点的前,后两个分区邻接,此时将三个分区合并,使用F1的表项和F1的首址,取消F2的表项,大小为三者之和.若回收区既不与F1相邻接,又不与F2邻接.这时应为回收区单独建立一新表项,填写回收区的首址和大小,并根据其首址插入到空闲链中的适当位置
4.5 设计紧凑算法
同样对内存分区状态进行查找,若存在空闲分区,对分区数组,把已分配的数组的位置进行移动,使已分配的分区全部相邻,这样得到的最后剩下的一个大分区就是可以分配的分区啦.
合肥工业大学操作系统课程设计 动态分区分配存储管理java版 课程设计报告
第五章 程序实现---数据结构
class memory{
private int m1;//分区的序号 private int m2;//分区的大小
private int m3;//分区的起始地址 private int m4;//是否已分配的标志 } 这是定义的内存分区的结构 class process {
private int xuhao;//作业序号
private int kongjian;//作业运行所需的空间 } 这是定义的作业的结构
合肥工业大学操作系统课程设计 动态分区分配存储管理java版 课程设计报告
第六章 程序实现---程序清单
import java.awt.event.*; import javax.swing.*; import java.awt.*; import java.io.*; import java.util.*; public class algorithm { private JFrame frame; private JTextPane memory; private JTextPane process; private memorydata md; private processdata pd; private int fitIndex=-1; private int select;
private JTex …… 此处隐藏:12893字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [实用文档]李践-有效提升销售的12大黄金法则8-大
- [实用文档]党支部换届工作方案
- [实用文档]2013年下期电子商务专业部宣传工作计划
- [实用文档]方庄一矿通风、钻探绩效工资考核管理办
- [实用文档]项目一 认识企业物流认识企业物流
- [实用文档]MBI_Display_产品蓝图规画
- [实用文档]北京市建筑业劳务作业人员普法维权培训
- [实用文档]锅炉燃烧调整与运行优化
- [实用文档]4支付结算业务的核算
- [实用文档]米什金_货币金融学_第9版各章学习指导
- [实用文档]水泥混凝土路面硬化工程施工组织设计
- [实用文档]钢筋工程安全技术交底书
- [实用文档]关于公布华中师范大学本科毕业论文
- [实用文档]太原市园林绿化施工合同范本 2
- [实用文档]周日辅导 初中英语分类复习单项选择题(
- [实用文档]第四章 文化经纪人的管理形式 第二节
- [实用文档]学宪法讲宪法竞赛题库
- [实用文档]《数值计算方法》期末考试模拟试题二
- [实用文档]爱词霸学英语:每日一句( 十月)
- [实用文档]2014年国家公务员面试:无领导小组讨论
- 新课程主要理念和教学案例分析汇编(24
- 英国人的快乐源于幸福的家庭生活
- 七年级上册第一次月考模拟数学试卷
- 真丝及仿真丝的种类有哪些?
- 【最新】华师大版八年级数学下册第十六
- 高中英语3500个必背单词
- 我可以接受失败,但我不能接受放弃!
- 最近更新沪科版八年级物理上册期末试卷
- 绿化工作先进乡镇事迹材料
- 鲁教版九年级上册思想品德教学计划
- 英语音标的分类
- 地下室底板无梁楼盖与普通梁板结构形式
- 美容师黄金销售话术
- 雅思写作满分作文备考方法
- 血清甲状腺激素测定与高频彩色多普勒超
- 1度浅析装修对室内空气品质的影响
- 2017-2022年中国汞矿行业深度分析与投
- 计算机二级VB公共基础知识
- (何勇)秸秆禁烧_重在寻找出路
- 内外墙抹灰工程分包施工合同1




