SO-06 Gerenciamento de Memória: Paginação e Segmentação

36
Gerência de Memória Paginação e Segmentação

description

Gerência de Memória. Paginação e Segmentação de Memória (Sistemas Operacionais)

Transcript of SO-06 Gerenciamento de Memória: Paginação e Segmentação

Page 1: SO-06 Gerenciamento de Memória: Paginação e Segmentação

Gerência de Memória Paginação e Segmentação

Page 2: SO-06 Gerenciamento de Memória: Paginação e Segmentação

2 Paginação e Segmentação Eduardo Nicola F. Zagari

  Paginação   Hardware   Tamanho das Páginas   Modelo   Estrutura da Tabela de Páginas   Paginação em Vários Níveis   Compartilhamento de Páginas

  Segmentação   Hardware   Implementação de Tabela de Segmentos   Proteção e Compartilhamento   Fragmentação

  Segmentação com Paginação

Page 3: SO-06 Gerenciamento de Memória: Paginação e Segmentação

3 Paginação e Segmentação Eduardo Nicola F. Zagari

  Outra solução (além da compactação) para o problema da fragmentação externa:   permitir que o espaço de endereçamento lógico seja não contíguo,

facilitando a alocação dos buracos da memória   esse mecanismo evita o problema idêntico que ocorre com a memória

secundária, onde a compactação tem alto custo   A memória física é dividida em partes de tamanho fixo, chamadas

de blocos (frames ou molduras)   A memória lógica é dividida em partes do mesmo tamanho,

chamadas de páginas   A memória secundária também é dividida em partes do mesmo

tamanho dos blocos da memória principal

Page 4: SO-06 Gerenciamento de Memória: Paginação e Segmentação

4 Paginação e Segmentação Eduardo Nicola F. Zagari

Página 0

7 3 4

Página 1 Página 2 Página 3

Tabela de Páginas Memória Lógica Memória Física

0 1 2 3

1

...

0 1 2 3 4 5 6 7

  Forma de atribuição de endereço em tempo de execução usar paginação é semelhante a usar uma tabela de registradores base, um para cada bloco

Page 5: SO-06 Gerenciamento de Memória: Paginação e Segmentação

5 Paginação e Segmentação Eduardo Nicola F. Zagari

Página 0 20 18 13

Página 1 Página 2 Página 3 Tabela de Páginas

Lista de frames livres 14 13 18 20 15

0 1 2 3

14

Memória Física

10 11 12 13 14 15 16 17 18 19 20 21

Lista de frames livres 15

Memória Física

10 11 12 13 14 15 16 17 18 19 20 21

Página 0 Página 1

Página 2

Página 3

Page 6: SO-06 Gerenciamento de Memória: Paginação e Segmentação

6 Paginação e Segmentação Eduardo Nicola F. Zagari

Page 7: SO-06 Gerenciamento de Memória: Paginação e Segmentação

7 Paginação e Segmentação Eduardo Nicola F. Zagari

  Endereços gerados pela CPU são divididos em:   Número da página (p) – usado como um índice em uma tabela de

páginas, a qual contém o endereço base de cada página na memória física.

  Deslocamento de Página (d) – combinado com o endereço base para definir o endereço na memória física que será enviado para a unidade de memória.

Page 8: SO-06 Gerenciamento de Memória: Paginação e Segmentação

8 Paginação e Segmentação Eduardo Nicola F. Zagari

CPU

Memória Principal

Tabela de Páginas

End. Físico

b d

End. Lógico

p d

p

b

p: no da página d: deslocamento b: no do bloco

Page 9: SO-06 Gerenciamento de Memória: Paginação e Segmentação

9 Paginação e Segmentação Eduardo Nicola F. Zagari

a - b p d

b Se tamanho do espaço lógico: 2a

e tamanho da página: 2b

  O tamanho da página (e do bloco) é definido de acordo com o hardware

  Ele é normalmente uma potência de 2 (atualmente, o usual é entre 512 bytes e 8192 bytes), veja o por quê:

a

Page 10: SO-06 Gerenciamento de Memória: Paginação e Segmentação

10 Paginação e Segmentação Eduardo Nicola F. Zagari

CPU

Memória Principal

Tabela de Páginas

End. Físico

23 436

End. Lógico

17 436

17

23

Tamanho da Página: 1000 = 103 Endereço: 17436

Page 11: SO-06 Gerenciamento de Memória: Paginação e Segmentação

11 Paginação e Segmentação Eduardo Nicola F. Zagari

CPU

Memória Principal

Tabela de Páginas

End. Físico

10111

End. Lógico

1000100 00011100

(1000100)2 = 68

23

