Skillnad mellan mmap och malloc Skillnad mellan

Anonim

mmap vs malloc

Det finns dynamiskt minne i C och detta pekar på minnesfördelning i C-programmeringsspråket genom en uppsättning funktioner som finns i C-standardbiblioteket. En av dessa är malloc, som refererar till minnesallokering. I UNIX-systemet finns det mmap, som refererar till ett minneskortat system som levereras med sin egen unika I / O. Dessa två (mmap och malloc) kommer till samma värde att utföra samma funktion men ytterligare granskning visar några skillnader. Dessa skillnader, som härrör från funktionalitet, beskrivs nedan.

Skillnader

Först och främst är det viktigt att fastställa om det finns några belägg som tyder på att det finns betydande kvävning av minnet tillgängligt. Detta görs genom mätning av programmets prestanda mot minneshantering.

Gränssnittet för huvudminneallokering är malloc. Detta är det största i C-biblioteket. En del av ledningskoden i den är mmap. När malloc körs, samlar det alla tillgängliga systemfaciliteter. Ytterligare systemfaciliteter kan mobiliseras genom kärnan, vilket är en av de minneshanteringsstrategier som systemen använder för att säkerställa att det finns tillfredsställande minnesallokering. Processen är dock inte okomplicerad och har gjorts för att vara komplicerad av den enda anledningen att förhindra att människor skapar enkla program som kan disorganisera minnetallokering och därigenom skapa dålig prestanda.

'mmap' å andra sidan är ett systemsamtal som tar laddning och begär att kärnan ska hitta en oanvänd och sammanhängande region i en applikations adress som är tillräckligt stor för att möjliggöra mappning av flera sidor av minnet. Det finns också skapandet av virtuella minneshanteringsstrukturer som i själva verket inte kan resultera i en segfault.

Malloc fungerar generellt i det mesta av minneshanteringsprocessen. Om programmet kräver ytterligare minne lånas det här från operativsystemet. Mmap å andra sidan använder sig av en kontextomkopplare som omvandlar till kärnmark.

Malloc passar bäst för allokering av minne i alla program som körs på systemet i motsats till användning av mmap. Detta är vad som krävs för att hända som standard, annat än i speciella fall när det är tillåtet.

Mmap kan användas för att påskynda svaret som ges av applikationer. Detta är dock inte tillrådligt eftersom det slutar att offra vissa bitgrupper på sidor, så att applikationen kan fungera smidigt. Även om datainnehållet kan verka litet i början, extrapolerar det när många applikationer vill köra kan i själva verket sakta ner systemet ytterligare.

Efter mätning av prestanda och användning av resurser ska en noggrann utvärdering av datanvändningen av alla applikationer som körs på systemet ske.Om livslängden för applikationerna kan visas kan det bli bättre.

Användning av mmap för allokering av minne kommer med nackdelen att allokering och allokering av data i bitar är dyr. Detta beror på att data delas upp i många områden och förnekar också mmap från att ringa systemsamtal.

Mmap är fördelaktig över malloc eftersom minne som används av mmap omedelbart återförs till operativsystemet. Minnet som används av malloc returneras aldrig om det inte finns ett datasegmentbrott. Detta minne hålls speciellt för att återanvändas.

Sammanfattning

'malloc' står för huvudminneallokeringspunkten

Ett mmap-system samtalar och begär en kärna för att hitta oanvända regioner i applikationsadresser som kan rymma kartläggning av flera minnesidor

Mmap rekommenderas inte för allokera minne eftersom det delar upp tillgängligt minne och kan inte göra systemsamtal

En fördel med mmap över malloc är tillgången till minne, i motsats till malloc-minnet, vilket återanvänds.