Dieses ist von einer smaps Datei:
b750d000-b76bc000 r-xp 00000000 08:01 918842 /lib/i386-linux-gnu/libc-2.23.so
Die p
in r-xp
gibt es als privat geladen ist, glaube ich. Warum ist das so? Widerspricht dies nicht dem Zweck von gemeinsam genutzten Bibliotheken, wenn eine Kopie jeder .so-Datei in verschiedene Speicheradressen für verschiedene Prozesse geladen wird? Welchen Vorteil bietet dieses private Laden?Warum werden gemeinsam genutzte Bibliotheken (.so-Dateien) als privat geladen?
Antwort
p
entspricht MAP_PRIVATE
. man mmap
behauptet, dass:
MAP_PRIVATE
: Erstellen Sie eine private copy-on-write Mapping. Aktualisierungen der Zuordnung sind für andere Prozesse, die dieselbe Datei zuordnen, nicht sichtbar und werden nicht zur zugrunde liegenden Datei übertragen. [...]
Die physikalischen Speicherseiten für diese VMA werden, da keine Änderung so lange von allen Prozessen gemeinsam genutzt werden getan wird (sie mit dem Kernel-Cache gemeinsam genutzt werden als auch). Wenn eine virtuelle Seite in einem bestimmten Prozess geändert wird, wird die Seite für diesen Prozess dupliziert (nicht freigegeben) (copy-on-write).
Lassen Sie uns sehen:
$ cat /proc/self/maps 00400000-0040c000 r-xp 00000000 08:11 529223 /bin/cat 0060b000-0060c000 r--p 0000b000 08:11 529223 /bin/cat 0060c000-0060d000 rw-p 0000c000 08:11 529223 /bin/cat [...]
Die ersten und zweiten VMAs sind schreibgeschützt. Sie werden (typischerweise) nicht modifiziert und werden (typischerweise) von allen Prozessen gemeinsam genutzt.
Die dritte VMA (
rw-p
) ist beschreibbar, aber die Änderungen in einem Prozess müssen in anderen Prozessen nicht sichtbar sein. Diese VMA enthält die (änderbaren) globalen Variablen, die nicht von verschiedenen Prozessen gemeinsam genutzt werden.
- 1. Wie Laufzeit gemeinsam genutzte Bibliotheken debuggen?
- 2. embedding absoluter Pfad für gemeinsam genutzte Bibliotheken
- 3. Dilemma über gemeinsam genutzte Bibliotheken unter Unix
- 4. Linux, Mono, gemeinsam genutzte Bibliotheken und unaufgelöste Symbole
- 5. GAE - Einstellung VM auf true und gemeinsam genutzte Bibliotheken insgesamt
- 6. Gemeinsam genutzte Bibliothek Name Kollisionen
- 7. Gemeinsam genutzte Einstellungen lesen
- 8. Android Studio, zum Einrichten von Projekten für gemeinsam genutzte Bibliotheken
- 9. speichern Hashzuordnung Gemeinsam genutzte Einstellungen
- 10. Gemeinsam genutzte Vektoren in OpenMP
- 11. Wie kann verhindert werden, dass CMake beim Installieren einen Symlink für gemeinsam genutzte Bibliotheken erstellt?
- 12. Warum sind Python-Erweiterungen gemeinsam genutzte Bibliotheken? Ist es möglich, eine statisch verknüpfte Bibliothek zu erstellen?
- 13. Gemeinsam genutzte Bibliothek für MonoDroid und MonoTouch
- 14. ALLGEMEINEN Block gemeinsam genutzte Variablen
- 15. gemeinsam genutzte C-Bibliothek Probleme
- 16. Gemeinsam genutzte Festplatten mit COMPS
- 17. Gebäude sowohl statische als auch gemeinsam genutzte Bibliotheken für LLVM libC++ 3.3
- 18. Crystal Reports, Unterberichte, und gemeinsam genutzte Variablen
- 19. Gemeinsam genutzte Bibliothek mit Freeglut - undefined Symbol
- 20. Android Gemeinsam genutzte Einstellungen speichern nicht richtig
- 21. Android: makeSceneTransition für mehr als eine gemeinsam genutzte Elemente
- 22. Korrekte Art, gemeinsam genutzte Klassenvariablen zu speichern?
- 23. NodeJs gemeinsam genutzte Objekte zwischen Prozessen
- 24. Android Speichern Gemeinsam genutzte Einstellungen Backup Agent
- 25. g ++ kann keine gemeinsam genutzte Bibliothek finden
- 26. Gemeinsam genutzte Vektorvariablen unter mehreren C++ - Dateien
- 27. Gemeinsam genutzte Modellvariable in inkompatiblem Format
- 28. Eine dynamisch verknüpfte gemeinsam genutzte Bibliothek erweitern?
- 29. Jenkins Pipeline gemeinsam genutzte Bibliothek - Argumente übergeben
- 30. Gemeinsam genutzte Objekt speichern und laden Ausgabe