Segmentação
O espaço de endereçamento é composto basicamente por 3 segmentos principais:
- Segmento de código
- Heap
- Stack
Drawing 2024-11-02 19.11.48.excalidraw
Segmento de código
Considere o cenário abaixo para calcularmos o endereço físico de uma dado acesso no segmento de código.
Base = 0x2800
Limite = 10248 bytes
Início virtual = 0x0000
Acesso virtual = 0x0200
Heap
Considere o cenário abaixo para calcularmos o endereço físico de uma dado acesso na heap.
Base = 0x0200
Limite = 2048 bytes (0x0900
Acesso virtual = 0x0800
- Verificar se o acesso está dentro do limite
- Cálculo do endereço físico
Generalizando:
Stack
Considere o cenário abaixo para calcularmos o endereço físico de uma dado acesso na stack.
Base = 0x4500
(começa de baixo, pois se trata de uma estrutura de dados de pilha)
Limite = 0x1000
Início virtual = 0x2000
Acesso virtual = 0x1200
- Verificar se o acesso está dentro do limite
- Se o limite for o tamanho (em bytes) máximo:
2. Se o limite for o endereço máximo
- Cálculo do endereço físico
Generalizando:
Referências
Aula de Sistemas Operacionais do dia 28/10/2024