2010-10-13 11 views
14

I patrząc na niektóre (na zamówienie) Zarządzający/pamięci podzielnika napisany w C i przeszedł niektórych artykułów, -Niestandardowy alokator pamięci/menedżer w C? jakie podejście?

Niektóre Linki:

muszę piaskownica małego serwera WWW za pomocą wszelkich dostępnych jeden i nie mam problemu na piśmie owijarki do programu manipulacja nitka/alokacji. Apache WS wykorzystuje pule pamięci do obsługi pamięci, a pule nie są trwałe, lecz na żądanie. Czy możecie coś zasugerować? Jakieś dobre/najlepsze podejście do tego problemu? Moje wymagania są jak poniżej; -

  1. (Bounded Response Time) alokację i de-alokacja musi być znane z wyprzedzeniem, tj pewnym stały koszt O (C), gdzie c jest stała.

  2. Fragmentacja z niejednorodnych rozmiarach przydział/de-przydziału lub sekwencji należy obchodzić, mogę napisać schematu/opakowanie dostarczyć samo.

Naprawdę doceniam pomoc i pomysły!

+0

Szukam czegoś podobnego i sprawdziłem stronę internetową IBM, ale to, co pokazują one jako 'malloc_init' jest dla systemu Unix, a biblioteka nie jest zawarta w systemie Windows. Szczególnie szukam funkcji do użycia zamiast 'sbrk()' - znalezienia ostatniego ważnego adresu z systemu operacyjnego. – frank17

Odpowiedz

2

Fragmentacja z niejednorodnych rozmiarach przydział/de-przydziału lub sekwencji należy obchodzić, mogę napisać schematu/opakowanie dostarczyć samo.

Aby uniknąć fragmentacji, konieczne będzie zastosowanie hybrydowej strategii przydzielania bloków. Hybryd oznacza tutaj bloki elementów o różnych rozmiarach niż bloki o pojedynczych rozmiarach, to znaczy przydzielający (lub otaczający go element) powinien utrzymywać bloki elementów o różnych rozmiarach (małe, średnie i duże itd.). Wszystkie wnioski o przydział należy zaokrąglić w górę do najbliższej granicy bloku. Strategia ta zapewni, że nie ucierpi na skutek fragmentacji zewnętrznej, ale może spowodować wewnętrzną fragmentację. Możesz znaleźć więcej informacji na poniższe linki:

http://www.cotsjournalonline.com/magazine/articles/view/101217/pg:2 http://people.freebsd.org/~jasone/jemalloc/bsdcan2006/jemalloc.pdf

1

Wystarczy dodać jeden do listy

Google Performance Tools

Znacznie poprawia wydajność alokacji pamięci i ma profilery procesora i pamięci. Ich implementacja Thread-Caching Malloc ma być bardzo wydajna w przypadku aplikacji wielowątkowych.

+0

Dzięki! To wygląda naprawdę dobrze. Ale jedna wątpliwość, może się mylę, ponieważ odbierałem śmieci, czy stanie się nie w czasie rzeczywistym, mam na myśli, że nie mam "Bounded Response Time"? – yadab

Powiązane problemy