Verschil tussen mmap en malloc Verschil tussen

Anonim

mmap versus malloc

Er is dynamisch geheugen in C en dit verwijst naar de toewijzing van geheugen in de C-programmeertaal door middel van een reeks functies die aanwezig zijn in de C-standaardbibliotheek. Een daarvan is malloc, dat verwijst naar geheugentoewijzing. In het UNIX-systeem is er mmap, dat verwijst naar een geheugen toegewezen systeem dat wordt geleverd met zijn eigen unieke I / O. Deze twee (mmap en malloc) zullen op het eerste gezicht dezelfde functie vervullen, maar verder onderzoek onthult enkele verschillen. Deze verschillen, die voortkomen uit functionaliteit, worden hieronder beschreven.

Verschillen

Allereerst is het belangrijk om vast te stellen of er enig bewijs is dat aangeeft dat er een aanzienlijk verstikkend geheugen beschikbaar is. Dit wordt gedaan door de prestaties van het programma te meten met geheugenbeheer.

De hoofdgeheugentoewijzingsinterface is malloc. Dit is de grootste in de C-bibliotheek. Een deel van de managementcode die erin is opgenomen, is mmap. Wanneer malloc wordt uitgevoerd, verzamelt het alle beschikbare systeemfaciliteiten. Extra systeemfaciliteiten kunnen worden gemobiliseerd via de kernel, een van de geheugenbeheerstrategieën die door systemen worden gebruikt om te zorgen voor een bevredigende geheugenallocatie. Het proces is echter niet eenvoudig en het is gecompliceerd gemaakt om te voorkomen dat mensen eenvoudige programma's maken die de geheugentoewijzing kunnen desorganiseren en dus slechte prestaties kunnen leveren.

'mmap' is echter een systeemaanroep die de leiding neemt en verzoekt de kernel een ongebruikt en aaneengesloten gebied in het adres van een applicatie te vinden dat groot genoeg is om meerdere pagina's in kaart te brengen van geheugen. Er is ook de creatie van structuren voor virtueel geheugenbeheer die in feite niet kunnen resulteren in een segfault.

Malloc functioneert over het algemeen in het grootste deel van het geheugenbeheerproces. In het geval dat het programma extra geheugen vereist, wordt dit geleend van het besturingssysteem. Mmap maakt echter gebruik van een contextswitch die wordt omgezet in kernelland.

Malloc is het meest geschikt voor het toewijzen van geheugen in elke applicatie die op het systeem draait, in tegenstelling tot het gebruik van mmap. Dit moet standaard gebeuren, behalve in speciale gevallen waarin dit mogelijk is toegestaan.

Mmap kan worden gebruikt om het antwoord van applicaties te versnellen. Dit is echter niet aan te raden, omdat het uiteindelijk sommige bytes ophoudt aan pagina's, zodat de applicatie soepel kan verlopen. Hoewel de datainhoud in het begin misschien klein lijkt, kan extrapolatie ervan wanneer talrijke applicaties willen worden uitgevoerd, het systeem in feite nog verder vertragen.

Nadat de prestaties en het gebruik van bronnen zijn gemeten, moet een grondige evaluatie van het gegevensgebruik door alle toepassingen die op het systeem worden uitgevoerd, worden uitgevoerd.Als de levensduren van de geopende applicaties kunnen worden getoond, kan dit beter worden.

Gebruik van mmap voor het toewijzen van geheugen heeft het nadeel dat de toewijzing en de toewijzing van gegevens in blokken duur zijn. Dit komt omdat de gegevens zijn opgesplitst in verschillende gebieden, en mmap ook wordt ontzegd voor het voeren van systeemaanroepen.

Mmap is voordelig ten opzichte van malloc, omdat geheugen dat door mmap wordt gebruikt onmiddellijk wordt teruggezet in het besturingssysteem. Het geheugen dat door malloc wordt gebruikt, wordt nooit teruggegeven, tenzij er sprake is van een onderbreking van het gegevenssegment. Dit geheugen wordt speciaal bewaard om opnieuw te worden gebruikt.

Samenvatting

'malloc' staat voor hoofdgeheugenallocatiepunt

Een mmap-systeem roept en vraagt ​​een kernel om ongebruikte regio's in toepassingsadressen te zoeken die ruimte bieden voor toewijzing van meerdere geheugenpagina's

Mmap wordt niet aanbevolen voor geheugen toewijzen aangezien het beschikbare geheugen wordt gesplitst en systeemaanroepen niet kan maken

Een voordeel van mmap ten opzichte van malloc is de beschikbaarheid van geheugen, in tegenstelling tot malloc-geheugen, dat opnieuw wordt gebruikt.