保留的页框池

Motivation:有两种方法来满足内存分配请求:

  • 当有足够的空闲内存可用时,请求会被立刻满足
  • 否则,内核会回收一些内存,并将发出请求的内核控制路径阻塞,直到有内存被释放

但是当请求内存时,一些内核控制路径不能被阻塞。比如在处理中断或执行临界区的代码时的原子请求。原子请求从来不会被阻塞:如果没有足够的空闲页,则仅仅是分配失败而已。

尽管内核无法保证一个原子内存分配请求绝不失败,但是内核会采取一些措施尽量减少这种不幸事件的发生。为此,内核为原子内存分配请求引入了保留页框池,保留页框池只在内存不足的时候才使用(具体的使用方式请参见__alloc_pages_internel中的restart段的分析)。

保留内存的数量(以KB为单位)存放在min_free_kbytes变量中。它的初始值在内核初始化时设置,并取决于直接映射到内核线性地址空间的第4个GB的物理内存的数量---也就是说,取决于包含在ZONE_DMA和ZONE_NORMAL内存管理区内的页框数目:

保留池的大小 = [sqrt(16*直接映射内存)](KB) (下取整)

但是:128 <= min_free_kbytes <= 65536

ZONE_DMA和ZONE_NORMAL内存管理区将一定数量的页框贡献给保留内存,这个数目与两个管理区的相对大小成比例。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值