2010-10-13 9 views
14

ich für einige (custom) Speichermanager/allocator in c geschrieben suchen und ging durch einige Artikel, -Benutzerdefinierter Speicherzuordner/Manager in C? Welcher Ansatz?

Einige Links:

Ich habe einen kleinen Web-Server unter Verwendung eines beliebigen verfügbaren man Sandbox und ich habe kein Problem schriftlich Wrapper für Fadenhandhabungs/Zuordnungsschema. Apache WS verwendet Speicherpools für die Verarbeitung von Speicher, und die Pools sind nicht persistent, sondern auf Anfrage. Kannst du etwas vorschlagen? Einige gute/beste Herangehensweise an dieses Problem? Meine Anforderungen sind wie folgt; -

  1. (Bounded Response Time) Zuteilung und Freigabe sind im Voraus bekannt sein, das heißt einig konstant Kosten O (c), wobei c konstant ist.

  2. Fragmentation aus heterogenen Zuordnung/de-Zuweisung Größen oder Sequenzen behandelt werden sollen, kann ich das Schema/Wrapper das gleiche zu schaffen schreiben.

Wirklich schätzen Sie Hilfe und Ideen!

+0

Ich bin auf der Suche nach etwas ähnlichem und ich überprüft IBM Website, aber was sie als 'malloc_init' zeigen, ist für Unix und die Bibliothek enthalten ist nicht in Windows. Ich suche insbesondere nach einer Funktion, die statt 'sbrk()' verwendet - die letzte gültige Adresse vom Betriebssystem findet. – frank17

Antwort

2

Fragmentation aus heterogenen Zuordnung/de-Zuweisung Größen oder Sequenzen behandelt werden sollen, kann ich das Schema/Wrapper das gleiche zu schaffen schreiben.

Um eine Fragmentierung zu vermeiden, müssen Sie eine hybride Blockzuweisungsstrategie verwenden. Hybrid bedeutet hier unterschiedlich große Elementblöcke als Elementblöcke mit einer einzigen Größe, d. H. Der Zuordner (oder eine Umhüllung um ihn herum) sollte Blöcke von Elementen unterschiedlicher Größe (klein, mittel und groß usw.) enthalten. Alle Zuordnungsanforderungen sollten auf die nächste Blockgrenze aufgerundet werden. Diese Strategie soll sicherstellen, dass Sie nicht von externer Fragmentierung betroffen sind, sondern interne Fragmentierung verursachen können. Sie können weitere Informationen unter folgenden Links finden:

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

1

Nur noch eine zu Ihrer Liste

hinzufügen

Google Performance Tools

Es verbessert die Speicherzuweisungsleistung erheblich und es verfügt über CPU- und Speicherprofiler. Ihre Thread-Caching Malloc Implementierung soll für Multithread-Anwendungen recht effizient sein.

+0

Danke! Es sieht sehr gut aus. Aber ein Zweifel, ich könnte mich irren, wegen der Sammlung von Garbage, wird es nicht-realtime, ich meine scheitern "Bounded Response Time" haben? – yadab

Verwandte Themen