Logo fi.removalsclassifieds.com

Ero Mmapin ja Mallocin välillä (taulukon kanssa)

Sisällysluettelo:

Anonim

C-ohjelmoinnissa on dynaaminen muisti, joka osoittaa muistin varaamisen C-standardikirjastossa funktioiden avulla. Malloc on yksi näistä, jota käytetään muistin varaamiseen. Sitten on mmap. Sitä käytetään muistikartoitettuna järjestelmänä, jolla on ainutlaatuinen tulo ja lähtö. Näillä kahdella on samat toiminnot, mutta tähän aiheeseen perehtyminen paljastaa joitain eroja.

Mmap vs Malloc

Ero mmapin ja mallocin välillä on, että mmapin suoritusaika on paljon lyhyempi kuin mallocin. Malloc on tärkein muistin varausrajapinta, kun taas mmap on järjestelmä. Se on vastuussa siitä, että ydin etsii riittävän suuria osoitteita, jotta monien sivujen kartoitus voidaan sallia.

Mmap in computing on POSIX-moniajojärjestelmäkutsu, joka tallentaa kaikki tiedot tai tiedostot ja laitteet muistiinsa. Tämä tunnetaan myös menetelmänä, joka kuuluu muistikartoitettuun tiedostoon ja toteuttaa tietojen kopioimisen sen fyysiseen muistiin, koska sisältöä ei voida lukea suoraan asemalta.

Malloc on lyhenne sanoista muistin varaus, jota käytetään dynaamisesti valtaavan tietolohkon varaamiseen määritetyn koon mukaan, ja onnistuessaan se palauttaa osoittimen, joka osoittaa varatun muistin ensimmäiseen tavuun, muussa tapauksessa palauttaa NULL-arvon.. Varsinaisessa muistin varausmekanismissa on saatavilla monia erilaisia ​​​​saavutuksia, joita Malloc käyttää.

Mmapin ja Mallocin vertailutaulukko

Vertailuparametrit

Mmap

Malloc

Määritelmä Mmap viittaa järjestelmäkutsuun, joka pyytää ydintä löytämään suuren osoitteen sivujen kartoittamista varten. Malloc on tärkein muistin allokointirajapinta, joka kokoaa yhteen kaikki järjestelmän käytettävissä olevat toiminnot.
Toiminto Mmap käyttää kontekstikytkintä ja tekee siitä ydinalueen. Malloc varaa muistilohkon apilessa.
Kutsutaan myös nimellä Mmap tunnetaan myös järjestelmäkutsuna. Malloc tunnetaan myös päämuistin allokointiliittymänä.
Tulokset Mmap ei vaikuta muiden järjestelmien suorituskykyyn. Malloc hajottaa järjestelmän ja luo huonon suorituskyvyn.
Soveltuu parhaiten Mmap sopii parhaiten nopeuttamaan sovellusten antamien vastausten prosessia. Malloc sopii parhaiten muistin varaamiseen missä tahansa järjestelmän sovelluksessa.

Mikä on Mmap?

Mmap viittaa POSIX-yhteensopivan Unix-järjestelmäkutsuun, joka yhdistää tiedot, tiedoston tai laitteen muistiin. Se on syöttö- ja lähtömenetelmä muistin kartoittamiseen. Kutsuprosessissa virtuaaliseen osoiteavaruuteen luodaan uusi kartoitus. Osoitteessa uuden kuvauksen aloitusosoite löytyy ja kuvauksen pituus määritellään pituusargumentilla (jonka tulee olla suurempi kuin 0).

Jos osoittimen todetaan olevan NULL, niin osoitteen valitsee ydin, joka tekee kartoituksen, jota pidetään helpoimpana tapana tehdä uusi kartoitus. Jos osoite ei ole Found as NULL, niin ydin pitää sitä osoituksena mappauksen sijoittamisesta johonkin paikkaan Linuxissa.

Ydin löytää lähimmän sivurajan ja yrittää tehdä kartoituksen tälle alueelle. Jos ydin löytää alueella jo olevan kuvauksen, se valitsee uuden osoitteen, joka saattaa riippua ytimen olettamasta osoituksesta. Tämän puhelun seurauksena uuden kartoituksen osoite lähetetään takaisin. Heti kun kutsu on palautettu, tiedostokuvaaja, fd, sulkee kartoituksen välittömästi ilman mitätöintiä.

Mikä on Malloc?

Malloc () on muistin varaustoiminto, joka varaa kokotavut ja lähettää takaisin osoittimen varattuun muistiin. Muistia ei ole asetettu alkuasentoonsa. Jos kokotavun nimi on 0, malloc () lähettää joko NULL:n tai yksilöllisen arvon osoittimen, joka voidaan myöhemmin siirtää free () -tiedostoon onnistuneesti.

Ptr:n osoittama muistitila vapautuu free () -funktiolla, jonka malloc () oli tarkoitus lähettää takaisin. Muutoin määrittelemättömän käyttäytymisen sanotaan tapahtuvan, jos vapaata (ptr) on kutsuttu aiemmin. Toimintoa ei tehdä tai suoriteta, jos ptr on Found NULL. Jos ptr löytyy, on NULL, niin kutsun arvo on yhtä suuri kuin malloc (koko), jokaiselle koon arvolle; jos se on yhtä suuri kuin 0 ja ptr:n ei löydy NULL-arvoa, puhelun arvo on yhtä suuri kuin vapaa (ptr).

Vain kun ptr on NULL, se olisi pitänyt lähettää takaisin edellisellä kutsulla malloc(). Ja osoitettu alue muutettiin, ilmainen (ptr) on tehty. Oletusarvoisesti Linux noudattaa optimistista muistin varausstrategiaa, mikä tarkoittaa, että jos malloc () lähettää ei-NULL-arvon takaisin, on mahdollista, että muisti saattaa kadota. Ja jos käy ilmi, että järjestelmässä on pulaa muistista, OOM-tappaja tuhoaa muutamia prosesseja.

Tärkeimmät erot Mmapin ja Mallocin välillä

Johtopäätös

Yhteenvetona voidaan todeta, että mmap on järjestelmäkutsu, joka pyytää ydintä paikantamaan tyhjän alueen sovellusosoitteesta, joka sopisi eri muistisivujen kartoitukseen, kun taas malloc on muistin varauspiste, joka varaa tietyn kokoisen muistilohkon. Muisti asetetaan ajon aikana, mikä tarkoittaa, että ennen kuin ohjelma on suoritettu, muuta tilaa ei voi varata.

Tietyissä kohdissa mmapilla on vielä etua mallociin verrattuna, joten ei ole suositeltavaa valita näiden kahden välillä muistin varaamiseen, koska mmap jakaa muistin eikä pysty sitten soittamaan järjestelmäkutsua.

Viitteet

Ero Mmapin ja Mallocin välillä (taulukon kanssa)