Ero mmap n ja mallocin välillä

mmap vs malloc

C: ssä on dynaamista muistia ja tämä viittaa muistin allokointiin C-ohjelmointikielellä C-kirjastossa olevien toimintojen joukon kautta. Yksi näistä on malloc, joka viittaa muistin allokointiin. UNIX-järjestelmässä on mmap, joka viittaa muistikartattuun järjestelmään, jolla on oma ainutlaatuinen I / O. Nämä kaksi (mmap ja malloc) suorittavat nimellisarvoisesti saman toiminnon, mutta lisätutkimukset paljastavat joitain eroja. Nämä toiminnallisuudesta johtuvat erot esitetään seuraavassa.

erot

Ensinnäkin on tärkeää selvittää, onko olemassa näyttöä käytettävissä olevan muistin tukahduttamisesta merkittävästi. Tämä tehdään mittaamalla ohjelman suorituskyky muistinhallintaa vastaan .

Päämuistin allokointirajapinta on malloc. Tämä on suurin C-kirjastossa. Osa siihen sisältyvästä hallintakoodista on mmap. Kun malloc on käynnissä, se kerää kaikki käytettävissä olevat järjestelmätilat. Lisäjärjestelmän ominaisuuksia voidaan mobilisoida ytimen kautta, mikä on yksi muistinhallintastrategioista, joita järjestelmät käyttävät tyydyttävän muistin allokoinnin varmistamiseksi. Prosessi ei kuitenkaan ole suoraviivainen, ja siitä on tehty monimutkainen pelkästään sen takia, että ihmiset estävät luomasta yksinkertaisia ​​ohjelmia, jotka voivat häiritä muistin varaamista ja siten luoda huonon suorituskyvyn..

'mmap' on toisaalta järjestelmäpuhelu, joka ottaa vastuun ja pyytää ydintä löytämään käyttämättömän ja vierekkäisen alueen sovelluksen osoitteesta, joka on riittävän suuri, jotta voidaan muistuttaa useita sivuja. Lisäksi luodaan virtuaalimuistin hallintarakenteita, jotka eivät tosiasiassa voi johtaa segmentin oletukseen.

Malloc toimii yleensä suurimmassa osassa muistinhallintaprosessia. Jos ohjelma vaatii lisämuistia, se lainataan käyttöjärjestelmältä. Mmap puolestaan ​​käyttää kontekstikytkintä, joka muuttuu ytimen maaksi.

Malloc soveltuu parhaiten muistin varaamiseen missä tahansa järjestelmässä käynnissä olevassa sovelluksessa, toisin kuin mmap. Tämän vaaditaan tapahtuvan oletuksena, paitsi erityistapauksissa, kun se voidaan sallia.

Mmap: ää voidaan käyttää nopeuttamaan sovellusten antamaa vastausta. Tätä ei kuitenkaan suositella, koska se uhrata joitain tavuja sivuille, jotta sovellus voi toimia sujuvasti. Vaikka tietosisältö voi aluksi tuntua pieneltä, ekstrapoloimalla se, kun monet sovellukset haluavat suorittaa, käytännössä voi hidastaa järjestelmää entisestään.

Suoritetun suorituskyvyn ja resurssien käytön mittauksen jälkeen kaikkien järjestelmässä toimivien sovellusten tietojen käyttö tulisi arvioida perusteellisesti. Jos käynnissä olevien sovellusten elinajat voidaan näyttää, siitä voi tulla parempi.

Mmap: n käyttö muistin varaamiseen liittyy siihen haitoon, että datan allokointi ja jakaminen kappaleina on kallista. Tämä johtuu siitä, että tiedot on jaettu lukuisiin alueisiin, ja evättää myös mmap: n tekemisen järjestelmäpuheluista.

Mmap on edullinen mallociin nähden, koska mmap: n käyttämä muisti palautetaan heti käyttöjärjestelmälle. Mallocin käyttämää muistia ei koskaan palauteta, ellei tietosegmentissä ole katkoksia. Tämä muisti pidetään erityisesti uudelleenkäyttöä varten.

Yhteenveto

'malloc' tarkoittaa päämuistin allokointipistettä

Mmap-järjestelmä soittaa ja pyytää ydintä löytämään käyttämättömät alueet sovellusosoitteista, joihin mahtuu useiden muistisivujen kartoitus

Mmap: ää ei suositella muistin varaamiseen, koska se jakaa käytettävissä olevan muistin eikä voi soittaa järjestelmäpuheluita

Mmap: n etuna mallocista on muistin saatavuus toisin kuin malloc-muisti, jota käytetään uudelleen.