3
我正在瀏覽linux內核源代碼中的perf源,以瞭解如何實現用戶空間探測。在很多地方,我遇到過這樣的問題:zalloc分配內存
zalloc(sizeof(struct __event_package) * npevs);
我想它位於zlib庫(用於fedora 18)。任何人都可以告訴我這個zalloc如何幫助分配內存? 在此先感謝...
我正在瀏覽linux內核源代碼中的perf源,以瞭解如何實現用戶空間探測。在很多地方,我遇到過這樣的問題:zalloc分配內存
zalloc(sizeof(struct __event_package) * npevs);
我想它位於zlib庫(用於fedora 18)。任何人都可以告訴我這個zalloc如何幫助分配內存? 在此先感謝...
你可以參考這個link:
分配是一樣的任何其他堆分配。在內核空間中,堆被分成許多空閒列表,每個空閒列表在鏈表中都有相同大小的塊。
For eg:
Freelist1 - 4 bytes/block x 10 blocks
Freelist2 - 8 bytes/block x 10 blocks
Freelist3 - 16 bytes/block x 10 blocks
....
Freelist10 - 1024 bytes/block x 10 blocks
每個自由列表代表板坯(slab allocator),並利用buddy system
所以,當一個人做了zalloc,它首先決定哪些大小空閒列表能夠滿足這一要求,然後從它找到一個空閒塊。
在一些定製的內核實現中,堆被分爲內核&其他服務。在這種情況下,* alloc需要知道要訪問哪個堆來滿足請求。
好的,謝謝你...... –