【问题标题】:FreeBSD zone allocatorFreeBSD 区域分配器
【发布时间】:2014-02-24 07:22:21
【问题描述】:

我正在阅读由 Marshall McKusick 和 George Neville-Neil 撰写的 freeBSD 书籍。在内核内存管理中,提到了zone allocator如下:

每种内存类型都有自己的区域,所有分配都是从该区域进行的。在一个区域中分配的内存不能被任何其他区域或通用内存分配器使用。

我的问题是:

1) 这里引用了哪些内存类型?

2) 区域分配器上下文中的不同区域是什么意思?

如果有人也可以提供一些更好地解释这一点的参考资料,我们将不胜感激。

谢谢。

【问题讨论】:

    标签: freebsd


    【解决方案1】:

    FreeBSD 中的区域分配器是uma(9)

    来自手册页:

    区域分配器首先出现在 FreeBSD 3.0 中。这是从根本上 在 FreeBSD 5.0 中更改为 slab allocator

    zone 类似于内存池中的内存竞技场/区域,但正如手册页所述,具有类似平板分配器的功能。正如您的报价所暗示的那样,您不能从一个区域 uma_zalloc() 然后将 uma_zfree() 该块放入另一个区域。这会破坏内部簿记。

    至于内存类型,我假设它指的是不同的内核结构,其中不同的内核结构可能各有一个区域。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-25
      • 2011-05-17
      • 1970-01-01
      • 2012-12-10
      • 2016-02-17
      • 2011-11-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多