Forskel mellem mmap og malloc Forskel mellem

Anonim

mmap vs malloc

Der er dynamisk hukommelse i C, og dette peger på tildeling af hukommelse i C-programmeringssproget gennem et sæt funktioner, der findes i C-standardbiblioteket. En af disse er malloc, som refererer til hukommelseallokering. I UNIX-systemet er der mmap, der refererer til et hukommelseskartet system, der kommer med sin egen unikke I / O. Disse to (mmap og malloc) vil på samme værdi udføre samme funktion, men yderligere undersøgelse afslører nogle forskelle. Disse forskelle, der stammer fra funktionalitet, er beskrevet nedenfor.

Forskelle

For det første er det vigtigt at fastslå, om der er tegn på, at der er betydelig forringelse af den tilgængelige hukommelse. Dette gøres ved at måle programmets ydeevne mod hukommelsesstyring.

Hovedhukommelsesallokeringsgrensesnittet er malloc. Dette er den største i C-biblioteket. En del af ledelseskoden, der er indeholdt i den, er mmap. Når malloc kører, samles det alle tilgængelige systemfaciliteter. Yderligere systemfaciliteter kan mobiliseres gennem kernen, hvilket er en af ​​de hukommelsesstyringsstrategier, som systemer bruger til at sikre, at der er en tilfredsstillende hukommelseallokering. Processen er imidlertid ikke ligetil og er lavet til at være kompliceret af den eneste grund til at forhindre folk i at oprette simple programmer, der kan disorganisere hukommelseallokering og dermed skabe dårlige resultater.

'mmap' på den anden side er et systemopkald, der tager opladning og anmoder kernen om at finde en ubrugt og sammenhængende region i en applikations adresse, der er stor nok til at tillade kortlægning af flere sider af hukommelsen. Der er også skabelsen af ​​virtuelle hukommelsesstyringsstrukturer, som i virkeligheden ikke kan resultere i en segfault.

Malloc fungerer generelt i det meste af hukommelsesstyringsprocessen. I tilfælde af at programmet kræver ekstra hukommelse, lånes dette fra OS. Mmap derimod gør brug af en kontekstomskifter, der konverterer til kerneland.

Malloc passer bedst til tildeling af hukommelse i enhver applikation, der kører på systemet, i modsætning til brugen af ​​mmap. Dette er, hvad der skal ske som standard, undtagen i særlige tilfælde, når det er tilladt.

Mmap kan bruges til at fremskynde svaret fra applikationer. Dette er dog ikke tilrådeligt, da det ender med at ofre nogle bytes på sider, så applikationen kan køre problemfrit. Selvom dataindholdet måske synes at være lille i starten, ekstrapolerer det, når mange applikationer vil køre, kan det sænke systemet endnu mere.

Efter måling af ydeevne og brug af ressourcer skal en grundig evaluering af dataforbruget foretages af alle applikationer, der kører på systemet.Hvis levetiden for applikationerne kan vises, kan det blive bedre.

Brug af mmap til tildeling af hukommelse har den ulempe, at tildelingen og deallokering af data i klumper er dyr. Dette skyldes, at data er opdelt i adskillige områder, og nægter også mmap fra at foretage systemopkald.

Mmap er fordelagtig over malloc, fordi hukommelse brugt af mmap straks vender tilbage til OS. Hukommelsen, der bruges af malloc, returneres aldrig, medmindre der er en datasegmentbrud. Denne hukommelse opbevares specielt for at blive genbrugt.

Sammendrag

'malloc' står for hovedhukommelsesallokeringspunkt

Et mmap-system opkald og kræver en kerne for at finde ubrugte regioner i applikationsadresser, der kan rumme kortlægning af flere hukommelsessider

Mmap anbefales ikke til tildeling af hukommelse, da den deler op til ledig hukommelse og ikke kan foretage systemopkald.

En fordel ved MMAP over malloc er tilgængeligheden af ​​hukommelse, i modsætning til malloc-hukommelsen, som genbruges.