2014-02-23 36 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()組合成不同的區域。這與內部簿記有關。

至於內存類型,我假設它指的是不同的內核結構,其中不同的內核結構可能每個都有一個區域。