Memory Mapped File

From Fritz!Box
(Redirected from MEM)
Jump to: navigation, search

AVM Wiki >> Lexikon >> Memory Mapped File @ whmf   -   IRC-Chat   -   hu nl it English
Community Modelle Zubehör Environment Konfiguration Shell-Befehle Software Freetz Lexikon Tipps+Tricks Bilder

Hardware System Netzwerk Dienste Telefonie Multimedia Automation Business Extras Sonstiges Todo

Contents

Begriff

Memory Mapped Files sind eine Sonderform von Dateien die einen Speicherbereich fester Größe im RAM repräsentieren. Sie können von mehreren Programmen geöffnet werden, die dann alle gleichzeitigen Zugriff zu diesem gemeinsamen Speicherbereich bekommen. Dies ermöglicht einen extrem schnellen Datenaustausch zwischen Prozessen, bedarf aber weiterer Mechanismen damit dies zuverlässig und kollisionsfrei abläuft.

Funktionsweise bei der FRITZ!Box

Bei der FRITZ!Box werden Memory Mapped Files zur Handhabung von Ringpuffern wie dem Ereignisse-Log (.ar7events), zum Sammeln von Statuswerten für die User-Interface-Module (.inetstat, .dsld_statsimple, .voipd_statsimple), aber auch zur Verwaltung der über IGD automatisch freigegebenen Ports (.igdd-get-portmaps, .igdd-del-portmap) verwendet. Sie liegen alle in /dev als versteckte Dateien, da ihr Dateiname mit '.' beginnt. Ringpuffer bestehen aus einer einzigen Datei, dem Puffer. Statistikwerte nutzen eine zweite 4 Bytes große Datei namens <puffername>-M in der der binäre Datestamp der letzten Aktualisierung gespeichert wird (stimmt nicht). Eine Liste aller Memory Mapped Files kommt in die Devices Übersicht.

$ cd /dev
$ ls -la .[^.]*
-rw-r--r--    1 root     root           404 Jan  1  2000 .CRWWLANMAP
-rw-r--r--    1 root     root             4 Jan  1  2000 .CRWWLANMAP-M
-rw-r--r--    1 root     root          2184 Jan  1  2000 .SHMUSBDEVICES
-rw-r--r--    1 root     root             4 Jan  1  2000 .SHMUSBDEVICES-M
-rw-r--r--    1 root     root         20000 Jan  1  2000 .ar7events
-rw-r--r--    1 root     root         61016 Jan  1  2000 .dsld_statsimple
-rw-r--r--    1 root     root             4 Jan  1  2000 .dsld_statsimple-M
-rw-r--r--    1 root     root            53 Jan  1  2000 .igdd-del-portmap
-rw-r--r--    1 root     root             4 Jan  1  2000 .igdd-del-portmap-M
-rw-r--r--    1 root     root          8324 Apr 17 21:38 .igdd-get-portmaps
-rw-r--r--    1 root     root             4 Apr 17 21:38 .igdd-get-portmaps-M
-rw-r--r--    1 root     root           192 Jan  1  2000 .inetstat
-rw-r--r--    1 root     root             4 Jan  1  2000 .inetstat-M
-rw-r--r--    1 root     root         80224 Jan  1  2000 .voipd_statsimple
-rw-r--r--    1 root     root             4 Jan  1  2000 .voipd_statsimple-M

Die Handhabung fast aller Memory Mapped Files übernimmt libboxlib.so, jedes Programm das in Status- oder Log-Puffer schreiben oder daraus lesen will öffnet diese Library. Diese zentrale Schnittstelle enthält alle Mechanismen die einen konfliktfreien Zugriff auf die gemeinsam genutzten Puffer gewährleistet.

Wer ein Memory Mapped File zum Lesen oder Schreiben öffnet prüft erst seine Existenz durch Testen einer gleichnamigen Datei in /var/tmp/csem. Ist diese nicht vorhanden wird das Memory Mapped File erzeugt, und die gleichnamige Datei in /var/tmp/csem mit touch dazu.

Zur konfliktfreien Abwicklung von Zugriffen werden Semaphoren eingesetzt, diese werden getrennt für Schreib- (-W) und Lesezugriffe (-R) als nicht versteckte Dateien gleichen Namensstamms in /var/tmp/csem gepflegt.

$ ls -la /var/tmp/csem
drwxr-xr-x    2 root     root             0 Apr 28 07:48 .
drwxrwxrwt    7 root     root             0 May  1 11:25 ..
-rw-r--r--    1 root     root             0 Apr 28 07:48 .CRWWLANMAP
-rw-r--r--    1 root     root             0 Apr 28 07:48 .CRWWLANMAP-M
-rw-r--r--    1 root     root             0 Jan  1  2000 .SHMUSBDEVICES
-rw-r--r--    1 root     root             0 Jan  1  2000 .SHMUSBDEVICES-M
-rw-r--r--    1 root     root             0 Jan  1  2000 .ar7events
-rw-r--r--    1 root     root             0 Jan  1  2000 .dsld_statsimple
-rw-r--r--    1 root     root             0 Jan  1  2000 .dsld_statsimple-M
-rw-r--r--    1 root     root             0 Apr 28 07:48 .inetstat
-rw-r--r--    1 root     root             0 Apr 28 07:48 .inetstat-M
-rw-r--r--    1 root     root             0 Jan  1  2000 .voipd_statsimple
-rw-r--r--    1 root     root             0 Jan  1  2000 .voipd_statsimple-M
-rw-r--r--    1 root     root             0 Apr 28 07:48 CRWWLANMAP-R
-rw-r--r--    1 root     root             0 Apr 28 07:48 CRWWLANMAP-W
-rw-r--r--    1 root     root             0 Jan  1  2000 SHMUSBDEVICES-R
-rw-r--r--    1 root     root             0 Jan  1  2000 SHMUSBDEVICES-W
-rw-r--r--    1 root     root             0 Apr 28 07:48 UPNPAPI_DATA_phonebook
-rw-r--r--    1 root     root             0 Jan  1  2000 dsld_statsimple-R
-rw-r--r--    1 root     root             0 Jan  1  2000 dsld_statsimple-W
-rw-r--r--    1 root     root             0 Apr 28 07:48 inetstat-R
-rw-r--r--    1 root     root             0 Apr 28 07:48 inetstat-W
-rw-r--r--    1 root     root             0 Jan  1  2000 ontel
-rw-r--r--    1 root     root             0 Jan  1  2000 voipd_statsimple-R
-rw-r--r--    1 root     root             0 Jan  1  2000 voipd_statsimple-W

Artikel zum Thema

  • TODO

Siehe auch

Debugging: (87)