Razlika med mmap in malloc

mmap vs malloc

V C je dinamični pomnilnik, kar kaže na dodelitev pomnilnika v programskem jeziku C prek nabora funkcij, ki so prisotne v standardni knjižnici C. Eden od teh je malloc, ki se nanaša na dodeljevanje pomnilnika. V sistemu UNIX obstaja mmap, ki se nanaša na pomnilniško preslikani sistem, ki ima svoj edinstven V / I. Ta dva (mmap in malloc) bosta po nominalni vrednosti opravljala isto funkcijo, vendar nadaljnji pregled razkrije nekatere razlike. Te razlike, ki izhajajo iz funkcionalnosti, so opisane spodaj.

Razlike

Najprej je treba ugotoviti, ali obstajajo kakršni koli dokazi, ki kažejo, da je pomnilnik na voljo močno. To se izvede z merjenjem uspešnosti programa glede na upravljanje pomnilnika .

Glavni vmesnik za dodelitev pomnilnika je malloc. To je največja v knjižnici C. Del kode za upravljanje, ki je v njem, je mmap. Ko teče malloc, zbira vse razpoložljive sistemske zmogljivosti. Dodatne sistemske zmogljivosti je mogoče aktivirati s pomočjo jedra, ki je ena od strategij upravljanja pomnilnika, ki jo sistemi uporabljajo za zagotovitev zadovoljive razporeditve pomnilnika. Vendar postopek ni enostaven in je bil zapleten zaradi edinega razloga, da bi ljudem preprečili ustvarjanje preprostih programov, ki bi lahko deorganizirali dodeljevanje pomnilnika in s tem ustvarili slabe rezultate.

'mmap' na drugi strani je sistemski klic, ki prevzame plačilo in zahteva, da jedro najde neizkoriščeno in sosednje območje na naslovu aplikacije, ki je dovolj velik, da omogoča preslikavo več strani pomnilnika. Obstaja tudi ustvarjanje struktur upravljanja navideznega pomnilnika, ki dejansko ne morejo priti do segmenta.

Malloc na splošno deluje v večini procesov upravljanja pomnilnika. Če program potrebuje dodaten pomnilnik, si ga ta izposodi v operacijskem sistemu. Mmap na drugi strani uporablja kontekstno stikalo, ki se pretvori v deželo jedra.

Malloc je najbolj primeren za razporejanje pomnilnika v kateri koli aplikaciji, ki deluje v sistemu, v nasprotju z uporabo mmap-a. To se mora privzeto zgoditi, razen v posebnih primerih, ko je morda dovoljeno.

Mmap lahko uporabite za pospešitev odziva, ki ga dajejo aplikacije. To pa ni priporočljivo, saj na koncu žrtvujete nekaj bajtov na straneh, tako da aplikacija lahko nemoteno deluje. Čeprav se lahko na začetku vsebina podatkov zdi majhna, lahko ekstrapoliranje, ko se želijo zagnati številne aplikacije, sistem še bolj upočasniti.

Po merjenju učinkovitosti in uporabe virov je treba opraviti temeljito oceno uporabe podatkov v vseh aplikacijah, ki delujejo v sistemu. Če se pokaže življenjska doba aplikacij, ki se izvajajo, se lahko izboljša.

Uporaba mmap za dodelitev pomnilnika je pomanjkljiva, ker je dodeljevanje in premestitev podatkov v koščkih drago. Razlog za to je, da so podatki razdeljeni na številna področja, poleg tega pa mmap zavrača sistemske klice.

Mmap je prednost pred mallokom, ker se pomnilnik, ki ga porabi mmap, takoj vrne v OS. Pomnilnik, ki ga uporablja malloc, se ne vrne, razen če pride do prekinitve podatkovnega segmenta. Ta spomin je posebej shranjen za ponovno uporabo.

Povzetek

'malloc' pomeni glavno točko dodelitve pomnilnika

Sistem mmap pokliče in zahteva jedro, da poišče neuporabljene regije v naslovih aplikacij, ki lahko sprejmejo preslikavo več pomnilniških strani

Mmap ni priporočljivo za dodeljevanje pomnilnika, saj razdeli na voljo pomnilnik in ne more sistemskih klicev

Prednost mmapa nad mallokom je razpoložljivost pomnilnika v nasprotju z mallokovim pomnilnikom, ki se ponovno uporabi.