Rozdiel medzi mmap a malloc

mmap vs malloc

V C je dynamická pamäť, čo poukazuje na alokáciu pamäte v programovacom jazyku C pomocou sady funkcií prítomných v štandardnej knižnici C. Jedným z nich je malloc, ktorý sa týka alokácie pamäte. V systéme UNIX je mmap, čo sa týka systému mapovaného na pamäť, ktorý prichádza s vlastným jedinečným vstupom / výstupom. Tieto dva (mmap a malloc) budú pri nominálnej hodnote vykonávať rovnakú funkciu, ale ďalšie preskúmanie odhalí určité rozdiely. Tieto rozdiely, ktoré vyplývajú z funkčnosti, sú uvedené nižšie.

rozdiely

Po prvé, je dôležité zistiť, či existujú dôkazy, ktoré naznačujú, že existuje značné potlačenie dostupnej pamäte. To sa dosahuje meraním výkonu programu oproti správe pamäte .

Hlavné rozhranie alokácie pamäte je malloc. Toto je najväčšie v knižnici C. Súčasťou kódu správy, ktorý obsahuje, je mmap. Keď je spustený malloc, zhromažďuje všetky dostupné systémové vybavenie. Prostredníctvom jadra, ktoré je jednou zo stratégií správy pamäte, ktoré systémy používajú na zabezpečenie uspokojivého rozdelenia pamäte, je možné mobilizovať ďalšie systémové zariadenia. Tento proces však nie je jednoduchý a je komplikovaný len preto, že bráni ľuďom vo vytváraní jednoduchých programov, ktoré môžu narušiť alokáciu pamäte, a teda vytvárať zlý výkon..

'mmap' na druhej strane je systémové volanie, ktoré preberá poplatok a žiada jadro, aby našlo nevyužitú a súvislú oblasť v adrese aplikácie, ktorá je dostatočne veľká na to, aby umožnila mapovanie viacerých stránok pamäte. Vytvára sa tiež štruktúra správy virtuálnej pamäte, ktorá v skutočnosti nemôže viesť k segfunkcii.

Malloc vo všeobecnosti funguje vo väčšine procesov správy pamäte. V prípade, že program vyžaduje dodatočnú pamäť, požičiava si ju z operačného systému. Mmap na druhej strane využíva prepínač kontextu, ktorý sa premení na jadro.

Malloc je najvhodnejší na pridelenie pamäte v akejkoľvek aplikácii bežiacej na systéme, na rozdiel od použitia mmap. To je to, čo sa musí štandardne stať, s výnimkou osobitných prípadov, keď to môže byť povolené.

Mmap možno použiť na urýchlenie reakcie aplikácií. To sa však neodporúča, pretože to končí obetovaním niektorých bajtov na stránkach, aby aplikácia mohla bežať hladko. Aj keď sa na začiatku môže zdať malý dátový obsah, jeho extrapolácia, keď chce spustiť množstvo aplikácií, môže v skutočnosti ešte viac spomaliť systém..

Po zmeraní výkonu a využitia zdrojov by sa malo vykonať dôkladné vyhodnotenie využívania údajov všetkými aplikáciami bežiacimi v systéme. Ak je možné preukázať životnosť spustených aplikácií, môže sa to zlepšiť.

Použitie mmap na alokovanie pamäte má tú nevýhodu, že alokácia a deallokácia dát v kúskoch je drahá. Dôvodom je skutočnosť, že údaje sú rozdelené do mnohých oblastí a tiež odmieta mmap pri uskutočňovaní systémových volaní.

Mmap je výhodnejšia ako malloc, pretože pamäť využitá mmap je okamžite vrátená do OS. Pamäť spotrebovaná mallocom sa nikdy nevráti, pokiaľ nedôjde k zlomu dátového segmentu. Táto pamäť je špeciálne udržiavaná na opätovné použitie.

zhrnutie

„malloc“ znamená hlavný bod pridelenia pamäte

Systém mmap volá a žiada jadro, aby našlo nevyužité oblasti v adresách aplikácií, ktoré môžu obsahovať mapovanie niekoľkých stránok s pamäťou.

Mmap sa neodporúča na prideľovanie pamäte, pretože rozdeľuje dostupnú pamäť a nemôže uskutočňovať systémové hovory

Výhodou mmap oproti malloc je dostupnosť pamäte na rozdiel od malloc pamäte, ktorá sa opakovane používa.