mmap vs malloc
C ir dinamiska atmiņa, un tas norāda uz atmiņas piešķiršanu C programmēšanas valodā, izmantojot funkciju kopu, kas atrodas C standarta bibliotēkā. Viens no tiem ir malloc, kas attiecas uz atmiņas piešķiršanu. UNIX sistēmā ir mmap, kas attiecas uz atmiņā kartētu sistēmu, kurai ir sava unikālā I / O. Šie divi (mmap un malloc) pēc nominālvērtības veiks vienu un to pašu funkciju, bet turpmāka pārbaude atklāj dažas atšķirības. Šīs atšķirības, kas rodas no funkcionalitātes, ir aprakstītas zemāk.
Atšķirības
Pirmkārt, ir svarīgi noskaidrot, vai ir kādi pierādījumi, kas norāda uz ievērojamu pieejamās atmiņas slāpēšanu. Tas tiek veikts, izmērot programmas veiktspēju, salīdzinot ar atmiņas pārvaldību .
Galvenā atmiņas piešķiršanas saskarne ir malloc. Šis ir lielākais C bibliotēkā. Daļa no tajā iekļautā pārvaldības koda ir mmap. Kad malloc darbojas, tas apkopo visas pieejamās sistēmas iespējas. Izmantojot kodolu, var mobilizēt papildu sistēmas iespējas, kas ir viena no atmiņas pārvaldības stratēģijām, kuras sistēmas izmanto, lai nodrošinātu apmierinošu atmiņas sadalījumu. Tomēr process nav vienkāršs, un tas ir padarīts par sarežģītu tikai tāpēc, lai neļautu cilvēkiem izveidot vienkāršas programmas, kas var neorganizēt atmiņas sadalījumu un tādējādi radīt sliktu veiktspēju.
'mmap', no otras puses, ir sistēmas izsaukums, kas uzņemas atbildību un pieprasa kodolam atrast neizmantotu un blakus esošu reģionu lietojumprogrammas adresē, kas ir pietiekami liela, lai varētu kartēt vairākas atmiņas lapas. Ir arī virtuālās atmiņas pārvaldības struktūru izveidošana, kas faktiski nevar izraisīt segmentēšanu.
Malloc parasti darbojas lielākajā daļā atmiņas pārvaldības procesa. Ja programmai ir nepieciešama papildu atmiņa, tā tiek aizgūta no OS. No otras puses, Mmap izmanto konteksta pārslēdzēju, kas pārvēršas kodola zemē.
Malloc ir vispiemērotākais atmiņas piešķiršanai jebkurā lietojumprogrammā, kas darbojas sistēmā, nevis mmap. Tas ir tas, kas nepieciešams, lai notiktu pēc noklusējuma, izņemot īpašos gadījumos, kad tas var būt atļauts.
Mmap var izmantot, lai paātrinātu lietojumprogrammu sniegto atbildi. Tomēr tas nav ieteicams, jo beigās upurē dažus baitus lapām, lai lietojumprogramma darbotos nevainojami. Lai arī sākumā datu saturs var šķist mazs, to ekstrapolējot, kad daudzas programmas vēlas palaist, faktiski sistēma var palēnināties vēl vairāk.
Pēc veiktspējas un resursu izmantošanas noteikšanas jāveic rūpīgs datu lietojums visās lietojumprogrammās, kas darbojas sistēmā. Ja var parādīt, ka darbojas visas lietojumprogrammas, tas var kļūt labāks.
Mmap izmantošana atmiņas piešķiršanai ir neizdevīga, jo datu sadalīšana un sadalīšana gabalos ir dārga. Tas notiek tāpēc, ka dati tiek sadalīti daudzās zonās, kā arī liedz mmap veikt sistēmas zvanus.
Mmap ir izdevīgāks nekā malloc, jo mmap izmantotā atmiņa tiek nekavējoties atgriezta OS. Malloc izmantotā atmiņa nekad netiek atgriezta, ja vien nav datu segmenta pārtraukuma. Šī atmiņa tiek īpaši turēta atkārtotai izmantošanai.
Kopsavilkums
'malloc' apzīmē galveno atmiņas piešķiršanas punktu
Mmap sistēma zvana un pieprasa kodolam atrast neizmantotos reģionus lietojumprogrammu adresēs, kurās var ietilpt vairāku atmiņas lapu kartēšana
Mmap nav ieteicams atmiņas piešķiršanai, jo tas sadala pieejamo atmiņu un nevar veikt sistēmas zvanus
Mmap priekšrocība salīdzinājumā ar malloc ir atmiņas pieejamība, nevis malloc atmiņa, kas tiek izmantota atkārtoti.