Mmap vs. Malloc: Unterschied und Vergleich

In der C-Programmierung gibt es einen dynamischen Speicher, der über eine Reihe von Funktionen auf die Zuweisung des Speichers in der C-Standardbibliothek hinweist. Malloc ist eines davon und wird zum Zuweisen von Speicher verwendet.

Dann gibt es mmap. Das wird als speicherabgebildetes System verwendet, das seine einzigartige Ein- und Ausgabe hat. Diese beiden bieten die gleichen Funktionen, aber wenn Sie sich eingehender mit diesem Thema befassen, werden einige Unterschiede deutlich.

Key Take Away

  1. mmap weist Speicher zu, indem es Dateien oder Geräte in den Adressraum abbildet, während malloc Speicher vom Heap zuweist.
  2. mmap bietet Shared-Memory-Funktionen für die Kommunikation zwischen Prozessen, malloc hingegen nicht.
  3. Von mmap zugewiesener Speicher wird automatisch auf Null initialisiert, während malloc nicht initialisierten Speicher zurückgeben kann.

Mmap gegen Malloc

Mmap ist ein Systemaufruf, der eine Datei oder ein Gerät in den Speicher abbildet. Er gibt einen Zeiger auf den zugewiesenen Speicher zurück, der für verschiedene Zwecke, beispielsweise zum Speichern von Daten, verwendet werden kann. Malloc ist eine Bibliotheksfunktion, die einen Speicherblock einer bestimmten Größe zuteilt und einen Zeiger auf das erste Byte des Blocks zurückgibt.

Mmap gegen Malloc

Mmap in Computing ist ein POSIX-Multitasking-Systemaufruf, der alle Daten, Dateien und Geräte in seinem Speicher aufzeichnet. Dies wird auch als Methode bezeichnet, die zu speicherzugeordneten Dateien gehört und das Kopieren von Daten in ihren physischen Speicher implementiert, da der Inhalt nicht direkt vom Laufwerk gelesen werden kann.

Malloc ist die Kurzform für den Begriff Speicherzuordnung, die verwendet wird, um einen riesigen Datenblock dynamisch zuzuweisen, in Bezug auf die angegebene Größe, und wenn es erfolgreich ist, gibt es einen Zeiger zurück, der auf das erste Byte des zugewiesenen Speichers zeigt, andernfalls gibt es NULL zurück .

Lesen Sie auch:  Spyware vs. Keylogger: Unterschied und Vergleich

Beim eigentlichen Speicherzuweisungsmechanismus stehen viele verschiedene Errungenschaften zur Verfügung, die von Malloc verwendet werden.

Vergleichstabelle

VergleichsparametermmmapMalloc
DefinitionMmap wird als Systemaufruf bezeichnet, der den Kernel auffordert, eine große Adresse zum Zuordnen von Seiten zu finden.Malloc ist die Hauptspeicherzuweisungsschnittstelle, die alle im System verfügbaren Einrichtungen sammelt.
FunktionMmap verwendet den Kontextwechsel und macht es zu einem Kernelland.Malloc weist den Speicherblock in apile zu.
Auch als bezeichnetMmap wird auch als Systemaufruf bezeichnet.Malloc ist auch als Hauptspeicherzuweisungsschnittstelle bekannt.
ErgebnisseMmap wirkt sich nicht auf die Leistung anderer Systeme aus.Malloc desorganisiert und erzeugt eine schlechte Leistung des Systems.
Am besten geeignet fürMmap ist am besten geeignet, um den Prozess der Antworten von Anwendungen zu beschleunigen. Malloc eignet sich am besten für die Zuweisung von Speicher in jeder Anwendung im System.
Pinne dies jetzt, um dich später daran zu erinnern
Das anpinnen

Was ist Mmap?

Mmap wird als POSIX-kompatibler Unix-Systemaufruf bezeichnet, der die Daten, Dateien oder Geräte im Speicher abbildet. Es handelt sich um eine Eingabe- und Ausgabemethode für die Speicherzuordnung.

Im aufrufenden Prozess wird eine neue Zuordnung im virtuellen Adressraum erstellt. In addr wird die Anfangsadresse des neuen Mappings gefunden und die Länge des Mappings wird durch das Längenargument angegeben (das größer als 0 sein sollte).

Wenn festgestellt wird, dass addr NULL ist, wird die Adresse vom Kernel ausgewählt, der die Zuordnung vornimmt, was als die einfachste Methode zur Erstellung einer neuen Zuordnung angesehen wird.

Lesen Sie auch:  Fedora vs. Centos: Unterschied und Vergleich

