内存管理-动态分区分配方式模拟

内存管理 - 动态分区分配方式模拟

操作系统第二次课程作业 - 动态分区分配方式模拟

项目需求

假设初始态下,可用内存空间为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

  • 开发软件:

    1. Visual Studio Code 1.34.0
    2. 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文件, 并在浏览器中打开,打开后界面如下图所示

在这里插入图片描述

  • 选择希望进行模拟的动态分区分配算法*(首次适应算法/最佳适应算法)*

在这里插入图片描述

  • 调节滑动条改变当前内存大小*(上方模拟链式空间长度会随着滑动条滑动而动态变化)*

在这里插入图片描述

  • 点击下一步进行作业调度

在这里插入图片描述

  • 上方的模拟内存会显示每次分配和回收后的空闲分区链的情况*(不同作业的颜色不同, 以区分不同作业在内存中的位置分布情况)*

在这里插入图片描述

  • 下方的日志信息会显示作业申请/释放等信息

在这里插入图片描述

  • 点击清空内存会清空内存中的作业以及日志信息全部内容, 此时可再次调整内存空间大小, 并再次进行动态分区分配方式模拟

系统分析

  • 首次适应算法

    • 算法逻辑: 记录当前内存中被使用的空间, 同时记录当前内存中可以使用的空间(并将其按照物理位置顺序列出)

      如果当前作业需要申请内存空间 => 顺序查找第一个空闲块大小大于所需空间 => 将占用的内存空标记为被使用 => 空闲块大小和位置做相应的调整
      

  • 最佳适应算法

    • 算法逻辑: 同样记录当前内存中被使用的空间, 同时记录当前内存中可以使用的空间(并将其按照物理容量大小列出)

      如果当前作业需要申请内存空间 => 找出当前容量最小并且满足当前申请需求的物理块 => 将占用的内存空标记为被使用 => 空闲块大小和位置做相应的调整
      

系统设计

界面设计

  1. 整体设计

在这里插入图片描述

功能实现截屏展示

首次适应算法

在这里插入图片描述

最佳适应算法

在这里插入图片描述

内存空间不足

在这里插入图片描述

选择动态分区分配算法

在这里插入图片描述

调节滑动条动态改变内存大小

在这里插入图片描述

点击下一步进行作业调度

在这里插入图片描述

日志信息

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/sheziqiong/article/details/125975875
今日推荐