操作系统系列学习——内存分区与分页


前言

一个本硕双非的小菜鸡,备战24年秋招,计划学习操作系统并完成6.0S81,加油!
本文总结自B站【哈工大】操作系统 李治军(全32讲)
老师课程讲的非常好,感谢
【哈工大】操作系统 李治军(全32讲)

内存分区与分页

在这里插入图片描述
内存怎么割?以便把程序的各个段载入到相应的内存分区

内存分区指的是划分的一段用于存储程序段(或代码段cs,或数据段ds)的内存空间

在这里插入图片描述
在这里插入图片描述
可变分区:段请求来了后查看空闲区域,看请求要多少就在空闲分区割一段

如何管理

  • 空闲分区表:存储空闲的内存分区数据(或段释放后的内存空间列表);
  • 已分配分区表:已使用的内存分区的记录信息;
  • 注意:分区信息只需要记录 分区基址 和 长度 这两种信息
  • 在这里插入图片描述
    算法:

首先适配:(350, 150),挑选空闲分区表中第一条且分区空间足够大的分区来分配;空闲分区表查询 足够快;
最佳适配:(200, 50),内存空间浪费少,但空闲分区大小会越来越小,分割后产生的内存碎片比较多;
最差适配:(350, 150),挑选最大的分区进行分配,内存空间浪费多,但空闲分区大小比较均匀,内存碎片少;

操作系统为了让内存能够使用起来,将程序打成多个段。每个段要放在内存的不同空闲地方,所以就需要在内存中找到哪些地方是空闲的。为了找到空闲地方,需要:要维护空闲分区表和已分配分区表数据结构;给一个分配算法。
在这里插入图片描述
内存分区效率不高,实际采用内存分页操作来进行分配

内存分区在为了让段放入内存中需要割一个东西,物理内存采用分页割取(补充:虚拟内存是采用分区来分割或分配的)

内存分区导致存在大量内存碎片(可用的总内存大小大于申请的内存大小,但内存分区不连续,且每个分区小于申请大小,导致内存申请失败)
在这里插入图片描述
内存分页优点:

优点1:不存在内存碎片,因为中间的空闲页可以分配给其他进程;
优点2:内存浪费少:一个段最多浪费1页,即一个段最多浪费4K(一个段由多个页组成);

【小结】

物理内存采用分页进行分割和分配,减少了内存浪费,避免了内存碎片;

用户希望把程序分为多个段;

综上,操作系统需要既支持分段也支持分页对内存进行分割和分配;
在这里插入图片描述
需要建立页表存储页号与页框号映射关系,而找到页框号就可以计算出内存页基址;

一个段需要打散成很多页,这些页就放在内存中的空闲页框里,建立页表与PCB关联

  • 24
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

努力找工作的小菜鸡

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

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

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

打赏作者

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

抵扣说明:

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

余额充值