Mmap ja malloc

Anonim

mmap vs malloc

C: ssä on dynaaminen muisti ja tämä viittaa muistin kohdentamiseen C-ohjelmointikielellä C-standardikirjaston sisältämillä funktioilla. Yksi näistä on malloc, joka viittaa muistin allokointiin. UNIX-järjestelmässä on mmap, joka viittaa muistikartoitettuun järjestelmään, jossa on oma ainutlaatuinen I / O. Nämä kaksi (mmap ja malloc) ovat nimellisarvossa samat toiminnot, mutta tarkempi tarkastelu paljastaa joitakin eroja. Nämä erot, jotka johtuvat toiminnallisuudesta, on esitetty alla.

erot

Ensinnäkin on tärkeää selvittää, onko olemassa näyttöä siitä, että käytettävissä oleva muisti on huomattavasti tukahduttavaa. Tämä tapahtuu mittaamalla ohjelman suorituskykyä muistinhallintaan nähden.

Päämuistiadiointirajapinta on malloc. Tämä on suurin C-kirjastossa. Osa sen hallintokoodista on mmap. Kun malloc on käynnissä, se kokoaa kaikki käytettävissä olevat järjestelmätilat. Järjestelmän lisäjärjestelmiä voidaan aktivoida ytimen kautta, joka on yksi muistinhallintastrategioista, joita järjestelmät käyttävät varmistaakseen, että muistia on riittävästi. Prosessi ei kuitenkaan ole yksinkertainen, ja se on tehty monimutkaiseksi ainoana syynä estämään ihmisiä luomasta yksinkertaisia ​​ohjelmia, jotka voivat jakaa muistin allokoinnin ja huonon suorituskyvyn.

'Mmap' toisaalta on järjestelmäpuhelu, joka ottaa varauksen ja pyytää ydintä etsimään käyttämättömän ja vierekkäisen alueen sovelluksen osoitteessa, joka on riittävän suuri, jotta useita sivuja voidaan muokata. On myös olemassa virtuaalimuistin hallintarakenteiden luominen, joka ei tosiasiassa voi johtaa segmenttiin.

Malloc toimii yleensä useimmissa muistinhallintaprosesseissa. Jos ohjelma vaatii lisää muistia, tämä on lainattu käyttöjärjestelmästä. Toisaalta Mmap käyttää kontekstikytkintä, joka muuntaa ytimen maaksi.

Malloc sopii parhaiten muistin allokointiin missä tahansa järjestelmässä käynnissä olevassa sovelluksessa verrattuna mmap: n käyttöön. Tämä on se, mitä vaaditaan tapahtumaan oletuksena, muutoin kuin erikoistapauksissa, kun se voidaan sallia.

Mmapin avulla voidaan nopeuttaa sovellusten antamaa vastausta. Tämä ei kuitenkaan ole suositeltavaa, koska se lopettaa joidenkin tavujen uhraamisen sivuille, jotta sovellus voi toimia sujuvasti. Vaikka datasisällöt saattavat tuntua pieniltä alusta, ekstrapoloimalla se, kun useat sovellukset haluavat käyttää, voivat hidastaa järjestelmää entisestään.

Kun resurssien suorituskyvyn ja resurssien mittaaminen on suoritettu, kaikkien järjestelmässä käynnissä olevien sovellusten tietojen käyttö on arvioitava perusteellisesti. Jos käynnissä olevien sovellusten elinaikaa voidaan näyttää, se voi olla parempaa.

Muistin jakamiseen käytettävän mmap: n käyttö aiheuttaa haittapuolena sen, että tietojen jakaminen ja jakaminen paloina on kallista. Tämä johtuu siitä, että tiedot jaetaan lukuisiin alueisiin, ja myös kieltää mmap tekemästä järjestelmäpuheluita.

Mmap on edullinen mallocin suhteen, koska MMAP: n käyttämä muisti palautuu välittömästi käyttöjärjestelmään. Mallocin käyttämää muistia ei koskaan palauteta, ellei ole tietosegmenttikatkaisua. Tätä muistia pidetään erityisesti käytettäväksi uudelleen.

Yhteenveto

"Malloc" tarkoittaa päämuistin jakopistettä

Mmap-järjestelmä pyytää ja pyytää ydintä etsimään käyttämättömiä alueita sovellusosoitteissa, jotka mahdollistavat useiden muistisivujen kartoituksen

Mmap ei ole suositeltavaa jakaa muistia, koska se jakaa käytettävissä olevan muistin ja ei voi tehdä järjestelmäpuheluja

MMap: n hyöty mallocin yli on muistin saatavuus, toisin kuin malloc-muisti, jota käytetään uudelleen.