Wenn die Adresse nicht als NULL gefunden wird, betrachtet der Kernel dies als Hinweis darauf, die Zuordnung an einem Ort unter Linux zu platzieren.

Der Kernel findet die nächstgelegene Seitengrenze und versucht, in diesem Bereich eine Zuordnung vorzunehmen. Wenn der Kernel feststellt, dass in dem Bereich bereits eine Zuordnung vorhanden ist, wählt er eine neue Adresse aus, die möglicherweise von der vom Kernel angenommenen Angabe abhängt.

Als Ergebnis dieses Aufrufs wird die Adresse des neuen Mappings zurückgesendet. Unmittelbar nach der Rückgabe des Aufrufs schließt der Dateideskriptor fd die Zuordnung sofort ohne Ungültigmachung.

Was ist Malloc?

malloc() ist eine Speicherzuweisungsfunktion, die die Größe der Bytes zuweist und einen Zeiger auf den zugewiesenen Speicher zurücksendet. Der Speicher wird nicht auf seine Ausgangsposition gesetzt.

Wenn der Name des Größenbytes 0 ist, dann wird von malloc() entweder NULL oder ein Zeiger auf einen eindeutigen Wert gesendet, der später erfolgreich an free() übergeben werden kann.

Der Speicherplatz, auf den ptr zeigt, wird durch die Funktion free() freigegeben, die eigentlich von malloc() zurückgesendet werden sollte. Andernfalls soll undefiniertes Verhalten auftreten, wenn free (ptr) zuvor aufgerufen wurde.

Es wird kein Vorgang durchgeführt oder durchgeführt, wenn der ptr als NULL gefunden wird. Wenn festgestellt wird, dass ptr NULL ist, ist der Wert eines Aufrufs für jeden Wert von size gleich malloc (size). Wenn es äquivalent zu 0 ist und festgestellt wird, dass ptr nicht NULL ist, ist der Aufrufwert gleich free (ptr).

Lesen Sie auch:  48+ 123Movies Proxy Mirror Sites zum Entsperren

Nur wenn der ptr NULL ist, sollte er durch einen vorherigen Aufruf von malloc() zurückgesendet worden sein. Und der Bereich, auf den gezeigt wurde, wurde geändert, ein freier (ptr) ist erstellt.

Standardmäßig wird unter Linux eine optimistische Speicherzuweisungsstrategie verfolgt. Dies bedeutet, dass die Möglichkeit besteht, dass Speicher verloren geht, wenn malloc() einen Wert ungleich NULL zurücksendet.

Und wenn sich herausstellt, dass das System zu wenig Speicher hat, werden einige Prozesse durch den OOM-Killer zerstört.

Hauptunterschiede zwischen Mmap und Malloc

  1. Mmap wird als Systemaufruf bezeichnet, während Malloc eine Hauptspeicherzuweisungsschnittstelle ist.
  2. Mmap hilft bei der Zuordnung von Seiten, während Malloc Geräte und Daten in einem System zuordnet.
  3. Mmap wandelt den Kontextwechsel in Kernelland um, Malloc hingegen allokiert Speicher in einem Gerät.
  4. Mmap wird bevorzugt, um den Antwortprozess zu beschleunigen, während Malloc für die Speicherzuweisung in einem System bevorzugt wird.
  5. Mmap hat nach der Ausführung keinen Einfluss auf die Leistung anderer Systemanwendungen, während Malloc die Leistung stört, um zu verhindern, dass Personen das System durcheinander bringen.
Literaturhinweise
  1. https://www.usenix.org/publications/library/proceedings/als01/full_papers/ezolt/ezolt_html/
  2. https://www.usenix.org/publications/library/proceedings/als01/full_papers/ezolt/ezolt.ps

Eine Bitte?

Ich habe mir so viel Mühe gegeben, diesen Blogbeitrag zu schreiben, um Ihnen einen Mehrwert zu bieten. Es wird sehr hilfreich für mich sein, wenn Sie es in den sozialen Medien oder mit Ihren Freunden / Ihrer Familie teilen möchten. TEILEN IST ♥️

Möchten Sie diesen Artikel für später speichern? Klicken Sie auf das Herz in der unteren rechten Ecke, um in Ihrer eigenen Artikelbox zu speichern!

Über den Autor

Chara Yadav hat einen MBA in Finanzen. Ihr Ziel ist es, finanzbezogene Themen zu vereinfachen. Sie ist seit rund 25 Jahren im Finanzbereich tätig. Sie hat mehrere Finanz- und Bankkurse für Business Schools und Gemeinden gehalten. Lesen Sie mehr bei ihr Bio-Seite.