mmap vs malloc
A dinamikus memória a C-ben van, és ez a memória elosztására szolgál a C programozási nyelven a C standard könyvtárban található funkciók halmazán keresztül. Ezek egyike a malloc, amely a memóriaelosztásra utal. A UNIX rendszerben van mmap, amely egy memórialeképezett rendszerre utal, amely a saját egyedi I / O-jával jár. Ez a kettő (mmap és malloc) névértéken ugyanazt a funkciót fogja ellátni, de a további vizsgálat bizonyos különbségeket tárt fel. Ezeket a funkcionalitásból fakadó különbségeket az alábbiakban ismertetjük.
Különbségek
Először is fontos megvizsgálni, hogy van-e bizonyíték arra, hogy a rendelkezésre álló memória jelentős mértékben elfojtott. Ez a program teljesítményének a memóriakezeléssel szembeni mérésével történik .
A fő memóriaelosztási interfész a malloc. Ez a legnagyobb a C könyvtárban. A benne található menedzsment kód része az mmap. Amikor a malloc fut, összegyűjti az összes rendelkezésre álló rendszer lehetőséget. További rendszereszközök mobilizálhatók a kernel segítségével, amely az egyik memóriakezelési stratégia, amelyet a rendszerek használnak a megfelelő memóriaelosztás biztosítására. A folyamat azonban nem egyszerű, és bonyolultá tette annak puszta okát, hogy megakadályozzák az embereket olyan egyszerű programok létrehozásában, amelyek megzavarhatják a memóriaelosztást, és ezáltal rossz teljesítményt eredményezhetnek..
Az 'mmap' viszont egy olyan rendszerhívás, amely felveszi a felelősséget, és arra kéri a kernelt, hogy keressen egy nem használt és szomszédos régiót az alkalmazás címében, amely elég nagy ahhoz, hogy több memória oldalt leképezzen. Létrejön egy olyan virtuális memóriakezelő struktúra is, amely valójában nem eredményez szegmentumot.
A Malloc általában a memóriakezelési folyamat nagy részében működik. Ha a program további memóriát igényel, akkor azt az operációs rendszer kölcsönzi. Az Mmap viszont egy olyan kontextus-kapcsolót használ, amely kernelterületvé alakul.
A Malloc leginkább a memória elosztására szolgál a rendszeren futó bármely alkalmazásban, szemben az mmap-vel. Alapértelmezés szerint erre van szükség, kivéve azokat a különleges eseteket, amikor ez megengedett.
Az Mmap felhasználható az alkalmazások által adott válasz felgyorsítására. Ez azonban nem ajánlott, mivel végül néhány bájtot feláldoz az oldalakhoz, hogy az alkalmazás zökkenőmentesen működjön. Noha az adattartalom eleinte kicsinek tűnhet, az extrapolálás, amikor számos alkalmazás futtatni akarja, valójában még tovább lassíthatja a rendszert.
A teljesítmény és az erőforrások felhasználásának mérése után alaposan ki kell értékelni az adatok felhasználását a rendszeren futó összes alkalmazásban. Ha a futó alkalmazások élettartama megmutatható, akkor jobbá válhat.
Az mmap használata a memória kiosztására azzal a hátránnyal jár, hogy az adatok kiosztása és elosztása darabonként drága. Ennek oka az, hogy az adatok számos területre vannak felosztva, és megtagadja az mmap használatát a rendszerhívások kezdeményezésekor.
Az Mmap előnyös a malloc-hoz képest, mivel az mmap által felhasznált memória azonnal visszakerül az operációs rendszerbe. A malloc által felhasznált memória soha nem kerül visszaadásra, ha nincs adatszakma. Ezt a memóriát kifejezetten újrafelhasználás céljából tartják.
összefoglalás
'malloc' a fő memória allokációs pontot jelenti
Az mmap rendszer felhívja és kér egy kernelt, hogy keressen fel nem használt régiókat az alkalmazáscímekben, amelyek több memória oldal leképezését is lehetővé teszik
Az Mmap nem ajánlott a memória kiosztására, mivel felosztja a rendelkezésre álló memóriát és nem képes rendszerhívásokat kezdeményezni
Az mmap előnye a mallochoz képest a memória rendelkezésre állása, szemben az újrafelhasznált malloc memóriával.