mmap on POSIX -yhteensopiva Unix -järjestelmäkutsu , joka mahdollistaa tiedoston tai laitteen muistikartoituksen . Se on tiedoston muistikartoituksen kautta käytettävä syöttö/tulostusmenetelmä, joka luonnollisesti toteuttaa on-demand-hakutoiminnon, koska alun perin tiedoston sisältöä ei lueta levyltä eikä se käytä fyysistä muistia ollenkaan. Varsinainen lukeminen levyltä suoritetaan "laisassa" tilassa, toisin sanoen käytettäessä tiettyä sijaintia.
Linuxissa Mac OS X ja BSD mmap voivat luoda monenlaisia kartoituksia .
Nimettömät kartoitukset ovat prosessin näennäismuistitilan kartoituksia eikä tiedostoa tiedostojärjestelmätilassa. Tästä syystä anonyymi kartoitus on samanlainen kuin malloc -funktio , ja sitä käytetään joissakin malloc -toteutuksissa tietyissä paikoissa. Huomaa, että anonyymit kartoitukset eivät ole osa POSIX-standardia, vaikka ne on otettu käyttöön lähes kaikissa POSIX-järjestelmissä.
Tiedostokartoitukset mahdollistavat tiedoston näyttämisen virtuaalimuistissa (käytännössä tämä on tietyn tiedoston lukemisen/kirjoituksen puskurointi, jolla on suora pääsy puskuriin, muistissa olevan tiedostokartoituksen alueena muistiosoitteiden mukaan). Pääsy näihin muistialueisiin johtaa tiedoston lukemiseen/kirjoittamiseen. Jos kartoitus jaetaan prosessien kesken, kirjoittaminen tähän tilaan yhdessä prosessissa vaikuttaa muihin prosesseihin. Jos käytetään yksityistä kartoitusta, muutokset eivät näy muille prosesseille eikä niitä kirjoiteta tiedostoon.
Virtuaalimuistiin yhdistetyn tiedoston luku-/kirjoitusprosessi ei aina johda odotettuun tulokseen, koska tiedostosegmentit kopioidaan RAM-muistiin ja vaihdetaan ajoittain levylle. Synkronointi voidaan kuitenkin pakottaa käyttämällä msync- järjestelmäkutsua .
mmap -tiedostot voivat vähentää huomattavasti levyn käyttöä useille sovelluksille, jotka käyttävät samaa tiedostoa. Jos tiedosto on muistikartoitu, sovellusohjelmat voivat jakaa muistisegmentin, joka on tiedoston muistikartta, sen sijaan, että ladattaisiin tiedosto jokaiselle sovellusohjelmalle, joka haluaa käyttää tiedostoa.
Mmapin avulla varattua muistia voidaan käyttää lapsiprosesseista .
mmap :ia voidaan käyttää prosessien välisen tiedonsiirron (IPC) toteuttamiseen. Nykyaikaisissa käyttöjärjestelmissä mmap on yleensä parempi kuin System V -tyylinen hajautettu muistiviestintä .
Suurin ero System V :n jaetun muistin (shmem) ja muistikartoidun I/O:n (mmap) välillä on, että System V:n jaettu muisti on pysyvä: tiedot tallennetaan muistiin ilman nimenomaista poistamista ja ovat käytettävissä niin kauan kuin järjestelmä ei saa poistaa käytöstä. mmap-muisti ei ole pysyvä sovellusten käynnistysten välillä (vain jos kartoitusta ei ole varattu tiedostoon) – järjestelmäydin poistaa automaattisesti mmap:n luoman muistisegmentin, kun kaikki sitä käyttävät sovellusohjelmat poistuvat.
Prosessien välinen viestintä | |
---|---|
menetelmät | |
Valitut protokollat ja standardit |