教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 实用文档 >

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

来源:网络收集 时间:2026-09-04
导读: 合肥工业大学操作系统课程设计 动态分区分配存储管理java版 课程设计报告 课 程 设 计 设计题目 动态分区分配存储管理 学生姓名 学 号 专业班级 指导教师 2010 年 12 月 合肥工业大学操作系统课程设计 动态分区分配存储管理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字,全部文档内容请下载后查看。喜欢就下载吧 ……

合肥工业大学操作系统课程设计 动态分区分配存储管理java版.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/1114899.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)