Rozdíl mezi mmap a malloc

mmap vs malloc

V C je dynamická paměť, což ukazuje na přidělení paměti v programovacím jazyce C pomocí sady funkcí přítomných ve standardní knihovně C. Jedním z nich je malloc, který odkazuje na přidělení paměti. V systému UNIX je mmap, což znamená systém mapovaný v paměti, který přichází s vlastním jedinečným vstupem / výstupem. Tyto dva (mmap a malloc) budou při nominální hodnotě vykonávat stejnou funkci, ale další kontrola odhalí některé rozdíly. Tyto rozdíly, které vyplývají z funkčnosti, jsou uvedeny níže.

Rozdíly

Zaprvé je důležité zjistit, zda existují důkazy naznačující, že je k dispozici významné potlačení dostupné paměti. To se provádí měřením výkonu programu proti správě paměti .

Hlavní rozhraní pro přidělování paměti je malloc. Toto je největší v knihovně C. Součástí kódu správy, který obsahuje, je mmap. Když je spuštěn malloc, shromažďuje všechna dostupná systémová zařízení. Další systémová zařízení lze mobilizovat prostřednictvím jádra, což je jedna ze strategií správy paměti, které systémy používají k zajištění uspokojivého přidělování paměti. Tento proces však není přímý a byl zkomplikován pouze proto, že brání lidem ve vytváření jednoduchých programů, které mohou narušit přidělování paměti a tím vytvářet špatný výkon..

'mmap' na druhé straně je systémové volání, které přebírá poplatek a požaduje jádro, aby našlo nepoužitou a souvislou oblast v adrese aplikace, která je dostatečně velká, aby umožnila mapování několika stránek paměti. Existuje také vytváření struktur správy virtuální paměti, které ve skutečnosti nemohou vyústit v segfault.

Malloc obecně funguje ve většině procesů správy paměti. V případě, že program vyžaduje další paměť, půjčí si ji z operačního systému. Mmap na druhé straně využívá kontextový přepínač, který se převádí na jádro země.

Malloc je nejvhodnější pro přidělování paměti v jakékoli aplikaci spuštěné v systému, na rozdíl od použití mmap. To je to, co je požadováno ve výchozím nastavení, s výjimkou zvláštních případů, kdy to může být povoleno.

Mmap lze použít k urychlení reakce dané aplikacemi. To však není vhodné, protože to nakonec obětuje některé bajty na stránkách, aby aplikace mohla běžet hladce. I když se na začátku může zdát malý datový obsah, extrapolace, když chce spouštět mnoho aplikací, může ve skutečnosti systém ještě více zpomalit..

Po měření výkonu a využití prostředků by mělo být provedeno důkladné vyhodnocení využití dat všemi aplikacemi běžícími v systému. Pokud lze ukázat životnost spuštěných aplikací, může se to zlepšit.

Použití mmap pro alokaci paměti má tu nevýhodu, že alokace a deallokace dat v blocích je drahá. Důvodem je to, že data jsou rozdělena do mnoha oblastí a také odmítají mmap při provádění systémových volání.

Mmap je výhodnější než malloc, protože paměť spotřebovaná mmap je okamžitě vrácena do OS. Paměť spotřebovaná mallocem se nikdy nevrací, pokud nedojde k přerušení datového segmentu. Tato paměť je speciálně uchovávána pro opakované použití.

souhrn

'malloc' znamená hlavní alokační bod paměti

Systém mmap volá a žádá jádro, aby našlo nevyužité oblasti v aplikačních adresách, které mohou pojmout mapování několika paměťových stránek.

Mmap se nedoporučuje pro přidělování paměti, protože rozděluje dostupnou paměť a nemůže provádět systémová volání

Výhodou mmap oproti malloc je dostupnost paměti, na rozdíl od malloc paměti, která se znovu používá.