Prozesse sind eigentlich isolierte Programme, die mehrere Threads in einem Betriebssystem ausführen. Im Allgemeinen besagt die Betriebssystemrichtlinie: Alle Prozesse sind voneinander isoliert.
Codesegment: [NOT SHARED]
BSS und statische Felder: [NOT SHARED]
Grund ist sehr einfach, warum ein Betriebssystem Prozess A-Zugriffsverfahren B binär erlauben? das ist Sicherheit und Speicherschutzverletzung. Prozess A könnte (wenn Schreibzugriff gegeben wird) B-Speicher verarbeiten.
was ist mit Externe Definitionen?
Hier kommt der interessante Teil, Externe Definitionen könnten statisch oder dynamisch verknüpft sein.
statisch verknüpfte Bibliothek bedeutet, dass Definitionen zu kompilierter Zeit verknüpft sind und Programme binär enthält Es ist Maschinencode.
dynamisch verknüpft bedeutet, dass Definitionen direkt nach Benutzerbefehlen verknüpft werden, um ein Programm im Speicher zu laden. OS ruft den dynamischen Bibliothekslader auf, um externe Abhängigkeiten des Programms aufzulösen, indem der Pfad des gemeinsamen Objekts bereitgestellt wird.
Dieses gemeinsame Objekt wird vom Betriebssystem in einem anderen Seitenrahmen zwischengespeichert, und jedes Mal, wenn ein Programm diese Bibliothek benötigt, kopiert es einfach den Seitenrahmen in den virtuellen Speicher des Prozesses; und die erforderliche dynamische Verknüpfung durchführen. Auf diese Weise haben mehrere Prozesse dieselbe Binärdatei einer einzelnen Bibliothek.
Es spart RAM-Speicher und Zeit beim Laden der Bibliothek von der Festplatte, auch dynamische Verknüpfung reduziert die binäre Größe des Programms.
Es ist auch möglich, dass das Betriebssystem die Bibliothek erneut von der Festplatte lädt und somit zwei Kopien derselben Bibliothek erstellt. Dies ist ein Teil der dynamischen Verknüpfungsoperation. Ich gehe nicht mehr in die Tiefe, aber wenn Sie wirklich interessiert sind https://en.wikipedia.org/wiki/Dynamic_linker oder ping mich einfach im Abschnitt Kommentare.
Aber in Bezug auf BSS und statische Felder, Es ist wieder nicht geteilt; Wann immer eine Schreiboperation für eine solche Region ausgeführt wird (die geteilt wird). Betriebssystem erstellt eine neue Kopie dieser Region für den anderen Prozess. Dies stellt sicher, dass beide Prozesse ihre eigene Kopie von BSS und statischen Feldern haben.