Enormes exemplos executáveis
Exemplos de cenários de enorme uso executável.
Exemplo de modelo de espaço de endereço de grandes
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
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.
HUGE_EXEC=0HUGE_EXEC=0x8HUGE_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
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
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.
HUGE_EXEC=0x8HUGE_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.
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
MAXDATA=0xB0000000 DSA- Sem regiões de shmat/mmap
- Nenhuma acessibilidade de área de biblioteca compartilhada
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.
HUGE_EXEC=0HUGE_EXEC=0xE
Ambas as opções inseririam o executável em segmentos 0xE–0xF.
Exemplo de modelo de espaço de endereço do processo
MAXDATA=0(não DSA)- Sem regiões de shmat/mmap
- Texto da área de biblioteca compartilhada e acessibilidade de dados pré-realocados
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.
1. HUGE_EXEC=0
2. HUGE_EXEC=0x3
...
10. HUGE_EXEC=0xBAs 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
MAXDATA=0x70000000(não DSA)- regiões shmat/mmap necessárias nos segmentos 0xC, 0xD, 0xE e 0xF
- Acessibilidade da área de biblioteca compartilhada
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.
HUGE_EXEC=0,shtext_in_oneHUGE_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.
shtext_in_one com dois segmentos de texto de área de biblioteca compartilhada exemplo
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 )
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.
HUGE_EXEC=0,shtext_in_oneHUGE_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.