Umfangreiche Beispiele für ausführbare Dateien
Beispielszenarios für die Verwendung sehr umfangreich ausführbarer Dateien.
Beispiel für ein Adressraummodell für große Programme
MAXDATA=0x50000000(Nicht-DSA)- Erforderliche Shmat/mmap-Regionen in den Segmenten 0xB, 0xC und 0xE
- Text des gemeinsam genutzten Bibliotheksbereichs und Zugriffsmöglichkeit auf vorab verlagerte Daten
0x0: System Segment
0x1:
0x2: Exec-time Private Dependencies / Stack
0x3: Process Heap
0x4: Process Heap
0x5: Process Heap
0x6: Process Heap
0x7: Process Heap
0x8:
0x9:
0xA:
0xB: shmat/mmap (mapped after exec)
0xC: shmat/mmap (mapped after exec)
0xD: Shared Library Text
0xE: shmat/mmap (mapped after exec)
0xF: Pre-relocated Library Data
Dieses Beispiel zeigt, dass die Segmente 0x8–0xA für die ausführbare Datei verfügbar sind.
HUGE_EXEC=0HUGE_EXEC=0x8HUGE_EXEC=0x9
Die Optionen 1 und 2 fügen die ausführbare Datei in die Segmente 0x8–0x9ein, während Option 3 die ausführbare Datei in die Segmente 0x9–0xAeinfügt.
Beispiel für ein sehr großes Programmadressraummodell
MAXDATA=0x50000000 DSA- Erforderliche Shmat/mmap-Regionen in den Segmenten 0xB, 0xC und 0xE
- Text des gemeinsam genutzten Bibliotheksbereichs und Zugriffsmöglichkeit auf vorab verlagerte Daten
0x0: System Segment
0x1:
0x2: Exec-time Private Dependencies / Stack
0x3: Process Heap
0x4: |
0x5: |
0x6: v
0x7: ____________ (data limit)
0x8:
0x9:
0xA:
0xB: shmat/mmap (mapped after exec)
0xC: shmat/mmap (mapped after exec)
0xD: Shared Library Text
0xE: shmat/mmap (mapped after exec)
0xF: Pre-relocated Library Data
Daraus ist ersichtlich, dass die Segmente 0x4–0xA für die ausführbare Datei verfügbar sind.
HUGE_EXEC=0x8HUGE_EXEC=0x9
Option 1 würde die ausführbare Datei in die Segmente 0x8–0x9einfügen, während Option 2 die ausführbare Datei in die Segmente 0x9–0xAeinfügen würde.
HUGE_EXEC=0 -Einstellung wäre für diesen Kunden nicht geeignet, da das System Segmente 0xB–0xC für die ausführbare Datei auswählen würde (wegen DSA). Dies würde verhindern, dass diese Segmente nach der Ausführung für shmat/mmap verfügbar sind. Wenn Sie HUGE_EXEC auf eines der Segmente 0x4, 0x5, 0x6oder 0x7 setzen, während die Einfügung wie angefordert erfolgen kann, würde das Wachstum des Prozesszwischenspeichers auf das Segment direkt unterhalb des angeforderten Startsegments begrenzt.Beispiel für einen sehr großen Programmadressraum ohne Zugriff auf einen gemeinsam genutzten Bibliotheksbereich
MAXDATA=0xB0000000 DSA- Keine Shmat/mmap-Regionen
- Keine Zugriffsmöglichkeit auf den gemeinsam genutzten Bibliotheksbereich
0x0: System Segment
0x1:
0x2: Exec-time Private Dependencies / Stack
0x3: Process Heap
0x4: |
0x5: |
0x6: |
0x7: |
0x8: |
0x9: |
0xA: |
0xB: |
0xC: v
0xD: ____________ (data limit)
0xE:
0xF:
Daraus ist ersichtlich, dass die Segmente 0x4–0xF für die ausführbare Datei verfügbar sind.
HUGE_EXEC=0HUGE_EXEC=0xE
Beide Optionen fügen die ausführbare Datei in die Segmente 0xE–0xFein.
Beispiel für ein Standardprozessadressraummodell
MAXDATA=0(Nicht-DSA)- Keine Shmat/mmap-Regionen
- Text des gemeinsam genutzten Bibliotheksbereichs und Zugriffsmöglichkeit auf vorab verlagerte Daten
0x0: System Segment
0x1:
0x2: Exec-time Private Dependencies / Process Heap / Stack
0x3:
0x4:
0x5:
0x6:
0x7:
0x8:
0x9:
0xA:
0xB:
0xC:
0xD: Shared Library Text
0xE:
0xF: Pre-relocated Library Data
Daraus ist ersichtlich, dass die Segmente 0x3–0xC für die ausführbare Datei verfügbar sind.
1. HUGE_EXEC=0
2. HUGE_EXEC=0x3
...
10. HUGE_EXEC=0xBDie Optionen 1 und 2 haben identische Ergebnisse-Einfügen der ausführbaren Datei in die Segmente 0x3–0x4.
shtext_in_one mit einem einzigen Textsegment für gemeinsam genutzten Bibliotheksbereich
MAXDATA=0x70000000(Nicht-DSA)- In den Segmenten 0xC, 0xD, 0xE und 0xF erforderliche shmat/mmap-Regionen
- Zugriffsmöglichkeit auf gemeinsam genutzte Bibliotheksbereiche
0x0: System Segment
0x1: Shared Library Text
0x2: Exec-time Private Dependencies / Stack
0x3: Process Heap
0x4: Process Heap
0x5: Process Heap
0x6: Process Heap
0x7: Process Heap
0x8: Process Heap
0x9: Process Heap
0xA:
0xB:
0xC: shmat/mmap (mapped after exec)
0xD: shmat/mmap (mapped after exec)
0xE: shmat/mmap (mapped after exec)
0xF: shmat/mmap (mapped after exec)
Daraus ist ersichtlich, dass die Segmente 0xA–0xB für die ausführbare Datei verfügbar sind.
HUGE_EXEC=0,shtext_in_oneHUGE_EXEC=0xA,shtext_in_one
Beide Optionen fügen die ausführbare Datei in die Segmente 0xA–0xB und die gemeinsam genutzte Bibliothek in das Segment 0x1ein.
shtext_in_one mit zwei Textsegmenten des gemeinsam genutzten Bibliotheksbereichs
MAXDATA=0x70000000 DSA- In den Segmenten 0xA und 0xB erforderliche shmat/mmap-Regionen
- Texteingabehilfen für gemeinsam genutzten Bibliotheksbereich (erstellt mit dem Attribut doubletext32 )
0x0: System Segment
0x1: Shared Library Text (primary)
0x2: Exec-time Private Dependencies / Stack
0x3: Process Heap
0x4: |
0x5: |
0x6: |
0x7: |
0x8: v
0x9: ____________ (data limit)
0xA: shmat/mmap (mapped after exec)
0xB: shmat/mmap (mapped after exec)
0xC:
0xD:
0xE:
0xF: Shared Library Text (secondary)
Daraus ist ersichtlich, dass die Segmente 0xC–0xE für die ausführbare Datei verfügbar sind.
HUGE_EXEC=0,shtext_in_oneHUGE_EXEC=0xC,shtext_in_one
Beide Optionen fügen die ausführbare Datei in die Segmente 0xC–0xE und den gemeinsam genutzten Bibliothekstext in die Segmente 0x1 und 0xFein.