• 动态分区算法


    第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) 回收区前后没有空闲分区。这时应为回收区单独建立一个新表项,填写回收区的首址和大小&

  • 相关阅读:
    Windows 进程的创建和终止
    计算机视觉CV
    Linux CentOS配置阿里云yum源
    LLVM 与代码混淆技术
    7.nodejs--egg框架简介、以及get、post请求
    通过PWM实现呼吸灯
    springboot采用协同过滤算法的家政服务平台的设计与实现毕业设计源码260839
    一个简单的基于形态学处理的报纸图像版面分割算法matlab仿真
    德尔菲技术是什么意思?如何使用?
    Emlog后台登录模板分享下载
  • 原文地址:https://blog.csdn.net/Junds0/article/details/127427584