[操作系统]--理解分页(页大小)

简介

首先,分页是为了解决内存连续分配时产生碎片的问题,分页之后,页表逻辑上是连续
的,物理上不连续。

连续分配的缺陷

我们先看一下连续分配产生碎片的情况:

假设内存是连续分配的(也就是程序在物理内存上是连续的)

1. 进程 A 进来,向 os 申请了 200 的内存空间,于是 os 把 0~199 分配给 A
2. 进程 B 进来,向 os 申请了 5 的内存空间,os 把 200~204 分配给它
3. 进程 C 进来,向 os 申请了 100 的内存空间,os 把 205~304 分配给它
4. 这个时候进程 B 运行完了,把 200~204 还给 os

但是很长时间以后,只要系统中的出现的进程的大小 > 5 的话,200~204 这段空间都不会被分配出去(只要 A 和 C 不退出)。

过了一段更长的时间,内存中就会出现许许多多 200~204 这样不能被利用的碎片……

分页

而分页机制让程序可以在逻辑上连续、物理上离散。也就是说在一段连续的物理内存上,可能0~4(这个值取决于页面的大小)属于A,而5~9属于B,10~14属于C,从而保证任何一个“内存片段”都可以被分配出去。这样分配之后,就只会在页内产生碎片了。

下面讲一下我当时的一个困惑,是不是页面大小越小那碎片就是越少呢,但是页面大小越小不就会类似于一开始的连续分配了吗。

下面看一下解释:

那是不是每一页大小越小碎片就是越少呢,其实这样碎片会变少,但是需要的页表大小会增加很多。如页大小为1字节,那么我们需要的页表大小要和进程需要的内存空间一样大,而这是很浪费的。

参考资料

豆瓣–理解操作系统分页

以上,所有

2017 / 08 / 18

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值