Tamanho da Página: 256 = 28

Endereço: 17436 = (100010000011100)2

00011100

(5916)10

Page 12: SO-06 Gerenciamento de Memória: Paginação e Segmentação

12 Paginação e Segmentação Eduardo Nicola F. Zagari

  Fragmentação externa resolvida   Fragmentação interna:

  tam. pag. = 2048 bytes

  processo = 72766 bytes

  Para processos de tamanho aleatório:   Fragmentação média = (tamanho de pagina) / 2

35 pag + 1086 bytes

fragmentação = 2048 - 1086 = 922 bytes

Page 13: SO-06 Gerenciamento de Memória: Paginação e Segmentação

13 Paginação e Segmentação Eduardo Nicola F. Zagari

  Assim,   páginas menores, menor fragmentação interna

  Entretanto,   páginas maiores, menores os gastos com as tabelas de páginas e

mais eficientes as transferências (E/S) em discos   Separação entre a memória física e a visão que o usuário tem

da memória (espaço único e contíguo)   SO mantém cópia (apontador) das tabelas de páginas de cada

processo maior tempo gasto em uma mudança de contexto

Page 14: SO-06 Gerenciamento de Memória: Paginação e Segmentação

14 Paginação e Segmentação Eduardo Nicola F. Zagari

1.  Pode ser representada em hardware por um conjunto de registradores dedicados - no pequeno de entradas

2.  Pode ser mantida em memória   Registrador Base de Tabela de Página (RBTP)   Registrador de Tamanho da Tabela de Página (RTTP)   Neste esquema, todo acesso a dados/instrução requer 2 acessos à

memória: um para a tabela de páginas e outro para os dados/instrução. 3.  Memória Associativa ou TLB (Translation Look-Aside Buffers) -

cache em hardware de pequena capacidade e busca rápida

  Tradução de Endereços (p, b): se p está num registrador associativo, obtem número b do bloco. Caso contrário, obtém número b do bloco a partir da tabela de páginas em memória.

Página # Bloco #

Page 15: SO-06 Gerenciamento de Memória: Paginação e Segmentação

15 Paginação e Segmentação Eduardo Nicola F. Zagari

CPU

Memória Principal

Tabela de Páginas

End. Físico

b d

End. Lógico

p d

p

b

Pagina Bloco

Se TLB falha Su

cess

o

p b

TLB

Page 16: SO-06 Gerenciamento de Memória: Paginação e Segmentação

16 Paginação e Segmentação Eduardo Nicola F. Zagari

  Busca Associativa (Pesquisa) = ε unidades de tempo   Considere tempo de ciclo de memória igual a 1 microsegundo   Taxa de acerto – porcentagem de vezes que um número de páginas é

encontrado nos registradores associativos (varia com o número de registradores associativos).

  Taxa de acerto = α   Tempo de Acesso Efetivo (Tae) Tae = (1 + ε) α + (2 + ε)(1 – α) = 2 + ε – α

 Pesquisa: 20 ns e Memória: 100 ns  80% acerto t.med. acesso = 0.8*120 + 0.2*220 = 140 ns  98% acerto t.med. = 0.98*120 + 0.02*220 = 122 ns  Intel 80486: 32 reg. associativos e taxa de sucesso 98%

Page 17: SO-06 Gerenciamento de Memória: Paginação e Segmentação

17 Paginação e Segmentação Eduardo Nicola F. Zagari

  Proteção de Memória é implementada pela associação de um bit de proteção com cada bloco de memória.

  Bit válida-inválida relacionado a cada entrada na tabela de página:   “válida” indica que a página associada está no espaço de

endereços lógico do processo, isto é, uma página válida.   “inválida” indica que a página não está no espaço de endereços

lógicos do processo.

Page 18: SO-06 Gerenciamento de Memória: Paginação e Segmentação

18 Paginação e Segmentação Eduardo Nicola F. Zagari

Page 19: SO-06 Gerenciamento de Memória: Paginação e Segmentação

19 Paginação e Segmentação Eduardo Nicola F. Zagari

  Espaços de endereçamento lógicos muito grandes (232 a 264

bytes) tabelas enormes...   Exemplo:

  Espaço endereçamento lógico: 32 bits   Tamanho de páginas: 4k (212)

 232/212 = 1 M (220) entradas  1 M entradas de 4 bytes = Tabelas de 4 M

  Solução: dividir a tabela de páginas em várias partes   Ex.:

p1 p2 d

número da página deslocamento

Page 20: SO-06 Gerenciamento de Memória: Paginação e Segmentação

20 Paginação e Segmentação Eduardo Nicola F. Zagari

Tabela de páginas de primeiro nível

