SO-06 Gerenciamento de Memória: Paginação e Segmentação
-
Upload
nicola-zagari -
Category
Technology
-
view
27.472 -
download
1
description
Transcript of SO-06 Gerenciamento de Memória: Paginação e Segmentação
Gerência 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
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
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
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
6 Paginação e Segmentação Eduardo Nicola F. Zagari
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.
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
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
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
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
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
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
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 #
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
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%
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.
18 Paginação e Segmentação Eduardo Nicola F. Zagari
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
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
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
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
...
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
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
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
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
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
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
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
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, ...
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
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
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)
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
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.
36 Paginação e Segmentação Eduardo Nicola F. Zagari