Forskjellen mellom mmap og malloc

mmap vs malloc

Det er dynamisk minne i C og dette peker på allokering av minne i C programmeringsspråket gjennom et sett av funksjoner som er tilstede i C-standardbiblioteket. En av disse er malloc, som refererer til minneallokering. I UNIX-systemet er det MMAP, som refererer til et minnekortlagt system som kommer med sin egen unike I / O. Disse to (mmap og malloc) vil til samme verdi utføre den samme funksjonen, men videre undersøkelse viser noen forskjeller. Disse forskjellene, som oppstår fra funksjonalitet, er skissert nedenfor.

forskjeller

For det første er det viktig å fastslå om det foreligger bevis som tyder på at det er betydelig stifling av minnet som er tilgjengelig. Dette gjøres gjennom måling av programmets ytelse mot minnehåndtering .

Hovedminneallokeringsgrensesnittet er malloc. Dette er den største i C-biblioteket. En del av ledelseskoden som er inneholdt i den er mmap. Når malloc kjører, samler det alle tilgjengelige systemfasiliteter. Ytterligere systemfasiliteter kan mobiliseres gjennom kjernen, som er en av minnestyringsstrategiene som systemer bruker for å sikre at det er tilfredsstillende minneallokering. Prosessen er imidlertid ikke enkel, og har blitt gjort for å være komplisert av den eneste grunnen til å hindre folk i å lage enkle programmer som kan disorganisere minneallokering og dermed skape dårlig ytelse.

'mmap' derimot er et systemanrop som tar ladning og ber om at kjernen skal finne et ubrukt og sammenhengende område i en applikasjons adresse som er stor nok til å tillate kartlegging av flere sider med minne. Det er også opprettelsen av virtuelle minnehåndteringsstrukturer som i realiteten ikke kan resultere i segfault.

Malloc fungerer vanligvis i mesteparten av minnestyringsprosessen. I tilfelle programmet krever ekstra minne, lånes dette fra operativsystemet. Mmap bruker derimot en kontekstbryter som konverterer til kjerne land.

Malloc passer best for å tildele minne i alle programmer som kjører på systemet, i motsetning til bruk av mmap. Dette er det som kreves for å skje som standard, bortsett fra i spesielle tilfeller når det er tillatt.

Mmap kan brukes til å øke hastigheten på svaret gitt av applikasjoner. Dette er imidlertid ikke tilrådelig da det ender opp med å ofre noen bytes på sider, slik at applikasjonen kan løpe jevnt. Selv om datainnholdet kan virke lite i begynnelsen, ekstrapolerer det når mange applikasjoner vil kjøre, kan det faktisk redusere systemet enda lenger.

Etter måling av ytelse og bruk av ressurser, bør en grundig evaluering av datanvendelsen av alle applikasjoner som kjøres på systemet, gjøres. Hvis levetiden til programmene kan vises, kan det bli bedre.

Bruk av mmap for tildeling av minne har den ulempen at tildelingen og allokering av data i biter er dyrt. Dette skyldes at data er delt inn i mange områder, og nekter også mmap fra å lage systemanrop.

Mmap er fordelaktig over malloc fordi minne som brukes av mmap, umiddelbart returneres til operativsystemet. Minnet som brukes av malloc, returneres aldri med mindre det er et datasegmentbrudd. Dette minnet holdes spesielt for å bli gjenbrukt.

Sammendrag

'malloc' står for hovedminneallokeringspunktet

Et mmap-system ringer og ber om en kjernen for å finne ubrukte områder i applikasjonsadresser som kan imøtekomme kartlegging av flere minnesider

Mmap anbefales ikke for allokering av minne, da det deler ledig minne og kan ikke lage systemanrop

En fordel med mmap over malloc er tilgjengeligheten av minne, i motsetning til malloc-minne, som gjenbrukes.