Segmentação de Memória - UFRJ
Transcript of Segmentação de Memória - UFRJ
![Page 1: Segmentação de Memória - UFRJ](https://reader031.fdocumentos.com/reader031/viewer/2022013015/61cfdc5602fc136a082bcc49/html5/thumbnails/1.jpg)
EEL770 – Sistemas Operacionais
Segmentação de Memória
Pedro Cruz
![Page 2: Segmentação de Memória - UFRJ](https://reader031.fdocumentos.com/reader031/viewer/2022013015/61cfdc5602fc136a082bcc49/html5/thumbnails/2.jpg)
Memória volátil
• Algoritmos de substituição
– Substituição de páginas não usadas recentemente
– Substituição de páginas primeiro a entrar, primeiro a sair
– Substituição de páginas segunda chance
– Substituição de páginas do relógio
– Substituição de páginas usadas menos recentemente
– Substituição de páginas não usadas frequentemente
– Substituição de páginas do conjunto de trabalho
– Substituição de páginas WSClock
• Modos de substituição
– Global
– Local2
![Page 3: Segmentação de Memória - UFRJ](https://reader031.fdocumentos.com/reader031/viewer/2022013015/61cfdc5602fc136a082bcc49/html5/thumbnails/3.jpg)
Questões de implementação
• Tarefas de paginação
• Tratamento de falta de página
• Recuperação de instrução
• Retenção de páginas
• Armazenamento de apoio
• Separação de política e mecanismo
3
![Page 4: Segmentação de Memória - UFRJ](https://reader031.fdocumentos.com/reader031/viewer/2022013015/61cfdc5602fc136a082bcc49/html5/thumbnails/4.jpg)
Tarefas de paginação
• Criação do processo
– Tamanho do processo (em número de páginas)
– Tabela de páginas
• Execução do processo
– Memory Management Unit (MMU)
– Translation Lookaside Buffer (TLB)
• Falta de página
– Recuperação de página
• Término do processo
– Liberar páginas
– Liberar tabelas
4
![Page 5: Segmentação de Memória - UFRJ](https://reader031.fdocumentos.com/reader031/viewer/2022013015/61cfdc5602fc136a082bcc49/html5/thumbnails/5.jpg)
Criação do processo
• Decidir tamanho do processo
– Em páginas
• Criar a tabela de páginas
– Em memória, se processo estiver sendo executado
• Alocar espaço em disco
– Quadros de página do processo
• Código
– Pode ser o próprio arquivo executável
• Dados
• Adicionar informações de memória à tabela de processos
5
![Page 6: Segmentação de Memória - UFRJ](https://reader031.fdocumentos.com/reader031/viewer/2022013015/61cfdc5602fc136a082bcc49/html5/thumbnails/6.jpg)
Tratamento de falta de página
• Interrupção gerada por hardware
– Rotina salva registradores
– Rotina chama sistema operacional
• Página faltante descoberta por SO (endereço virtual)
– Registradores
– Instrução
• Verificação de proteção e existência da página
• Substituição de página
– Limpeza de quadro de página
• Escalonamento de processos
• Recuperação do processo original6
![Page 7: Segmentação de Memória - UFRJ](https://reader031.fdocumentos.com/reader031/viewer/2022013015/61cfdc5602fc136a082bcc49/html5/thumbnails/7.jpg)
Recuperação de instrução
• Instruções estão em mais de um endereço
– Contador de programa nem sempre estará no início da instrução quando ocorrer a falta de página
• Exemplo
– Se falha de página ocorrer nos operandos, PC não necessariamente será 1000
• Solução
– CPUs possuem um “PC” que aponta o início da instrução
7
Endereço Valor Legenda
1000 MOVE Código da instrução
1002 6 Primeiro operando
1004 1 Segundo operando
![Page 8: Segmentação de Memória - UFRJ](https://reader031.fdocumentos.com/reader031/viewer/2022013015/61cfdc5602fc136a082bcc49/html5/thumbnails/8.jpg)
Retenção de páginas
• Algumas páginas devem ser retidas
– Compartilhadas entre processos
– Usadas para fazer E/S
• Hardware especial cuida de E/S (DMA)
– Atua em paralelo à CPU
– Recebe um endereço pra ler/escrever E/S
– Ignora paginação
8
![Page 9: Segmentação de Memória - UFRJ](https://reader031.fdocumentos.com/reader031/viewer/2022013015/61cfdc5602fc136a082bcc49/html5/thumbnails/9.jpg)
Armazenamento de apoio
• Páginas ficam armazenadas em disco
– Espaço em disco deve ser alocado
• Se área especial em disco
– Mapeamento automático
– Perda de espaço em disco
– Crescimento de processos complicado
» Áreas diferentes para pilha, código e dados
• Se áreas alocadas dinamicamente
– Deve haver uma tabela de mapeamento
– Ganho de espaço em disco
• Páginas podem estar em arquivos
– Código pode ser o próprio arquivo executável9
![Page 10: Segmentação de Memória - UFRJ](https://reader031.fdocumentos.com/reader031/viewer/2022013015/61cfdc5602fc136a082bcc49/html5/thumbnails/10.jpg)
Armazenamento de apoio
Quadros em área especial de disco
1
2
3
4
5
6
7
10
Quadros dinâmicos
2
4
5
![Page 11: Segmentação de Memória - UFRJ](https://reader031.fdocumentos.com/reader031/viewer/2022013015/61cfdc5602fc136a082bcc49/html5/thumbnails/11.jpg)
Separação de política e mecanismo
• Tratador de MMU
– Baixo nível
– Dependente de hardware
• Tratador de faltas
– Parte do núcleo
• Paginador
– Espaço de usuário
11
![Page 12: Segmentação de Memória - UFRJ](https://reader031.fdocumentos.com/reader031/viewer/2022013015/61cfdc5602fc136a082bcc49/html5/thumbnails/12.jpg)
Separação de política e mecanismo
12
Processo do
usuário
Paginador
Tratador de faltas
Tratador de MMU
1. Falta
de página
Disco
2. Pedido
de página5. Entrega
da página
6. Mapa
de página
3. Pedido
de página
4. Envio
da página
Espaço de núcleo
Espaço de usuário
![Page 13: Segmentação de Memória - UFRJ](https://reader031.fdocumentos.com/reader031/viewer/2022013015/61cfdc5602fc136a082bcc49/html5/thumbnails/13.jpg)
Segmentação
• Programa normalmente “cresce” e “encolhe” sua área de memória de forma heterogênea
– Código estático
– Pilha e dados variam muito, de formas diferentes
• Memória dividida em setores lógicos
– Segmentos
• Programador recebe segmentos de memória
– Endereçamento se dá em duas dimensões
• Número de segmento
• Endereço dentro do segmento
13
![Page 14: Segmentação de Memória - UFRJ](https://reader031.fdocumentos.com/reader031/viewer/2022013015/61cfdc5602fc136a082bcc49/html5/thumbnails/14.jpg)
Compilação de programas
• Com a segmentação, cada sub-rotina pode ficar em um segmento
– Chamadas às sub-rotinas são feitas pelo segmento delas
– Alterar uma única sub-rotina não altera as outras
• Se rotinas estivessem escritas de forma contígua em uma memória unidimensional, todos os endereços após a rotina mudariam
14
![Page 15: Segmentação de Memória - UFRJ](https://reader031.fdocumentos.com/reader031/viewer/2022013015/61cfdc5602fc136a082bcc49/html5/thumbnails/15.jpg)
Proteção com segmentação
• Cada segmento pode ter uma proteção diferente
– Execução
– Leitura
– Escrita
• Segmentos podem ser compartilhados entre processos
– Bibliotecas
– Dados compartilhados
15
![Page 16: Segmentação de Memória - UFRJ](https://reader031.fdocumentos.com/reader031/viewer/2022013015/61cfdc5602fc136a082bcc49/html5/thumbnails/16.jpg)
Segmentação vs Paginação
• Páginas
– Tamanho fixo
– Programador não precisa saber
• Segmentos
– Tamanho variável
– Programador deve saber (para poder endereçar)
16
![Page 17: Segmentação de Memória - UFRJ](https://reader031.fdocumentos.com/reader031/viewer/2022013015/61cfdc5602fc136a082bcc49/html5/thumbnails/17.jpg)
Implementação
• Segmentos podem ter diferentes tamanhos
• Segmentos podem ser apagados
– Fragmentação externa
• Cada processo tem uma tabela de segmentos
– Cada entrada armazena um segmento
• Início
• Tamanho
• Segmentos podem ser usados com paginação
17
![Page 18: Segmentação de Memória - UFRJ](https://reader031.fdocumentos.com/reader031/viewer/2022013015/61cfdc5602fc136a082bcc49/html5/thumbnails/18.jpg)
Acesso a endereço de memória segmentada
• Programa referencia endereço virtual (#seg, offset)
• Entrada #seg da tabela de segmentos é acessada
– Retorna o endereço inicial B e o tamanho L do segmento
• Se offset < L
– Endereço físico = B + offset
• Se não
– Segmentation fault
18
![Page 19: Segmentação de Memória - UFRJ](https://reader031.fdocumentos.com/reader031/viewer/2022013015/61cfdc5602fc136a082bcc49/html5/thumbnails/19.jpg)
Endereçamento com segmentação
19
CPU
Somador
ComparadorEndereço
Físico
Segmento Base Tamanho
0 1000 984
1 659 300
2 2300 58
3 123 299
Endereço
Segmento Deslocamento
3 10
Erro de
endereçamento
![Page 20: Segmentação de Memória - UFRJ](https://reader031.fdocumentos.com/reader031/viewer/2022013015/61cfdc5602fc136a082bcc49/html5/thumbnails/20.jpg)
Segmentação com paginação
• Segmentos nem sempre cabem na memória
– Ou cabem, mas não ia ser bom mantê-los todos em memória
• Paginação gerencia a memória virtual
• Segmentação gerencia a separação lógica da memória
– Segmentos possuem suas tabelas de páginas
20
![Page 21: Segmentação de Memória - UFRJ](https://reader031.fdocumentos.com/reader031/viewer/2022013015/61cfdc5602fc136a082bcc49/html5/thumbnails/21.jpg)
Implementação
• Processo referencia endereço virtual (#seg, #pag, offset)
• Entrada #seg da tabela de segmentos aponta para a tabela de páginas do segmento
• Entrada #pag da tabela de páginas aponta para um quadro de página
• Endereço físico é o endereço do quadro mais o offset
21
![Page 22: Segmentação de Memória - UFRJ](https://reader031.fdocumentos.com/reader031/viewer/2022013015/61cfdc5602fc136a082bcc49/html5/thumbnails/22.jpg)
Segmentação - utilização
• Intel x86-32
– Dá suporte
• Windows e Linux não utilizam a segmentação
• Intel x86-64
– Não dá suporte
22
![Page 23: Segmentação de Memória - UFRJ](https://reader031.fdocumentos.com/reader031/viewer/2022013015/61cfdc5602fc136a082bcc49/html5/thumbnails/23.jpg)
EEL770 – Sistemas Operacionais
Segmentação de Memória
Pedro Cruz