Exemples de très grands exécutables

Exemple de scénarios d'utilisation de très grands exécutables.

Exemple de modèle d'espace adresse de grand programme

Si votre modèle d'espace adresse préféré est le suivant :
  • MAXDATA=0x50000000 (non DSA)
  • Régions shmat/mmap requises dans les segments 0xB, 0xC et 0xE
  • Accessibilité aux textes et aux données pré-relocalisées de la zone de bibliothèque partagée
L'espace adresse se présente comme suit :
   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

Vous pouvez voir dans cet exemple que les segments 0x8-0xA sont disponibles pour l'exécutable.

En supposant que la taille de l'exécutable est supérieure à 256 Mo et inférieure à 512 Mo, les paramètres HUGE_EXEC idéaux pour cette situation sont les suivants :
  1. HUGE_EXEC=0
  2. HUGE_EXEC=0x8
  3. HUGE_EXEC=0x9

Les options 1 et 2 insèrent l'exécutable dans les segments 0x8-0x9, alors que l'option 3 insère l'exécutable dans les segments 0x9-0xA.

Exemple de modèle d'espace adresse de très grand programme

Si votre modèle d'espace adresse préféré est le suivant :
  • MAXDATA=0x50000000 DSA
  • Régions shmat/mmap requises dans les segments 0xB, 0xC et 0xE
  • Accessibilité aux textes et aux données pré-relocalisées de la zone de bibliothèque partagée
L'espace adresse se présente comme suit :
   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

Vous pouvez voir que les segments 0x4-0xA sont disponibles pour l'exécutable.

En supposant que la taille de l'exécutable est supérieure à 256 Mo et inférieure à 512 Mo, les paramètres HUGE_EXEC idéaux pour cette situation sont les suivants :
  1. HUGE_EXEC=0x8
  2. HUGE_EXEC=0x9

L'option 1 insère l'exécutable dans les segments 0x8-0x9, alors que l'option 2 insère l'exécutable dans les segments 0x9-0xA.

Remarque: un paramètre HUGE_EXEC=0 ne serait pas approprié pour ce client car le système choisirait des segments 0xB–0xC pour l'exécutable (en raison de l'adaptateur DSA). Cela empêcherait ces segments d'être disponibles pour shmat/mmap après l'exécution. La définition de HUGE_EXEC sur l'un des segments 0x4, 0x5, 0x6 ou 0x7, tout en permettant l'insertion comme demandé, aurait pour résultat de limiter la croissance du tas du processus au segment juste en dessous du segment de départ demandé.

Exemple de modèle d'espace adresse de très grand programme sans accès à la zone de bibliothèque partagée

Si votre modèle d'espace adresse préféré est le suivant :
  • MAXDATA=0xB0000000 DSA
  • Pas de région shmat/mmap
  • Aucune accessibilité à la zone de bibliothèque partagée
L'espace adresse se présente comme suit :
   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:

Vous pouvez voir que les segments 0x4-0xF sont disponibles pour l'exécutable.

En supposant que la taille de l'exécutable est supérieure à 256 Mo et inférieure à 512 Mo, les paramètres HUGE_EXEC idéaux pour cette situation sont les suivants :
  1. HUGE_EXEC=0
  2. HUGE_EXEC=0xE

Les deux options insèrent l'exécutable dans les segments 0xE-0xF.

Remarque: si vous définissez un HUGE_EXEC sur l'un des segments 0x4-0xD , tout en autorisant l'insertion comme demandé, la croissance du segment de mémoire du processus sera limitée au segment situé juste en dessous du segment de début demandé.

Exemple de modèle d'espace adresse de processus par défaut

Si votre modèle d'espace adresse préféré est le suivant :
  • MAXDATA=0 (non DSA)
  • Pas de région shmat/mmap
  • Accessibilité aux textes et aux données pré-relocalisées de la zone de bibliothèque partagée
L'espace adresse se présente comme suit :
   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

Vous pouvez voir que les segments 0x3–0xC sont disponibles pour l'exécutable.

En supposant que la taille de l'exécutable est supérieure à 256 Mo et inférieure à 512 Mo, les paramètres HUGE_EXEC idéaux pour cette situation sont les suivants :
    1. HUGE_EXEC=0
    2. HUGE_EXEC=0x3
    ...
   10. HUGE_EXEC=0xB

Les options 1 et 2 donnent des résultats identiques - insertion de l'exécutable dans les segments 0x3-0x4.

Exemple de segment de texte shtext_in_one avec une seule zone de bibliothèque partagée

Si votre modèle d'espace adresse préféré est le suivant :
  • MAXDATA=0x70000000 (non DSA)
  • Régions shmat/mmap requises dans les segments 0xC, 0xD, 0xE et 0xF
  • Accessibilité à la zone de bibliothèque partagée
L'espace adresse se présente comme suit :
   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)

Vous pouvez ainsi voir que les segments 0xA–0xB sont disponibles pour l'exécutable.

En supposant que la taille de l'exécutable est supérieure à 256 Mo et inférieure à 512 Mo, les paramètres HUGE_EXEC idéaux pour cette situation sont les suivants :
  1. HUGE_EXEC=0,shtext_in_one
  2. HUGE_EXEC=0xA,shtext_in_one

Les deux options insèrent l'exécutable dans les segments 0xA-0xB et le texte de la bibliothèque partagée dans le segment 0x1.

Remarque: la définition d'une commande HUGE_EXEC sur l'un des caractères 0xB–0xE, tout en autorisant l'insertion comme demandé, empêcherait certains segments 0xC–0xF d'être disponibles pour shmat / mmap après l'exécutable.

Exemple de shtext_in_one avec deux segments de texte de zone de bibliothèque partagée

Si votre modèle d'espace adresse préféré est le suivant :
  • MAXDATA=0x70000000 DSA
  • Régions shmat/mmap requises dans les segments 0xA et 0xB
  • Accessibilité au texte de la zone de bibliothèque partagée (créée avec l'attribut doubletext32)
L'espace adresse se présente comme suit :
   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)

Vous pouvez voir que les segments 0xC-0xE sont disponibles pour l'exécutable.

En supposant que la taille de l'exécutable est supérieure à 512 Mo et inférieure à 768 Mo, les paramètres HUGE_EXEC idéaux pour cette situation sont les suivants :
  1. HUGE_EXEC=0,shtext_in_one
  2. HUGE_EXEC=0xC,shtext_in_one

Les deux options insèrent l'exécutable dans les segments 0xC-0xE et le texte de la bibliothèque partagée dans les segments 0x1 et 0xF.

Remarque: si vous définissez un HUGE_EXEC sur l'un des 0x4–0x7, tout en autorisant l'insertion comme demandé, la croissance du segment de mémoire du processus sera limitée au segment situé juste en dessous du segment de début demandé.