Mmap

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 13. januar 2018; checks kræver 2 redigeringer .

mmap  er et POSIX -kompatibelt Unix -systemkald, der tillader hukommelseskortlægning af en fil eller enhed . Det er en input/output metode gennem hukommelseskortlægning af en fil og implementerer naturligvis on-demand paging, da indholdet af filen i starten ikke læses fra disken og slet ikke bruger fysisk hukommelse. Den faktiske læsning fra disken udføres i en "doven" tilstand, det vil sige, når man får adgang til en bestemt placering.

Linux kan Mac OS X og BSD mmap oprette flere typer kortlægninger.

Anonyme tilknytninger er kortlægninger af en process virtuelle hukommelsesplads snarere end en fils i filsystemets plads. Af denne grund ligner anonym kortlægning malloc- funktionen og bruges i nogle implementeringer af malloc til bestemte steder. Bemærk, at anonyme kortlægninger ikke er en del af POSIX-standarden, selvom de er implementeret i næsten alle POSIX-systemer.

Filtilknytninger giver dig mulighed for at vise en fil i virtuel hukommelse (praktisk talt er dette buffering af læsning/skrivning af en specifik fil med direkte adgang til bufferen, som området for filtilknytningen i hukommelsen, efter hukommelsesadresser). Adgang til disse områder af hukommelsen resulterer i læsning/skrivning af filen. Hvis kortlægningen er delt mellem processer, vil skrivning til dette rum i én proces påvirke andre processer. Hvis der anvendes privat kortlægning, vil ændringerne ikke være synlige for andre processer og vil ikke blive skrevet til filen.

Processen med at læse/skrive en fil, der er knyttet til virtuel RAM, fører ikke altid til det forventede resultat, da filsegmenter kopieres til RAM og periodisk byttes ud til disk, dog kan synkronisering tvinges til ved hjælp af msync -systemkaldet .

mmap -filer kan i høj grad reducere diskforbruget for flere programmer, der får adgang til den samme fil. Hvis filen er hukommelseskortlagt, kan applikationsprogrammer dele et hukommelsessegment, der er et hukommelseskort over filen, i stedet for at downloade filen for hvert applikationsprogram, der ønsker at få adgang til filen.

Hukommelse allokeret med mmap kan tilgås fra underordnede processer .

mmap kan bruges til at implementere inter-process communication (IPC). På moderne operativsystemer foretrækkes mmap generelt frem for system V- stil distribueret hukommelseskommunikation .

Den største forskel mellem System V delt hukommelse (shmem) og hukommelseskortlagt I/O (mmap) er, at System V delt hukommelse er vedvarende: uden at blive slettet eksplicit, vil data blive gemt i hukommelsen og forblive tilgængelige, så længe systemet vil ikke være deaktiveret. mmap-hukommelsen er ikke vedvarende mellem applikationsstarter (kun hvis tilknytningen ikke er reserveret i en fil) – hukommelsessegmentet, der er oprettet af mmap, slettes automatisk af systemkernen, når alle applikationsprogrammer, der bruger det, afsluttes.

Links