Különbség mmap és malloc között A különbség a

Anonim

mmap vs malloc

Dinamikus memória van a C-ben, és a C szabványos könyvtárban található funkciók segítségével a C programozási nyelv memóriaelosztására utal. Ezek közül az egyik a malloc, ami a memóriaelosztásra utal. A UNIX rendszerben mmap van, amely egy olyan memória-leképezett rendszerre utal, amely saját egyedi I / O-jával rendelkezik. Ez a két (mmap és malloc) névérték ugyanazt a feladatot látja el, de a további vizsgálat bizonyos különbségeket tár fel. Ezeket a különbségeket, amelyek a funkcionalitásból származnak, az alábbiakban vázoljuk.

Különbségek

Elsőként fontos megállapítani, hogy van-e olyan bizonyíték, amely arra utal, hogy a rendelkezésre álló memória jelentősen elfojt. Ez a program teljesítményének mérése a memória kezelésével szemben.

A fő memóriaelosztási felület a malloc. Ez a legnagyobb a C könyvtárban. A benne foglalt kezelési kód egy része mmap. Amikor a malloc fut, összegyűjti az összes rendelkezésre álló rendszert. A rendszermagon keresztül további rendszerteljesítmények mobilizálhatók, ami a memóriamenedzsment stratégiák egyike, melyeket a rendszerek biztosítanak megfelelő memóriaelosztás biztosítására. A folyamat azonban nem egyszerű, és bonyolulttá vált, mert egyedülállóan megakadályozza az emberek számára, hogy olyan egyszerű programokat hozzanak létre, amelyek szervezik a memóriaelosztást, és így rossz teljesítményt nyújtanak.

A "mmap" viszont egy rendszerhívás, amely felveszi a díjat, és kéri a rendszermagot, hogy egy olyan alkalmazás címében találjon egy nem használt és összefüggő régiót, amely elég nagy ahhoz, hogy lehetővé tegye több oldal feltérképezését a memória. Vannak virtuális memória-kezelő struktúrák is, amelyek valójában nem eredményezhetnek egy segfaultot.

A Malloc általában a legtöbb memóriakezelési folyamatban működik. Abban az esetben, ha a program további memóriát igényel, ezt az operációs rendszertől kölcsönzik. Az Mmap viszont egy olyan környezetkapcsolót használ, amely a rendszermag földjévé alakul.

A Malloc a legalkalmasabb a memória lekérdezéséhez a rendszeren futó bármely alkalmazásban, szemben a mmap használatával. Ez az alapértelmezés szerint meg kell történnie, kivéve a különleges eseteket, ha megengedett.

Az Mmap felhasználható az alkalmazások által adott válasz gyorsítására. Ez azonban nem ajánlatos, mivel végül néhány bájtot feláldoz az oldalakra, hogy az alkalmazás zökkenőmentesen futhasson. Bár az adattartalom eleinte kicsinek tűnhet, az extrapolálás, ha sok alkalmazás szeretne futni, valójában tovább lassítja a rendszert.

Az erőforrások teljesítményének és erőforrásainak felhasználását követően a rendszeren futó összes alkalmazás adatainak alapos értékelését meg kell tenni.Ha a futó alkalmazások életciklusa látható, akkor jobb lesz.

A MMAP használata a memória kiosztásához azzal a hátránnyal jár, hogy az adatok elosztása és elosztása darabokban drága. Ez azért van, mert az adatok több területen vannak felosztva, és megtagadják a mmap-ot a rendszerhívások kezdeményezésétől.

Az Mmap előnyös mint a malloc, mert a MMAP által használt memória azonnal visszaáll az operációs rendszerbe. A malloc által használt memóriát soha nem adjuk vissza, hacsak nincs adatszegmentés. Ez a memória speciálisan visszatartásra kerül.

Összegzés

"malloc" a

fő memóriaelosztási pontot jelenti> A mmap rendszer kéri és kernelt kér, hogy használatlan területeket találjon az alkalmazás címeként, amelyek képesek több memória oldal leképezésére

Az Mmap nem ajánlott elosztja a memóriát, mivel felosztja a rendelkezésre álló memóriát, és nem tud rendszerhívásokat

A mmap több mint a malloc előnye a memória rendelkezésre állása, szemben a malloc memóriával, amelyet újra felhasználnak.