操作系统考点之可变分区回收

如题:2020年10月

分析:这个题挺唬人的,什么低地址?《操作系统考点之存储管理》也只是说明了下可变分区的原理,只说是回收依靠的是两个表,已分配表和空闲表,没有涉及到具体的回收算法。两个关键数据结构分别的作用如下:

  • 已分配区表:记录已装入的程序在内存中占用分区的起始地址和长度,用标志位指出占用分区的程序名。
  • 空闲区表:记录内存中可供分配的空闲区的起始地址和长度,用标志位指出该分区是未分配的空闲区
  • 另外,由于已分区与空闲区个数不定,所有很多空栏

具体的回收算法:回收时,先将使用完毕的分区,记录在空闲区表中,检查相邻空闲区表中的“未分配”栏目,有,应该合并成一个空闲区,这样空闲区个数其实是没变,除非合并两个原有的分区,才会出现空闲区数减1的情形。所以答案选D.

假设:归还分区在空闲表中的起始地址是S,长度为L

    1、回收分区的上邻分区(地址是从低到高增长的)空闲,需要合并.

如果空闲表中的第i号“未分配栏”的  起始地址+长度 = S,就说明有上邻的分区,合并也很简单,只要第i栏起始地址不变,长度为 未分配区长度+L就可以了。可见,脑补内存情形还是很重要的,写C时也是重要的基本功

    2、回收分区的下邻分区空闲,需要合并

如果 S+L  =  相邻“未分配栏”的起始地址,说明有下邻分区,合并是:S(作为起始地址)不变,长度为 未分配区长度+L

    3、回收分区的上邻与下邻都是空闲,需要将三个分区合并

判断条件:S = 第i栏起始地址 + 长度
                  S + L = 第k栏起始地址     合并是第i栏起始地址不变(上邻起始地址),长度为 i栏原长度 + L + k栏的长度。同时将 k栏(下邻)清空,这样才实现空闲区表个数减1,也正是本题所考察的点。

     4、上邻和下邻都不空闲,不需要合并

没有合并,在空闲区表找一个“空”栏,登记上回收的分区的起始地址和长度就可以了,实现了空闲区表分区个数的加1。​​​​​​​

  • 2
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

guangod

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值