p1 p2 d

≈ ≈

Tabela de páginas de segundo nível

≈ ≈

≈ ≈

≈ ≈

10 10 12

1023

0 1

1023

0 1

1023

0 1

1023

0 1

...

p1

p2 Para páginas

Tabela de páginas para os primeiros 4M de memória

deslocamento

Page 21: SO-06 Gerenciamento de Memória: Paginação e Segmentação

21 Paginação e Segmentação Eduardo Nicola F. Zagari

  Outra vantagem do mecanismo de paginação é a possibilidade de compartilhamento de código.

  Exemplo:   40 usuários usando um editor de textos 150 k de código + 50 k

de dados  Total: 8000 k

  Compiladores, Sistemas de Janelas, Sistemas de Banco de Dados códigos que nunca modificam a si próprios durante sua execução   Usando compartilhamento de páginas: 2150 k no total

Page 22: SO-06 Gerenciamento de Memória: Paginação e Segmentação

22 Paginação e Segmentação Eduardo Nicola F. Zagari

1 6 4

ed 1 ed 2 ed 3

dados 1

Tabela de Pá- ginas para P1

Processo P1

0 1 2 3

3

7 6 4

ed 1 ed 2 ed 3

dados 2 Processo P2

0 1 2 3

3

Tabela de Pá- ginas para P2

2 6 4

ed 1 ed 2 ed 3

dados 3 Processo P3

0 1 2 3

3

Tabela de Pá- ginas para P3

Memória Física

0 1 2 3 4 5 6 7 8 9 10

dados 1 dados 3

ed 1 ed 2

ed 3 dados 2

...

Page 23: SO-06 Gerenciamento de Memória: Paginação e Segmentação

23 Paginação e Segmentação Eduardo Nicola F. Zagari

  Suponha que os processos P1 e P2 estejam compartilhando páginas de um editor de texto   Problema:

 Se o SO remover P1 da memória, P2 terá que trazer de volta todas as páginas que compartilhava de P1

 Se P1 terminar, é preciso determinar se suas páginas ainda estão em uso, de forma que seu espaço em disco não seja liberado

  Para evitar ter que buscar em todas as tabelas de páginas se uma página é compartilhada ou não (o que é caro!) montam-se estruturas de dados especiais para tratar das páginas compartilhadas

Page 24: SO-06 Gerenciamento de Memória: Paginação e Segmentação

24 Paginação e Segmentação Eduardo Nicola F. Zagari

  Com a paginação, ocorre a separação entre a visão da memória pelo usuário e a memória física   Qual é a visão que o usuário tem da memória?

Programa Principal Sub-rotinas Procedimentos Funções Módulos

Tabelas Vetores Pilhas Listas Variáveis locais Variáveis globais

Sub- rotina

Programa Principal Tabela de

símbolos

Pilha

Função

Espaço de Endereçamento Lógico

Page 25: SO-06 Gerenciamento de Memória: Paginação e Segmentação

25 Paginação e Segmentação Eduardo Nicola F. Zagari

  Segmentação é um esquema de gerência de memória que dá suporte a esta visão do usuário:   o espaço de end. lógico é uma coleção de segmentos   cada segmento tem um nome e um tamanho definido pelo seu

propósito   cada endereço é especificado por dois valores: nome (número) do

segmento e a posição (deslocamento) no segmento (offset) (<número, posição>)  Elementos dentro do segmento são identificados pelo

deslocamento (offset) a partir do início ( 5a entrada da tabela, 3a instrução da função)

  Compilador constrói automaticamente os segmentos   Carregador aloca (determina) o número de cada segmento

s d

Page 26: SO-06 Gerenciamento de Memória: Paginação e Segmentação

26 Paginação e Segmentação Eduardo Nicola F. Zagari

Sub- rotina

Programa Principal Tabela de

símbolos

Pilha

Função

Espaço de Endereçamento Lógico

Função

Prog. Princ.

Memória Física

T.S.

Sub rotina

Pilha

• Tabela de Segmentos: • base – contém o endereço físico inicial do segmento na memória • limite – especifica o tamanho do segmento

Page 27: SO-06 Gerenciamento de Memória: Paginação e Segmentação

27 Paginação e Segmentação Eduardo Nicola F. Zagari

CPU Memória Principal

não

s d

Tabela de segmentos

limite base s

< + sim

Memória Física Interrupção de software; erro de endereçamento

Mapeamento de endereços bidimensionais em endereços físicos unidimensionais

Page 28: SO-06 Gerenciamento de Memória: Paginação e Segmentação

28 Paginação e Segmentação Eduardo Nicola F. Zagari

