℡WK。 2021-04-20 16:44 采纳率: 0%
浏览 130

操作系统实验:存储管理的模拟程序设计

一、实验要求

从基于连续分配思想的动态分区分配方案和基于离散分配思想的分页中选择一种方案进行内存空间的模拟管理,具有管理工作包括:

 

利用分配算法找到满足要求的内存块,设请求的内存大小为size:

 

根据释放区首址和大小,查找空闲分区表/链表,判断是否有相邻的空闲分区存在:

 

  1. 模拟实现1M内存空间的管理;
  2. 利用内存空间的数据结构(如分页系统中空闲块链表或位示图法),记录空间的使用情况;
  3. 设计内存分配算法(如动态分区中可采用首次适应法、最佳适应法、最坏适应法或循环首次适应法)和过程,完成要运行的进程的空间分配,可能要考虑进程分配空间的记录,比如页表的设计;
  4. 当进程运行完成时,设计内存回收算法(如动态分区中考虑相邻空间的合并)实现释放空间的回收;
  5. 可动态显示内存使用状况;
  6. 针对用户给出的逻辑地址能计算出对应的物理地址。

    二、实验目标

    开发一个C语言程序实现内存空间管理的动态分区分配方案。

    三、实验原理

    动态分区分配:根据进程的实际需要,动态地创建分区为之分配内存空间,在实现动态分区分配时,将涉及分区分配中所使用的数据结构,分区分配算法和分区的分配与回收操作等问题。                                                                                                                             

  7. 分区分配中的数据结构
    • 空闲分区表:一个数据表,用于记录每个空闲块的情况,如起始地址、大小、使用情况等;
    • 空闲分区链表:把所有的空闲分区链接成一个链表,便于内存空间查看与分配回收。
  8. 内存分配过程
    • 若找到的空闲分区的大小等于size,完全分配;
    • 若找到的空闲分区大小大于size,且一分为二后,剩余大小小于1K,则不再分割,作为整体进行分配;否则一分为二,剩余部分仍然作为空闲分区存在;
    • 若无满足要求空闲分区,则分配失败
    • 释放区与前空闲区相邻:将释放区与前空闲区合并为一个空闲区。其首址仍为前空闲区首址,大小为释放区大小与空闲区大小之和。
    • 释放区与前后两个空闲区相邻:将这三个区合为一个空闲区,其首址为前空闲区首址,大小为这三个区大小之和,并取消原后空闲区表目。
    • 释放区与后空闲区相邻:则把释放区合并到后空闲,首地址为释放区首地址,大小为二者大小之和。
    • 释放区不与任何空闲区相邻:将释放区作为一个空闲区,将其大小和首址插入到空闲区表的适当位置。
    • 分配算法
      • 最坏适应法:空闲分区按空闲分区大小递减次序组织,每次查找时直接判断最大空闲分区是否满足要求。
    • 内存回收                                                                                                                                                                                                      根据释放区首址和大小,查找空闲分区表/链表,判断是否有相邻的空闲分区存在
  • 写回答

1条回答 默认 最新

  • 有问必答小助手 2021-04-21 10:39
    关注

    你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,目前超出我们的服务范围,暂时无法为您解答。

    首次提问人员可免费体验一次有问必答服务。目前首次提问的问题服务范围为:编程语言、Java开发、python、数据库、前端开发 领域专业技术问题,为您提供问题的解决思路和指导。不提供源码代写、项目文档代写、论文代写、安装包资源发送或安装、软件使用指导等服务。

    我们后续会持续优化,扩大我们的服务范围,为您带来更好地服务。

    评论

报告相同问题?

悬赏问题

  • ¥15 单纯型python实现编译报错
  • ¥15 c++2013读写oracle
  • ¥15 c++ gmssl sm2验签demo
  • ¥15 关于模的完全剩余系(关键词-数学方法)
  • ¥15 有没有人懂这个博图程序怎么写,还要跟SFB连接,真的不会,求帮助
  • ¥15 PVE8.2.7无法成功使用a5000的vGPU,什么原因
  • ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
  • ¥15 安装quartus II18.1时弹出此error,怎么解决?
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音