Der erweiterte gemeinsam genutze Speicher.

Der erweiterte gemeinsam genutzte Speicher ermöglicht einem 32-Bit-Prozess, gemeinsam genutzte Speichersegmente so klein wie ein Byte zuzuordnen, gerundet auf die nächste Seite. Dieses Feature ist für Prozesse verfügbar, bei denen die Variable EXTSHM in ihrer Prozessumgebung auf ON, 1SEGoder MSEG gesetzt ist.

Der erweiterte gemeinsam genutzte Speicher beseitigt im Wesentlichen die Begrenzung von nur 11 gemeinsam genutzten Speicherregionen. 64-Bit-Prozesse sind von der Variablen EXTSHM nicht betroffen.

Die Einstellung ON für EXTSHM hat denselben Effekt wie die Einstellung 1SEGfür die Variable. Bei beiden Einstellungen wird jeder gemeinsam genutzte Speicher mit weniger als 256 MB intern als mmap-Segment erstellt und hat daher dieselben Auswirkungen auf die Leistung von mmap. Jeder gemeinsam genutzte Speicher, der größer-gleich 256 MB ist, wird intern als Arbeitssegment erstellt.

Wenn EXTSHM auf MSEGgesetzt ist, wird der gesamte gemeinsam genutzte Speicher intern als mmap-Segment erstellt, was eine bessere Speicherauslastung ermöglicht.

Es gibt keine Begrenzung für die Anzahl der gemeinsam genutzten Speicherregionen, die ein Prozess anhängen kann. Die Dateizuordnung wird wie zuvor unterstützt, belegt jedoch einen Adressraum, der ein Vielfaches von 256 MB (Segmentgröße) ist. Das Ändern der Größe einer gemeinsam genutzten Speicherregion wird in diesem Modus nicht unterstützt. Kernelprozesse weisen dasselbe Verhalten auf.

Für Extended Shared Memory gelten die folgenden Einschränkungen:

  • Die E/A-Unterstützung ist auf dieselbe Weise eingeschränkt wie bei Regionen mit Speicherzuordnung.
  • Es wird nur der E/A-Typ uphysio () unterstützt (keine unformatierte Ein-/Ausgabe).
  • Diese gemeinsam genutzten Speicherbereiche können nicht als E/A-Puffer verwendet werden, wenn die Aufhebung der Fixierung des Puffers in einem Interrupt-Handler auftritt. Diese Regionen können beispielsweise nicht für asynchrone E/A-Puffer verwendet werden.
  • Die Segmente können mit der Subroutine plock () nicht fixiert werden, da speicherzugeordnete Segmente nicht mit der Subroutine plock () fixiert werden können.