Unterschied zwischen MMAP und Malloc

Unterschied zwischen MMAP und Malloc

MMAP gegen malloc

Es gibt ein dynamisches Speicher in C und dies zeigt auf die Zuweisung des Speichers in der C -Programmiersprache durch eine Reihe von Funktionen, die in der C -Standardbibliothek vorhanden sind. Eine davon ist Malloc, das sich auf die Speicherzuweisung bezieht. Im UNIX -System gibt es MMAP, das sich auf ein von Speicher zugeordnetes System bezieht, das mit einem eigenen einzigartigen E/O ausgestattet ist. Diese beiden (MMAP und Malloc) werden zum Nennwert dieselbe Funktion ausführen, aber eine weitere Prüfung zeigt einige Unterschiede. Diese Unterschiede, die sich aus der Funktionalität ergeben, sind nachstehend beschrieben.

Unterschiede

Zunächst einmal ist es wichtig zu bestimmen, ob es Anhaltspunkte gibt, die darauf hinweisen, dass das verfügbare Gedächtnis erheblich ist. Dies geschieht durch die Messung der Leistung des Programms gegen Speicherverwaltung .

Die Hauptspeicherzuweisungsschnittstelle ist Malloc. Dies ist der größte in der C -Bibliothek. Ein Teil des darin enthaltenen Verwaltungscode ist MMAP.  Wenn Malloc läuft, sammelt es alle verfügbaren Systemeinrichtungen. Zusätzliche Systemeinrichtungen können über den Kernel mobilisiert werden, was eine der Strategien zur Speicherverwaltung ist, mit der Systeme sicherstellen, dass eine zufriedenstellende Speicherzuweisung vorliegt. Der Prozess ist jedoch nicht unkompliziert und wurde aus dem alleinigen Grund, Menschen daran zu hindern, einfache Programme zu erstellen, die die Speicherzuweisung erstellen und damit schlechte Leistung erzeugen können, kompliziert zu sein.

'MMAP' hingegen ist ein Systemanruf, der die Ladung übernimmt und den Kernel auffordert, eine ungenutzte und zusammenhängende Region in der Adresse einer Anwendung zu finden, die groß genug ist, um die Zuordnung mehrerer Seitenspeicher zu ermöglichen. Es gibt auch die Erstellung von Strukturen der virtuellen Speicherverwaltung, die tatsächlich nicht zu einem Segfault führen können.

Malloc funktioniert im Allgemeinen im größten Teil des Speicherverwaltungsprozesses. Für den Fall, dass das Programm zusätzlichen Speicher benötigt, wird dies vom Betriebssystem ausgeliehen. MMAP hingegen nutzt einen Kontextschalter, der sich in Kernelland umwandelt.

Malloc eignet sich am besten für die Zuweisung von Speicher in jeder auf dem System ausgeführten Anwendung im Gegensatz zur Verwendung von MMAP. Dies ist das, was standardmäßig geschehen muss, außer in besonderen Fällen, in denen dies zulässig ist.

MMAP kann verwendet werden, um die durch Anwendungen angegebene Antwort zu beschleunigen. Dies ist jedoch nicht ratsam, da es am Ende einige Bytes auf Seiten opfert, damit die Anwendung reibungslos ausgeführt werden kann. Obwohl der Datengehalt am Anfang klein erscheinen mag, kann das Extrapolieren, wenn zahlreiche Anwendungen ausgeführt werden möchten, das System noch weiter verlangsamen.

Nach der Messung der Leistung und Verwendung von Ressourcen sollte eine gründliche Bewertung der Datennutzung durch alle auf dem System ausgeführten Anwendungen durchgeführt werden.  Wenn die Lebensdauer der laufenden Anwendungen gezeigt werden können, kann sie besser werden.

Die Verwendung von MMAP zur Zuordnung des Speichers ist mit dem Nachteil verbunden, dass die Zuteilung und Deallokation von Daten in Stücken teuer ist. Dies liegt daran.

MMAP ist über Malloc vorteilhaft, da der von MMAP verbrauchte Speicher sofort an das Betriebssystem zurückgegeben wird.   Der von Malloc verbrauchte Speicher wird niemals zurückgegeben, es sei denn, es gibt einen Datensegmentpause. Dieser Speicher wird speziell wiederverwendet.

Zusammenfassung

'malloc' steht für den Hauptspeicherzuweisungspunkt

Ein MMAP -System ruft und fordert einen Kernel an, um nicht verwendete Regionen in Anwendungsadressen zu finden, wodurch die Zuordnung mehrerer Speicherseiten gerecht werden kann

MMAP wird nicht empfohlen, den Speicher zuzuweisen, da er den verfügbaren Speicher aufteilt und keine Systemaufrufe tätigen kann

Ein Vorteil von MMAP gegenüber Malloc ist die Verfügbarkeit des Gedächtnisses im Gegensatz zum Malloc -Speicher, der wiederverwendet wird.