操作系统的4种简单内存管理及放置算法

首先对于内存管理分为连续内存管理和非连续内存管理。连续内存管理又分为固定分区和动态分区;非连续内存管理分为简单分页、简单分段、虚拟分页和虚拟分段。
1.固定分区
固定分区是指将内存区域进行分区,之后不改变位置。如果是等大分区,在进行进程的内存分配是会产生内碎片,为减少这种内碎片,就产生了大小不等的分区。如下图
在这里插入图片描述

2.动态分区
动态分区的长度和数量是可变的,这样就不会出现内碎片了但是会产生外碎片。减少外碎片的方法是采用压缩技术。对于动态分区就不得不讨论他的放置算法。
①首次适配:从头开始扫描,找到第一个适合的空闲块。
②下次适配:从上次的位置开始找到第一个合适的空闲块,如果到底了就从头再来。
③最佳适配:找到与要求最接近的块。
④最差适配:找到合适的最大的空闲块。
下图是用这些算法操作的示意图
图片来自与“操作系统精髓与设计原理”

3.简单分页
简单分页就是将内存分成许多很小的页框,然后将进程分成许多很小的页(页和页框的大小相等)。然后在将程序加载入内存的时候就可以不用连续了。只要有一张表可以记下进程被分配到了哪几个页框里就行。所以这里就有了页表。如下
在这里插入图片描述

对于简单分页,还有个问题是如何依靠相对地址找绝对地址。逻辑地址是由页号和偏移量组成,页号是指在页表中的编号,偏移是指相对于那个页框的偏移。所以由相对地址得到绝对地址的过程是:先由页号在页表中找到页框号,由页框号可以找到当前起始地址(页框号*页框大小),然后再加上偏移量得到绝对地址。如下
在这里插入图片描述

4.简单分段
简单分段比简单分页更灵活一些,他允许每一块的大小是不一样大的也可以不连在一块。类似的有一个段表,段表存的是段大小和段基址。所以由相对地址找到绝对地址的过程如下:先由相对地址得到段号,由段号在段表内找到相应的段;然后将偏移地址和段大小比较,如果偏移比段大小还大那就发生了错误,否则就是正常的。然后用段基址加上偏移量就得到了绝对地址。如下
在这里插入图片描述
以上有些图片来自《操作系统精髓与设计原理》

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值