Enormes exemplos executáveis

Exemplos de cenários de enorme uso executável.

Exemplo de modelo de espaço de endereço de grandes

Se o seu modelo de espaço de endereço preferido for o seguinte:
  • MAXDATA=0x50000000 (não DSA)
  • regiões shmat/mmap necessárias nos segmentos 0xB, 0xC e 0xE
  • Texto da área de biblioteca compartilhada e acessibilidade de dados pré-realocados
O layout do espaço de endereço produz o seguinte:
   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

Você pode ver a partir deste exemplo que os segmentos 0x8–0xA estão disponíveis para o executável.

Supondo que o tamanho executável seja maior que 256 MB e menor que 512 MB, as configurações ideais HUGE_EXEC para esta situação são as seguintes:
  1. HUGE_EXEC=0
  2. HUGE_EXEC=0x8
  3. HUGE_EXEC=0x9

As opções 1 e 2 inseririam o executável em segmentos 0x8–0x9, enquanto a opção 3 inseriria o executável em segmentos 0x9–0xA.

Exemplo de modelo de espaço de endereço de programa muito grande

Se o seu modelo de espaço de endereço preferido for o seguinte:
  • MAXDATA=0x50000000 DSA
  • regiões shmat/mmap necessárias nos segmentos 0xB, 0xC e 0xE
  • Texto da área de biblioteca compartilhada e acessibilidade de dados pré-realocados
O layout do espaço de endereço produz o seguinte:
   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

Você pode ver a partir disso que os segmentos 0x4–0xA estão disponíveis para o executável.

Supondo que o tamanho executável seja maior que 256 MB e menor que 512 MB, as configurações ideais HUGE_EXEC para esta situação são as seguintes:
  1. HUGE_EXEC=0x8
  2. HUGE_EXEC=0x9

A opção 1 inseriria o executável em segmentos 0x8–0x9, enquanto a opção 2 inseriria o executável em segmentos 0x9–0xA.

Nota: Uma configuração HUGE_EXEC=0 não seria apropriada para este cliente uma vez que o sistema escolheria os segmentos 0xB–0xC para o executável (por causa da DSA). Isso evitaria que esses segmentos estejam disponíveis para o shmat / mmap após a exec. Configurar HUGE_EXEC para qualquer um dos segmentos 0x4, 0x5, 0x6ou 0x7 , ao mesmo tempo que permite que a inserção ocorra conforme solicitado, resultaria em limitar o crescimento do heap do processo logo abaixo do segmento de partida solicitado.

Modelo de espaço de endereço de programa muito grande sem acesso a exemplo de área de biblioteca compartilhada

Se o seu modelo de espaço de endereço preferido for o seguinte:
  • MAXDATA=0xB0000000 DSA
  • Sem regiões de shmat/mmap
  • Nenhuma acessibilidade de área de biblioteca compartilhada
O layout do espaço de endereço produz o seguinte:
   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:

Você pode ver a partir disso que os segmentos 0x4–0xF estão disponíveis para o executável.

Supondo que o tamanho executável seja maior que 256 MB e menor que 512 MB, as configurações ideais HUGE_EXEC para esta situação são as seguintes:
  1. HUGE_EXEC=0
  2. HUGE_EXEC=0xE

Ambas as opções inseririam o executável em segmentos 0xE–0xF.

Nota: A configuração de um HUGE_EXEC para qualquer um dos segmentos 0x4-0xD , ao mesmo tempo que permite que a inserção ocorra conforme solicitado, resultaria em limitar o crescimento do heap do processo para o segmento logo abaixo do segmento de início solicitado.

Exemplo de modelo de espaço de endereço do processo

Se o seu modelo de espaço de endereço preferido for o seguinte:
  • MAXDATA=0 (não DSA)
  • Sem regiões de shmat/mmap
  • Texto da área de biblioteca compartilhada e acessibilidade de dados pré-realocados
O layout do espaço de endereço produz o seguinte:
   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

Você pode ver a partir disso que os segmentos 0x3–0xC estão disponíveis para o executável.

Supondo que o tamanho executável seja maior que 256 MB e menor que 512 MB, as configurações ideais HUGE_EXEC para esta situação são as seguintes:
    1. HUGE_EXEC=0
    2. HUGE_EXEC=0x3
    ...
   10. HUGE_EXEC=0xB

As opções 1 e 2 possuem resultados idênticos-inserindo o executável em segmentos 0x3–0x4.

shtext_in_one com um único exemplo de segmento de texto de área de biblioteca compartilhada

Se o seu modelo de espaço de endereço preferido for o seguinte:
  • MAXDATA=0x70000000 (não DSA)
  • regiões shmat/mmap necessárias nos segmentos 0xC, 0xD, 0xE e 0xF
  • Acessibilidade da área de biblioteca compartilhada
O layout do espaço de endereço produz o seguinte:
   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)

Você pode ver a partir disso que os segmentos 0xA–0xB estão disponíveis para o executável.

Supondo que o tamanho executável seja maior que 256 MB e menor que 512 MB, as configurações ideais HUGE_EXEC para esta situação são as seguintes:
  1. HUGE_EXEC=0,shtext_in_one
  2. HUGE_EXEC=0xA,shtext_in_one

Ambas as opções inseririam o executável em segmentos 0xA–0xB e texto de biblioteca compartilhada no segmento 0x1.

Nota: A configuração de um HUGE_EXEC para qualquer um dos 0xB–0xE, ao mesmo tempo que permite que a inserção ocorra conforme solicitado, evitaria que alguns dos segmentos 0xC–0xF estejam disponíveis para o shmat / mmap após o executável.

shtext_in_one com dois segmentos de texto de área de biblioteca compartilhada exemplo

Se o seu modelo de espaço de endereço preferido for o seguinte:
  • MAXDATA=0x70000000 DSA
  • regiões shmat/mmap necessárias nos segmentos 0xA e 0xB
  • Área de biblioteca compartilhada (criada com a acessibilidade de texto doubletext32 )
O layout do espaço de endereço produz o seguinte:
   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)

Você pode ver a partir disso que os segmentos 0xC–0xE estão disponíveis para o executável.

Supondo que o tamanho executável seja maior que 512 MB e menor que 768 MB, as configurações ideais HUGE_EXEC para esta situação são as seguintes:
  1. HUGE_EXEC=0,shtext_in_one
  2. HUGE_EXEC=0xC,shtext_in_one

Ambas as opções inseririam o executável em segmentos 0xC–0xE e texto de biblioteca compartilhada em segmentos 0x1 e 0xF.

Nota: A configuração de um HUGE_EXEC para qualquer um dos 0x4–0x7, ao mesmo tempo que permite que a inserção ocorra conforme solicitado, resultaria em limitar o crescimento do heap do processo para o segmento logo abaixo do segmento de início solicitado.