内存管理 - 动态分区分配方式模拟
操作系统第二次课程作业 - 动态分区分配方式模拟
项目需求
假设初始态下,可用内存空间为640K,并有下列请求序列,请分别用首次适应算法和最佳适应算法进行内存块的分配和回收,并显示出每次分配和回收后的空闲分区链的情况来。
作业1申请130K |
---|
作业2申请 60K |
作业3申请100k |
作业2释放 60K |
作业4申请200K |
作业3释放100K |
作业1释放130K |
作业5申请140K |
作业6申请 60K |
作业7申请 50K |
作业6释放 60K |
项目目的
- 数据结构、分配算法
- 加深对动态分区存储管理方式及其实现过程的理解
开发环境
-
开发环境: Windows 10
-
开发软件:
- Visual Studio Code 1.34.0
- WebStorm 2019.1.1.WS-191.6707.60
-
开发语言: html, javascript, css, jQuery
-
主要引用块内容:
<script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
项目结构
│ README.md
│ 动态分区分配方式模拟_设计方案报告.md
│ 动态分区分配方式模拟_设计方案报告.pdf
│
├─Resource
│ memory.png
│
└─src
│ Dynamic partition allocation.html
│
└─static
├─css
│ range.css
│ style.css
│
└─js
clear.js
nextAssingment.js
randColor.js
RangeSlider.js
select.js
操作说明
- 双击目录
src
下的Dynamic partition allocation.html
文件, 并在浏览器中打开,打开后界面如下图所示
扫描二维码关注公众号,回复:
14404942 查看本文章

- 选择希望进行模拟的动态分区分配算法*(首次适应算法/最佳适应算法)*
- 调节滑动条改变当前内存大小*(上方模拟链式空间长度会随着滑动条滑动而动态变化)*
- 点击下一步进行作业调度
- 上方的模拟内存会显示每次分配和回收后的空闲分区链的情况*(不同作业的颜色不同, 以区分不同作业在内存中的位置分布情况)*
- 下方的日志信息会显示作业申请/释放等信息
- 点击清空内存会清空内存中的作业以及日志信息全部内容, 此时可再次调整内存空间大小, 并再次进行动态分区分配方式模拟
系统分析
-
首次适应算法
-
算法逻辑: 记录当前内存中被使用的空间, 同时记录当前内存中可以使用的空间(并将其按照物理位置顺序列出)
如果当前作业需要申请内存空间 => 顺序查找第一个空闲块大小大于所需空间 => 将占用的内存空标记为被使用 => 空闲块大小和位置做相应的调整
-
-
最佳适应算法
-
算法逻辑: 同样记录当前内存中被使用的空间, 同时记录当前内存中可以使用的空间(并将其按照物理容量大小列出)
如果当前作业需要申请内存空间 => 找出当前容量最小并且满足当前申请需求的物理块 => 将占用的内存空标记为被使用 => 空闲块大小和位置做相应的调整
-
系统设计
界面设计
- 整体设计