Sub- rotina

Programa Principal

Tabela de símbolos

Pilha Função

Espaço de Endereçamento Lógico

segmento 0

segmento 1

segmento 2

segmento 3

segmento 4

0

3200

6300 Seg 1

Seg 4

1400 2400

Memória Física

5700

Limite Base 1000 400 400 1100 1000

1400 6300 4300 3200 4700

0 1 2 3 4 Seg 2

Seg 3

Seg 0

4300 4700

6700

Tabela de segmentos

Page 29: SO-06 Gerenciamento de Memória: Paginação e Segmentação

29 Paginação e Segmentação Eduardo Nicola F. Zagari

  Assim como a tabela de páginas, a tabela de segmentos pode ser armazenada tanto em registradores rápidos quanto na memória

  Se um programa consiste em muitos segmentos, deve-se usar a memória. Um registrador RBTS (Registrador Base da Tabela de Segmentos) aponta para a localização na memória da tabela

  Como o tamanho da tabela varia, usa-se um registrador RTTS (Registrador de Tamanho da Tabela de Segmentos) para indicar o comprimento da mesma, isto é, indica o número de segmentos usados pelo programa.

número do segmento s é legal se s < RTTS   Pode-se também usar um conjunto de registradores associativos

para armazenar as entradas mais recentemente usadas

Page 30: SO-06 Gerenciamento de Memória: Paginação e Segmentação

30 Paginação e Segmentação Eduardo Nicola F. Zagari

  Direitos de acesso diferentes a cada segmento   Como os segmentos representam porções semanticamente

distintas de um programa, todos os acessos a este segmento serão usados da mesma maneira   Segmento de dados leitura/escrita/execução   Segmento de instruções somente leitura/execução

  O hardware de tradução de endereços verifica os bits de proteção associados com cada entrada na tabela de segmentos

  Possibilidade de detecção pelo hardware de violação de limites de arranjos, matrizes, vetores, ...

Page 31: SO-06 Gerenciamento de Memória: Paginação e Segmentação

31 Paginação e Segmentação Eduardo Nicola F. Zagari

  Cada processo tem sua tabela de segmentos: pode-se compartilhar segmentos entre dois processos diferentes, fazendo-se entradas de suas tabelas apontarem para a mesma posição de memória física

  Pode-se compartilhar programas inteiros ou apenas funções, procedimentos, etc

  Problemas quando o segmento compartilhado faz referências internas a si mesmo (ex.: comando de desvio) se esse segmento é compartilhado, todos os processos que o compartilham devem usar o mesmo número de segmento

Page 32: SO-06 Gerenciamento de Memória: Paginação e Segmentação

32 Paginação e Segmentação Eduardo Nicola F. Zagari

Editor

Dados 1

Memória lógica Processo P1

segmento 0

segmento 1

Editor

Dados 2

Memória lógica Processo P2

segmento 0

segmento 1

Limite Base 43062 68348 0

1

Tabela de segmentos Processo P1

25286 4425

Limite Base 43062 90003 0

1

Tabela de segmentos Processo P2

25286 8850

0

68348

98553 Dados 2

43062

Memória Física

90003

Dados 1

Editor

72773

Page 33: SO-06 Gerenciamento de Memória: Paginação e Segmentação

33 Paginação e Segmentação Eduardo Nicola F. Zagari

  Segmentos têm tamanho variável (ao contrário das páginas)   A alocação dinâmica de memória é normalmente resolvida com

um algoritmo de escolha do primeiro (first fit) ou melhor (best fit) ou ..., bloco de memória

  Segmentação pode causar fragmentação externa (como no esquema de partição da memória em partes de tamanho variável) pode-se usar compactação

  Se o tamanho médio de segmentos for pequeno fragmentação também é pequena (é mais fácil alocar pequenos segmentos do que processos)

Page 34: SO-06 Gerenciamento de Memória: Paginação e Segmentação

34 Paginação e Segmentação Eduardo Nicola F. Zagari

No seg

No

pag deslo-

camento

Endereço Lógico Tabela de segmentos

≈ ≈ End da tabela

de páginas

Tabela de páginas

≈ ≈ Endereço do

bloco

No bloco deslocamento Endereço Físico

Page 35: SO-06 Gerenciamento de Memória: Paginação e Segmentação

35 Paginação e Segmentação Eduardo Nicola F. Zagari

  Como mostrado no diagrama a seguir, o Intel 386 usa segmentação com paginação para gerência de memória com um esquema de paginação em 2 níveis.

Page 36: SO-06 Gerenciamento de Memória: Paginação e Segmentação

36 Paginação e Segmentação Eduardo Nicola F. Zagari