• 动态分区算法


    第1关:首次适应算法

    任务描述
    假设初始状态下可用的内存空间为55MB,并有如下的请求序列:
    作业1申请15MB
    作业2申请30MB
    作业1释放15MB
    作业3分配8MB
    作业4分配6MB
    作业2释放30MB
    请采用首次适应算法进行内存块的分配和回收,并打印出空闲内存分区链的情况

    相关知识
    为了完成本关任务,你需要掌握使用首次适应算法进行内存块的分配与回收。

    内存分配
    空闲分区链按地址递增的顺序链接。在分配内存时,从链首开始顺序查找,直至找到一个大小能满足要求的空闲分区。然后再按照作业的大小,从该分区中划出一块内存空间,分配给请求者,余下的空闲分区仍留在空闲链中。若从链首到链尾都找不到一个能满足要求的分区,则表明系统没有足够大的内存分配给该进程,内存分配失败返回。

    内存回收
    当进程运行完毕释放内存时,系统根据回收区的首址,从空闲区链(表)中找到相应的插入点,此时可能出现以下四种情况之一:
    (1) 回收区与插入点的前一个空闲分区F1相邻接,此时应将回收区与插入点的前一分区合并,不必为回收分区分配新表项,而只需修改其前一分区F1的大小。
    (2) 回收分区与插入点的后一空闲分区F2相邻接,此时也可将两分区合并,形成新的空闲分区,但用回收区的首址作为新空闲区的首址,大小为两者之和。
    (3) 回收区同时与插入点的前、后两个分区F1和F2邻接,此时将三个分区合并,使用F1的表项和F1的首址,取消F2的表项,大小为三者之和。
    (4) 回收区前后没有空闲分区。这时应为回收区单独建立一个新表项,填写回收区的首址和大小&

  • 相关阅读:
    国内备案的域名个人和企业的区别
    springboot专利申请服务平台毕业设计源码260839
    ssm和springboot整合
    Python期末模拟题库[python123题库]
    栈队列数组试题——解析(三)
    任正非说:段到段而不是端到端的变革,一定会局部优秀了,而全局灾难了。
    详解 YUV,一文搞定 YUV 是什么!
    如何使用Webpack工具构建项目
    UE基础 —— 工具和编辑器
    JavaScript实现选择排序
  • 原文地址:https://blog.csdn.net/Junds0/article/details/127427584