Forskellen mellem mmap og malloc

mmap vs malloc

Der er en dynamisk hukommelse i C, og dette peger på allokering af hukommelse i C-programmeringssprog gennem et sæt funktioner, der findes i C-standardbiblioteket. En af disse er malloc, der henviser til hukommelsesallokering. I UNIX-systemet er der mmap, der henviser til et hukommelseskortet system, der leveres med sin egen unikke I / O. Disse to (mmap og malloc) udfører pålydende værdi den 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 afgøre, om der er nogen beviser, der tyder på, at der er betydelig kvælning af den tilgængelige hukommelse. Dette gøres ved at måle programmets ydelse mod hukommelsesstyring .

Det vigtigste interface til hukommelsesallokering er malloc. Dette er den største i C-biblioteket. En del af administrationskoden, der er indeholdt i den, er mmap. Når malloc kører, samler den alle tilgængelige systemfaciliteter. Yderligere systemfaciliteter kan mobiliseres gennem kernen, som er en af ​​de hukommelsesstyringsstrategier, som systemer bruger for at sikre, at der er tilfredsstillende hukommelsestildeling. Processen er dog ikke ligetil og er blevet gjort til at være kompliceret af den eneste grund til at forhindre folk i at oprette enkle programmer, der kan desorganisere hukommelsesallokering og dermed skabe dårlig ydelse.

'mmap' er på den anden side et systemopkald, der tager ansvar og anmoder kernen om at finde et ubrugt og sammenhængende område i en applikations adresse, der er stor nok til at muliggøre kortlægning af flere sider med hukommelse. Der er også oprettelse af virtuelle hukommelsesadministrationsstrukturer, som i virkeligheden ikke kan resultere i en segfault.

Malloc fungerer normalt i det meste af hukommelsesstyringsprocessen. I tilfælde af at programmet kræver yderligere hukommelse, lånes dette fra OS. Mmap på den anden side bruger en kontekstkontakt, der konverteres til kernejord.

Malloc er bedst egnet til at tildele hukommelse i ethvert program, der kører på systemet i modsætning til brugen af ​​mmap. Dette er, hvad der kræves, som standard, bortset fra i særlige tilfælde, hvor det muligvis er tilladt.

Mmap kan bruges til at fremskynde svaret fra applikationer. Dette anbefales dog ikke, da det ender med at ofre nogle byte til sider, så applikationen kan køre glat. Selvom dataindholdet kan virke lille i begyndelsen, kan ekstrapolering af det, når adskillige applikationer ønsker at køre, muligvis bremse systemet endnu mere.

Efter måling af ydeevne og ressourceforbrug bør der foretages en grundig evaluering af dataforbrug ved alle applikationer, der kører på systemet. Hvis levetidene for de kørende applikationer kan vises, kan det blive bedre.

Brug af mmap til tildeling af hukommelse har den ulempe, at allokering og fordeling af data i bunker er dyre. Dette skyldes, at data er opdelt i adskillige områder og også nægter mmap at foretage systemopkald.

Mmap er fordelagtigt i forhold til malloc, fordi hukommelse, der er brugt op af mmap, straks returneres til OS. Hukommelsen, der er brugt af malloc, returneres aldrig, medmindre der er et datasegmentbrud. Denne hukommelse opbevares specielt til genbrug.

Resumé

'malloc' står for det vigtigste hukommelsestildelingspunkt

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

Mmap anbefales ikke til allokering af hukommelse, da det opdeler tilgængelig hukommelse og ikke kan foretage systemopkald

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