mmap vs malloc
C yra dinaminė atmintis ir tai rodo atminties paskirstymą C programavimo kalba per funkcijų, esančių C standartinėje bibliotekoje, rinkinį. Vienas iš jų yra „malloc“, kuris nurodo atminties paskirstymą. UNIX sistemoje yra mmap, kuris nurodo į atmintį susietą sistemą, pateiktą su savo unikalia I / O. Šie du (mmap ir malloc) nominalia verte atliks tą pačią funkciją, tačiau tolesnis tyrimas atskleidžia tam tikrus skirtumus. Šie skirtumai, atsirandantys dėl funkcionalumo, yra aprašyti žemiau.
Skirtumai
Pirmiausia svarbu išsiaiškinti, ar yra įrodymų, rodančių, kad turimas atmintis yra labai slopinamas. Tai atliekama išmatuojant programos našumą atsižvelgiant į atminties valdymą .
Pagrindinė atminties paskirstymo sąsaja yra „malloc“. Tai yra didžiausia C bibliotekoje. Jame esančio valdymo kodo dalis yra „mmap“. Kai „malloc“ veikia, jis surenka visas turimas sistemos galimybes. Per branduolį galima sutelkti papildomas sistemos priemones, kurios yra viena iš atminties valdymo strategijų, kurias sistemos naudoja užtikrindamos pakankamą atminties paskirstymą. Vis dėlto procesas nėra paprastas ir buvo padarytas sudėtingas vien dėl to, kad žmonėms neleidžiama kurti paprastų programų, kurios gali neorganizuoti atminties paskirstymo ir dėl to sukurti prastą našumą..
„mmap“, kita vertus, yra sistemos skambutis, kuris imasi atsakomybės ir reikalauja, kad branduolys rastų nepanaudotą ir gretimą regioną programos adresu, kuris yra pakankamai didelis, kad būtų galima sudaryti kelių atminties puslapių žemėlapius. Taip pat kuriamos virtualiosios atminties valdymo struktūros, kurios iš tikrųjų negali sudaryti segmento.
Paprastai „Malloc“ veikia daugumoje atminties tvarkymo proceso. Jei programai reikia papildomos atminties, ji pasiskolinama iš OS. Kita vertus, Mmap naudoja konteksto jungiklį, kuris virsta branduolio žeme.
„Malloc“ geriausiai tinka atminties paskirstymui bet kurioje sistemoje veikiančioje programoje, o ne „mmap“. Tai reikalinga tam, kad nutiktų pagal nutylėjimą, išskyrus ypatingus atvejus, kai tai gali būti leidžiama.
Mmap gali būti naudojamas pagreitinti programų pateiktą atsakymą. Tačiau tai nepatartina, nes dėl to reikia paaukoti kai kuriuos baitus puslapiams, kad programa galėtų sklandžiai veikti. Nors duomenų turinys iš pradžių gali atrodyti mažas, ekstrapoliavus jį, kai norima paleisti daugybę programų, iš tikrųjų sistema gali dar labiau sulėtėti..
Išmatavus našumą ir išteklių naudojimą, reikėtų nuodugniai įvertinti duomenų naudojimą visose sistemoje veikiančiose programose. Jei bus parodytas veikiančių programų veikimo laikas, ji gali tapti geresnė.
Naudojant mmap atminties paskirstymui yra trūkumas, kad duomenų paskirstymas ir paskirstymas dalimis yra brangus. Taip yra todėl, kad duomenys yra suskaidyti į daugybę sričių, ir taip pat neleidžiama atlikti „mmap“ iš sistemos kvietimų.
„Mmap“ pranašesnis nei „malloc“, nes „mmap“ naudojama atmintis iškart grąžinama į OS. „Malloc“ naudojama atmintis niekada negrąžinama, nebent duomenų segmentas nutrūktų. Ši atmintis yra specialiai saugoma, kad būtų galima pakartotinai naudoti.
Santrauka
'malloc' reiškia pagrindinį atminties paskirstymo tašką
„Mmap“ sistema paskambina ir paprašo branduolio surasti nepanaudotus regionus programų adresuose, kuriuose gali būti kartojami keli atminties puslapiai
„Mmap“ nerekomenduojama paskirstyti atminties, nes ji skaido turimą atmintį ir negali atlikti sistemos skambučių
„Mmap“ pranašumas, palyginti su „malloc“, yra atminties prieinamumas, o ne „malloc“ atmintis, kuri naudojama pakartotinai.