1. O documento discute os conceitos de paginação e segmentação como soluções para o problema da fragmentação externa na memória.
2. A paginação divide a memória lógica e física em páginas de tamanho fixo, enquanto a segmentação divide a memória lógica em segmentos de tamanho variável.
3. A paginação é implementada por meio de uma tabela de páginas que mapeia endereços lógicos para endereços físicos, enquanto a segmentação usa uma tabela de segmentos
2. 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
Eduardo Nicola F. Zagari
2
Paginação e Segmentação
3. 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
Eduardo Nicola F. Zagari
3
Paginação e Segmentação
4. 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
0
Página 0 1
Página 1 0 1
2
Página 2 1 4
3
Página 3 2 3 4
... 3 7 5
6
7
Memória Lógica Tabela de Páginas Memória Física
Eduardo Nicola F. Zagari
4
Paginação e Segmentação
7. 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.
Eduardo Nicola F. Zagari
7
Paginação e Segmentação
8. End. Lógico End. Físico
CPU p d b d
Memória
Principal
p
b
p: no da página
d: deslocamento
b: no do bloco Tabela de Páginas
Eduardo Nicola F. Zagari
8
Paginação e Segmentação
9. 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ê:
Se tamanho do espaço lógico: 2a
e tamanho da página: 2b p d
a-b b
a
Eduardo Nicola F. Zagari
9
Paginação e Segmentação
10. Tamanho da Página: 1000 = 103
Endereço: 17436
End. Lógico End. Físico
CPU 17 436 23 436
Memória
Principal
17
23
Tabela de Páginas
Eduardo Nicola F. Zagari
10
Paginação e Segmentação
11. Tamanho da Página: 256 = 28
Endereço: 17436 = (100010000011100)2
End. Lógico End. Físico
CPU 1000100
00011100
10111 00011100
(5916)10
Memória
(1000100)2
Principal
= 68
23
Tabela de Páginas
Eduardo Nicola F. Zagari
11
Paginação e Segmentação
12. Fragmentação externa resolvida
Fragmentação interna:
tam. pag. = 2048 bytes
35 pag + 1086 bytes
processo = 72766 bytes
fragmentação = 2048 - 1086 = 922 bytes
Para processos de tamanho aleatório:
Fragmentação média = (tamanho de pagina) / 2
Eduardo Nicola F. Zagari
12
Paginação e Segmentação
13. 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
Eduardo Nicola F. Zagari
13
Paginação e Segmentação
14. 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
Página #
Bloco #
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.
Eduardo Nicola F. Zagari
14
Paginação e Segmentação
15. End. Lógico End. Físico
CPU p d TLB b d
Pagina Bloco
Sucesso
p b Memória
Principal
p
Se TLB falha
b
Tabela de Páginas
Eduardo Nicola F. Zagari
15
Paginação e Segmentação
16. 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%
Eduardo Nicola F. Zagari
16
Paginação e Segmentação
17. 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.
Eduardo Nicola F. Zagari
17
Paginação e Segmentação
19. 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.:
número da página deslocamento
p1 p2 d
Eduardo Nicola F. Zagari
19
Paginação e Segmentação
20. 10 10 12 Tabela de páginas
p1 p2 d
de segundo nível
0
1 Tabela de
páginas para os
primeiros 4M
≈ ≈ de memória
Tabela de páginas 1023
de primeiro nível 0
1 deslocamento
0
p1 1
≈ ≈
≈ ≈ 1023
1023
...
0
p2 1
Para
páginas
≈ ≈
1023
Eduardo Nicola F. Zagari
20
Paginação e Segmentação
21. 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
Eduardo Nicola F. Zagari
21
Paginação e Segmentação
22. ed 1
0 3 0
ed 2
ed 3 1 4 1 dados 1
ed 1
0 3 2 dados 3
dados 1 2 6 ed 2
1 4 3 ed 1
Processo P1 ed 3
3 1 4 ed 2
Tabela de Pá- dados 3 2 6
ginas para P1 5
Processo P3 3 2
6 ed 3
Tabela de Pá- 7 dados 2
ed 1 ginas para P3
0 3 8
ed 2
1 4 9
ed 3
dados 2 2 6 10
Processo P2
...
3 7
Tabela de Pá-
Memória Física
ginas para P2
Eduardo Nicola F. Zagari
22
Paginação e Segmentação
23. 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
Eduardo Nicola F. Zagari
23
Paginação e Segmentação
24. 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
Sub- Pilha Funções
rotina Módulos
Função
Tabelas
Programa
Tabela de Vetores
Principal
símbolos Pilhas
Listas
Variáveis locais
Espaço de Endereçamento Lógico Variáveis globais
Eduardo Nicola F. Zagari
24
Paginação e Segmentação
25. 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
Eduardo Nicola F. Zagari
25
Paginação e Segmentação
26. Pilha
Sub- Pilha
rotina
Função
Sub
Programa rotina
Tabela de Principal T.S.
símbolos
Prog.
Princ.
Espaço de Endereçamento Lógico
Função
• abela de Segmentos:
T Memória Física
• ase – contém o endereço físico inicial do segmento na memória
b
• imite – especifica o tamanho do segmento
l
Eduardo Nicola F. Zagari
26
Paginação e Segmentação
27. Mapeamento de endereços bidimensionais em endereços físicos unidimensionais
Tabela de segmentos
s
limite base
CPU s d Memória
Principal
sim
< +
não
Interrupção de software; erro de endereçamento Memória Física
Eduardo Nicola F. Zagari
27
Paginação e Segmentação
28. 0
Sub- Tabela de segmentos 1400
rotina Seg 0
Programa 2400
Limite Base
segmento 0 Principal
0 1000 1400
segmento 2 3200
1 400 6300
Função Seg 3
2 400 4300
Pilha
3 1100 3200 4300
segmento 3 4 1000 4700 Seg 2
segmento 1 4700
Tabela de Seg 4
símbolos 5700
segmento 4 6300
6700
Seg 1
Espaço de Endereçamento Lógico
Memória Física
Eduardo Nicola F. Zagari
28
Paginação e Segmentação
29. 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
Eduardo Nicola F. Zagari
29
Paginação e Segmentação
30. 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, ...
Eduardo Nicola F. Zagari
30
Paginação e Segmentação
31. 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
Eduardo Nicola F. Zagari
31
Paginação e Segmentação
32. 0
Memória lógica
Tabela de segmentos
Editor Processo P1
Processo P1 43062
Limite Base
segmento 0 Dados 1 25286 43062 Editor
0
segmento 1 4425 68348
1
68348
Dados 1
72773
Memória lógica
Processo P2 Tabela de segmentos
Editor Processo P2
Limite Base
segmento 0 Dados 2 90003
25286 43062 Dados 2
segmento 1 0 98553
8850 90003
1
Memória Física
Eduardo Nicola F. Zagari
32
Paginação e Segmentação
33. 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)
Eduardo Nicola F. Zagari
33
Paginação e Segmentação
34. Tabela de segmentos
Endereço Lógico
End da tabela
de páginas
No No deslo- ≈ ≈
seg pag camento Tabela de páginas
Endereço do
bloco
≈ ≈
No bloco deslocamento
Endereço Físico
Eduardo Nicola F. Zagari
34
Paginação e Segmentação
35. 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.
Eduardo Nicola F. Zagari
35
Paginação e Segmentação