Memory Mapped Files sind (je nach Spezifikation) weitgehend abhängig von der tatsächlichen Implementierung des Betriebssystems und einige dieser unbekannten Aspekte sind bereits im Javadoc erklärt. Ich habe jedoch einige zusätzliche Fragen und bin mir nicht sicher, wo ich Antworten finden soll.Speicherkarten in Java: zu viele Fragen?
Angenommen, application A
ordnet eine Datei dem Speicher von position=0
bis size=10
zu.
Ich würde annehmen, dass das Betriebssystem ein kontinuierliches Stück Speicher benötigt, um es zuzuordnen? Oder hängt das von der Implementierung ab?
Angenommen, wir haben eine application B
, die von position=0
bis size=11
abbildet. Sind die ersten 10 Bytes geteilt oder ist es ein völlig anderes Mapping? Dies bezieht sich auf die Frage des kontinuierlichen Speichers.
Wenn wir gemappte Dateien für IPC verwenden möchten, müssen wir wissen, wie sich die Daten in anderen Anwendungen widerspiegeln, also wenn B
in den Speicher schreibt, sieht das A
?
Wie ich jedoch die Spezifikation lese, hängt dies vom Betriebssystem ab. Dies macht es gefährlich, für allgemeine IPC zu verwenden, da es Portabilität zerstört, richtig?
Zusätzlich nehme an, das OS es nicht unterstützt, so B
schreibt in den Speicher, A
die Veränderung sieht, was passiert, wenn wir dies tun:
B.write("something");
A.write("stuff");
A.read();
Was genau A
lesen?
Oder andersherum:
Wie werden die Dateizeiger verwaltet?
Wie funktioniert es mit Nebenläufigkeit, gibt es Cross-Application-Locking?