Benutzerdefinierter Speicherzuordner/-manager in C? welcher ansatz?

Lesezeit: 2 Minuten

Benutzer-Avatar
Yadab

Ich suchte nach einigen (benutzerdefinierten) Speichermanagern / -zuordnern, die in c geschrieben sind, und ging einige Artikel durch, –

Einige Links:

Ich muss einen kleinen Webserver mit einem beliebigen verfügbaren Sandbox-Server erstellen und habe kein Problem damit, Wrapper für das Thread-Handling / Zuweisungsschema zu schreiben. Apache WS verwendet Speicherpools für die Speicherverwaltung, und die Pools sind nicht dauerhaft, sondern auf Anforderungsbasis. Könnt ihr etwas vorschlagen? Irgendein guter/bester Ansatz für dieses Problem? Meine Anforderungen sind wie folgt ;-

  1. (Begrenzte Reaktionszeit) Zuweisung und Freigabe müssen im Voraus bekannt sein, dh einige konstante Kosten O(c), wobei c konstant ist.

  2. Die Fragmentierung von heterogenen Zuweisungs-/Aufhebungsgrößen oder -sequenzen sollte behandelt werden, ich kann das Schema / den Wrapper schreiben, um dasselbe bereitzustellen.

Wirklich schätzen Sie Hilfe und Ideen!

  • Ich suche nach etwas Ähnlichem und habe die IBM-Website überprüft, aber was sie zeigen malloc_init ist für Unix und die enthaltene Bibliothek ist nicht in Windows. Ich suche insbesondere nach einer Funktion, die ich stattdessen verwenden kann sbrk() – Finden der letzten gültigen Adresse aus dem OS.

    – frank17

    1. Oktober 2016 um 11:09 Uhr

Die Fragmentierung von heterogenen Zuweisungs-/Aufhebungsgrößen oder -sequenzen sollte behandelt werden, ich kann das Schema / den Wrapper schreiben, um dasselbe bereitzustellen.

Um eine Fragmentierung zu vermeiden, müssen Sie eine hybride Blockzuweisungsstrategie verwenden. Hybrid bedeutet hier unterschiedlich große Elementblöcke als Elementblöcke mit einfacher Größe zu haben, dh der Allokator (oder ein Wrapper um ihn herum) sollte Blöcke mit unterschiedlich großen Elementen (klein, mittel und groß usw.) verwalten. Alle Zuweisungsanfragen sollten auf die nächste Blockgrenze aufgerundet werden. Diese Strategie soll sicherstellen, dass Sie nicht unter externer Fragmentierung leiden, aber interne Fragmentierung verursachen können. Weitere Informationen finden Sie unter den folgenden Links:

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

Nur um ein weiteres zu Ihrer Liste hinzuzufügen

Google-Leistungstools

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

  • Vielen Dank! Es sieht sehr gut aus. Aber ein Zweifel, ich kann mich irren, wegen der Garbage Collection, wird es nicht in Echtzeit, ich meine, es wird keine “begrenzte Reaktionszeit” geben?

    – Jadab

    27. Oktober 2010 um 3:24 Uhr

1034320cookie-checkBenutzerdefinierter Speicherzuordner/-manager in C? welcher ansatz?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy