segmentação de memória - ufrj

23
EEL770 – Sistemas Operacionais Segmentação de Memória Pedro Cruz

Upload: others

Post on 01-Jan-2022

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Segmentação de Memória - UFRJ

EEL770 – Sistemas Operacionais

Segmentação de Memória

Pedro Cruz

Page 2: Segmentação de Memória - UFRJ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

EEL770 – Sistemas Operacionais

Segmentação de Memória

Pedro Cruz