2014-02-23 35 views
1

我正在阅读由Marshall McKusick和George Neville-Neil撰写的freeBSD书籍。在内核内存管理中,它提到了关于区域分配器的以下内容:FreeBSD区域分配器

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

我的问题是:

1)正在这里所指哪些存储类型?

2)区域分配器环境中的不同区域是什么意思?

如果有人还可以提供一些参考,更好地解释这一点,它将不胜感激。

谢谢。

回答

1

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

从手册页:

区域分配器第一次出现在FreeBSD的3.0。它在FreeBSD 5.0中被彻底改变为 以作为slab allocator

类似于在存储器池的存储器竞技场/区域,但作为手册页提到,与slab分配器样特征。正如您的报价所暗示的那样,您不能从一个区域uma_zalloc(),然后将uma_zfree()组合成不同的区域。这与内部簿记有关。

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