mmap vs 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 van belang 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 belangrijkste geheugentoewijzingsinterface 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 veroorzaken..
'mmap' aan de andere kant is een systeemaanroep die de leiding neemt en de kernel verzoekt om een ongebruikt en aaneengesloten gebied in het adres van een toepassing te vinden dat groot genoeg is om meerdere pagina's geheugen in kaart te kunnen brengen. 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 toepassingen 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.
Het gebruik van mmap voor het toewijzen van geheugen heeft het nadeel dat de toewijzing en de toewijzing van gegevens in chunks duur is. 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 wordt gebruikt door mmap onmiddellijk wordt teruggezet naar 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 het belangrijkste geheugentoewijzingspunt
Een mmap-systeem roept en verzoekt een kernel om niet-gebruikte regio's in toepassingsadressen te vinden die ruimte bieden voor het in kaart brengen van verschillende geheugenpagina's
Mmap wordt niet aanbevolen voor het toewijzen van geheugen, omdat het het beschikbare geheugen splitst en geen systeemoproepen kan maken
Een voordeel van mmap over malloc is de beschikbaarheid van geheugen, in tegenstelling tot malloc-geheugen, dat opnieuw wordt gebruikt.