cap 9

Propaganda
Capítulo 9: Gerência de
Memória
Video
Assuntos
 Cenário
Video
 Swapping
 Alocação contígua
 Paginação
 Segmentação
 Paginação com segmentação
Operating System Concepts
3.2
Silberschatz, Galvin and Gagne 2002
Cenário
 Programa tem que ser
carregado em memória e
colocado dentro de um
processo para rodar
 Fila de entrada
Video
Conjunto de processos esperando ser
carregados
 Programas de usuário passam por vários
passos antes de rodar
Operating System Concepts
3.3
Silberschatz, Galvin and Gagne 2002
Definição de Endereços
 Quando são definidos os
endereços de memória de
instruções e dados
Video
Tempo de compilação
Tempo de carga
Tempo de execução
Operating System Concepts
3.4
Silberschatz, Galvin and Gagne 2002
Compilação
 Se a locação de memória é
conhecida a priori, código
absoluto é gerado
 Código absoluto tem que ser recompilado
se a localização do programa em
memória tem que ser mudada
Operating System Concepts
3.5
Video
Silberschatz, Galvin and Gagne 2002
Tempo de Carga
 Para que o programa possa ser
carregado em qualquer posição
de memória, o código deve ser
relocável
 Código relocável possui uma tabela com
todas as posições do programa onde
deve-se somar o valor da posição de
memória inicial
Operating System Concepts
3.6
Video
Silberschatz, Galvin and Gagne 2002
Tempo de Execução
 É possível trocar endereços
durante a execução desde que
se tenha hardware que suporte
isto (transparente ao programa)
 O hardware produz mapas de endereços
(com registradores base e limite)
Operating System Concepts
3.7
Video
Silberschatz, Galvin and Gagne 2002
Passos no Processamento de
um Programa de Usuário
Video
Operating System Concepts
3.8
Silberschatz, Galvin and Gagne 2002
Endereços Lógicos e Físicos
 Diferença básica
Video
Endereços lógicos são usados
pela CPU (endereços virtuais)
Endereços físicos são vistos pela memória
 Endereços lógicos e físicos são os
mesmos se a definição de endereços é
feita em tempo de compilação ou carga
Operating System Concepts
3.9
Silberschatz, Galvin and Gagne 2002
Unidade de Gerência de
Memória (MMU)
 Hardware que mapeia
endereços virtuais em
endereços físicos
 O registrador de relocação é adicionado a
cada endereço gerado na CPU antes de
ser visto pela memória
 Programas usam endereços lógicos,
nunca vendo os endereços físicos
Operating System Concepts
3.10
Video
Silberschatz, Galvin and Gagne 2002
Relocação Dinâmica usando
Registrador de Relocação
Video
Operating System Concepts
3.11
Silberschatz, Galvin and Gagne 2002
Carga Dinâmica
 Rotina só é carregada quando
chamada
 Melhor utilização de memória
Video
Rotinas que não são usadas nunca são
carregadas
 Útil quando muito código é necessário
para situações infrequentes
Tratamento de erros
 Não necessita de suporte do SO
Operating System Concepts
3.12
Silberschatz, Galvin and Gagne 2002
Ligação Dinâmica
 Ligação (linking) feito em
tempo de execução
 Um stub fica no lugar da rotina
Video
é usado para localizá-la na biblioteca
 O stub é substituído pelo endereço da
rotina, que é então executada
 O SO tem que saber se a rotina está no
espaço de memória do processo
 Isto é especialmente útil para bibliotecas
Operating System Concepts
3.13
Silberschatz, Galvin and Gagne 2002
Overlays
 Mantém em memória só as
intruções e dados necessárias
no momento
 Necessário quando o processo é maior
que a memória alocada para ele
 Implementado pelo usuário
Video
Não é necessário suporte do SO
Projeto dos overlays é complexo
Operating System Concepts
3.14
Silberschatz, Galvin and Gagne 2002
Overlays para um Montador de
Duas Passadas
Video
Operating System Concepts
3.15
Silberschatz, Galvin and Gagne 2002
Swapping
 Método que tira um processo
temporariamente da memória
Video
Ele é armazenado em disco
Pode ser recarregado e continuar a execução
 Área de Swap
Partição ou arquivo usado para swapping
 Roll out, roll in – variante de swap usada
em escalonamento por prioridades
Operating System Concepts
3.16
Silberschatz, Galvin and Gagne 2002
Swapping
 A maior parte do tempo é
gasta na transferência para
disco
Video
O tempo depende da quantidade de memória
a ser copiada
 Versões de swapping são encontradas em
vários sistemas (Unix, Linux, Windows)
Operating System Concepts
3.17
Silberschatz, Galvin and Gagne 2002
Diagrama
Video
Operating System Concepts
3.18
Silberschatz, Galvin and Gagne 2002
Alocação contígua
 A memória principal é dividida
normalmente em duas partes
Video
SO residente
Memória baixa, junto com vetor de
interrupções
Processos do usuário
Memória alta
Operating System Concepts
3.19
Silberschatz, Galvin and Gagne 2002
Partição Única
 Processos são protegidos de
outros usando o registrador de
relocação
Video
Isto protege também código e dados do SO
 O registrador de relocação contém o valor
do menor endereço físico
 O registrador de limite contém o valor do
maior endereço físico
Endereços tem que ser menores que o limite
Operating System Concepts
3.20
Silberschatz, Galvin and Gagne 2002
Suporte de Hardware
Video
Operating System Concepts
3.21
Silberschatz, Galvin and Gagne 2002
Alocação em várias partições
 Processo é colocado em área
Video
livre grande suficiente para ele
 SO mantém info sobre partições
alocadas e “buracos”
OS
OS
OS
OS
process 5
process 5
process 5
process 5
process 9
process 9
process 8
process 2
Operating System Concepts
process 10
process 2
process 2
3.22
process 2
Silberschatz, Galvin and Gagne 2002
Como Fazer Alocação Dinâmica
 First-Fit: a primeira área livre
grande o suficiente é alocada
 Best-Fit: A área que gera a
menor sobra é escolhida
Video
É necessário varrer toda a lista de “buracos”
 Worst-Fit: A maior área é escolhida
Gera a maior sobra
Operating System Concepts
3.23
Silberschatz, Galvin and Gagne 2002
Fragmentação
 Externa: existe memória para
satisfazer um pedido, mas esta
não é contígua
 Interna: existe uma sobra em cada
partição de memória alocada
Operating System Concepts
3.24
Video
Silberschatz, Galvin and Gagne 2002
Eliminando a Fragmentação
Externa
 Compactação
Video
Mover as partições de forma a
juntar os “buracos”
Só é possível se a relocação é dinâmica, e
pode ser feita em tempo de execução
Operating System Concepts
3.25
Silberschatz, Galvin and Gagne 2002
Problemas com E/S
 Se um bloco de memória está
sendo usado como “buffer”
para E/S, ele não pode ser
retirado da memória
 Solução
Video
Manter o bloco em memória (latch)
Só fazer E/S para buffers no espaço de
memória do SO
Operating System Concepts
3.26
Silberschatz, Galvin and Gagne 2002
Paginação
 O espaço de endereçamento
lógico de um processo pode
não ser contíguo
Video
Memória física é alocada quando necessário
 Memória é dividida em partes do mesmo
tamanho chamadas quadros (frames)
 Memória lógica é dividida em páginas do
mesmo tamanho
Operating System Concepts
3.27
Silberschatz, Galvin and Gagne 2002
Paginação
 Para rodar um programa com
n páginas, n quadros livres são
usados
 Uma tabela faz a tradução dos endereços
lógicos para físicos
 Paginação gera fragmentação interna
Operating System Concepts
3.28
Video
Silberschatz, Galvin and Gagne 2002
Esquema de Tradução de
Endereços
 Os endereços gerados pela
CPU são divididos em
Video
Página (p)
Usado como índice na tabela de páginas
que contém o endereço inicial de cada
página na memória física
Offset (d)
Combinado com o endereço inicial define
o endereço físico
Operating System Concepts
3.29
Silberschatz, Galvin and Gagne 2002
Arquitetura de tradução de
Endereços
Video
Operating System Concepts
3.30
Silberschatz, Galvin and Gagne 2002
Exemplo de Paginação
Video
Operating System Concepts
3.31
Silberschatz, Galvin and Gagne 2002
Exemplo de Paginação
Video
Operating System Concepts
3.32
Silberschatz, Galvin and Gagne 2002
Quadros Livres
Video
Antes da Alocação
Operating System Concepts
Depois da Alocação
3.33
Silberschatz, Galvin and Gagne 2002
Implementação de uma Tabela
de Páginas
 Tabela de páginas mantida na
Video
memória principal
 Registrador de base da tabela de páginas
(PTBR) aponta para a tabela de páginas
 Registrador de tamanho da tabela de
páginas (PTLR) indica o tamanho
 Cada acesso a dados/instruções requer
dois acessos à memória
Operating System Concepts
3.34
Silberschatz, Galvin and Gagne 2002
TLB
 O problema pode ser resolvido
usando um cache de hardware
chamado memória associativa
ou translation lookaside buffer(TLB)
Operating System Concepts
3.35
Video
Silberschatz, Galvin and Gagne 2002
Memória Associativa
 Permite busca paralela
Video
Page #
Frame #
 Para traduzir um endereço lógico
 Se ele está na tabela, o endereço físico é obtido
imediatamente
 Se não, a tabela de páginas é lida da memória
Operating System Concepts
3.36
Silberschatz, Galvin and Gagne 2002
Hardware de Paginação com
TLB
Video
Operating System Concepts
3.37
Silberschatz, Galvin and Gagne 2002
Tempo Efetivo de Acesso
 Busca Associativa =  unidades
de tempo
Video
 Assuma ciclo de memória dura
1 microsegundo
 Hit ratio – porcentagem em que a página
é encontrada nos registradores
associativos
 Hit ratio = 
 Tempo Efetivo de Acesso (EAT)
EAT = (1 + )  + (2 + )(1 – )
=2+–
Operating System Concepts
3.38
Silberschatz, Galvin and Gagne 2002
Proteção de Memoria
 Proteção de memória usa um bit
de proteção para cada quadro
 O bitVálido-inválido indica
Video
“válido” a página está no espaço de
endereçamento lógico do processo
 A página é “legal”
“inválido” a página não pertence ao espaço
de endereçamento lógico
Ela não pode ser acessada
Operating System Concepts
3.39
Silberschatz, Galvin and Gagne 2002
Bit Válido (v) ou Inválido (i) na
Tabela de Páginas
Video
Operating System Concepts
3.40
Silberschatz, Galvin and Gagne 2002
Estrutura da Tabela de Páginas
 Paginação Hierárquica
 Tabela de Páginas
Video
“Hashed”
 Tabela de Páginas
Invertida
Operating System Concepts
3.41
Silberschatz, Galvin and Gagne 2002
Tabela de Páginas Hierárquica
 O espaço de endereçamento
Video
lógico é dividido em várias
tabelas de páginas
 A técnica mais simples é uma tabela
em dois níveis
Operating System Concepts
3.42
Silberschatz, Galvin and Gagne 2002
Exemplo de Paginação em Dois
Níveis
 Um endereço lógico (numa
máquina de 32 bits com
páginas de 4K) é dividido em
Video
Um número de página de 20 bits
Um offset de 12 bits
 Como a tabela também é paginada, o
número de página também é dividido em
Um número de página de 10 bits
Um offset de 10 bits
Operating System Concepts
3.43
Silberschatz, Galvin and Gagne 2002
Exemplo de Paginação em Dois
Níveis
 O endereço lógico é dado por
page number
pi
10
Video
page offset
p2
d
10
12
Onde pi é um índice para a tabela de páginas
externa, e p2 é em que linha da tabela a página
está na tabela externa
Operating System Concepts
3.44
Silberschatz, Galvin and Gagne 2002
Esquema de Dois Níveis
Video
Operating System Concepts
3.45
Silberschatz, Galvin and Gagne 2002
Tradução de Endereços
 Tradução de endereços para dois
níveis de paginação com
endereços de 32 bits
Operating System Concepts
3.46
Video
Silberschatz, Galvin and Gagne 2002
Tabelas de Página usando Hash
 Comum em espaços de
endereçamento maiores
que 32 bits
 O número da página virtual é
distribuido na tabela de página
usando uma função de hash
Video
Ele contêm uma seqüência ou lista de
elementos que caem na mesma posição
Os números virtuais são comparados nesta
lista quando procura-se por uma página. Se
encontrada, o quadro físico pode ser
acessado
Operating System Concepts
3.47
Silberschatz, Galvin and Gagne 2002
Tabela de Página usando Hash
Video
Operating System Concepts
3.48
Silberschatz, Galvin and Gagne 2002
Tabela de Página Invertida
 Uma entrada para cada
página real (bloco) de
memória
 Cada entrada contém o
endereço virtual da página
armazenada naquele bloco da
memória, com informações sobre o
processo do qual essa página faz
parte
Operating System Concepts
3.49
Video
Silberschatz, Galvin and Gagne 2002
Tabela de Página Invertida
 Diminui a quantidade de
memória necessária para
Video
armazenar cada tabela de
páginas, mas aumenta o tempo
de pesquisa na tabela em cada referência
a uma página
 Uso de tabela hash para limitar a
pesquisa a apenas uma — ou no máximo
a algumas — entradas na tabela de
páginas
Operating System Concepts
3.50
Silberschatz, Galvin and Gagne 2002
Arquitetura de Tabela de Página
Invertida
Video
Operating System Concepts
3.51
Silberschatz, Galvin and Gagne 2002
Páginas Compartilhadas
 Compartilhamento de Código
Uma cópia de código somente
Video
para leitura (reentrante)
compartilhada entre processos
(ex.: editores de texto,compiladores,
sistemas de janelas)
Código compartilhado deve aparecer na
mesma localização no espaço de
endereçamento lógico de todos
processos
Operating System Concepts
3.52
Silberschatz, Galvin and Gagne 2002
Páginas Compartilhadas
 Códigos e Dados privados
Video
Cada processo mantém uma
cópia separada de códigos e
dados
As páginas para códigos e dados
privados podem aparecer em qualquer
endereço no espaço de endereçamento
lógico
Operating System Concepts
3.53
Silberschatz, Galvin and Gagne 2002
Exemplo de Páginas Compartilhadas
Video
Operating System Concepts
3.54
Silberschatz, Galvin and Gagne 2002
Segmentação
 Esquemas de
gerenciamento de
memória que
suportam a visão do
usuário da memória
 Um programa é uma
coleção de
segmentos. Um
segmento é uma
unidade lógica, como
por exemplo:
Operating System Concepts
Video
programa principal,
procedimento,
função,
variáveis locais, variáveis
globais,
bloco comum,
pilha,
tabela de símbolos,
vetores
3.55
Silberschatz, Galvin and Gagne 2002
Um Programa na Visão do
Usuário
Video
Operating System Concepts
3.56
Silberschatz, Galvin and Gagne 2002
Visão Lógica da Segmentação
1
4
1
Video
2
3
2
4
3
user space
Operating System Concepts
physical memory space
3.57
Silberschatz, Galvin and Gagne 2002
Arquitetura da Segmentação
 Endereço lógico consiste de
duas partes:
Video
<número do segmento, posição
nesse segmento>
 Tabela de Segmentos– mapeia endereços
físicos bi-dimensionais
 Cada entrada na tabela possui:
base – contem o endereço físico inicial no
qual o segmento reside na memória
limite – especifica o tamanho do segmento
Operating System Concepts
3.58
Silberschatz, Galvin and Gagne 2002
Arquitetura da Segmentação
(Cont.)
 registrador base da tabela de
segmentos (STBR) aponto
Video
para a localização da tabela de
segmentos na memória.
 registrador de tamanho da tabela de
segmentos (STLR) indica o número de
segmentos usados por um programa;
número de segmento s é legal se s < STLR.
Operating System Concepts
3.59
Silberschatz, Galvin and Gagne 2002
Arquitetura da Segmentação
(Cont.)
 Relocação.
Video
Dinâmica
Por tabela de segmento
 Compartilhamento.
Segmentos compartilhados
Mesmo número de segmento
 Alocação.
Primeira (first fit)/ Melhor (best fit)
Fragmentação Externa
Operating System Concepts
3.60
Silberschatz, Galvin and Gagne 2002
Arquitetura da Segmentação
(Cont.)
 Proteção. Com cada entrada na
tabela de segmento é associado:
 Bit de validação = 0 Þ segmento ilegal
 Privilégios de leitura/ escrita/ execução
Video
 Bits de proteção associados com segmentos;
compartilhamento de código ocorre em nível de
segmento
 Uma vez que segmentos variam em tamanho,
alocação dememória é um problema dinâmico
 Um exemplo de segmentação é apresentado no
diagrama a seguir
Operating System Concepts
3.61
Silberschatz, Galvin and Gagne 2002
Hardware de Segmentação
Video
Operating System Concepts
3.62
Silberschatz, Galvin and Gagne 2002
Examplo
Video
Operating System Concepts
3.63
Silberschatz, Galvin and Gagne 2002
Compartihamento de
Segmentos
Video
Operating System Concepts
3.64
Silberschatz, Galvin and Gagne 2002
Segmentação com Paginação –
MULTICS
 O sistema MULTICS resolveu
Video
problemas de fragmentação
externa e demora na procura
paginando os segmentos
 A solução é diferente da segmentação
pura pois cada entrada na tabela de
segmentos contém não o endereço base
do segmento, mas sim o endereço base da
tabela de páginas desse segmento.
Operating System Concepts
3.65
Silberschatz, Galvin and Gagne 2002
Esquema de Tradução de Endereços
do MULTICS
Video
Operating System Concepts
3.66
Silberschatz, Galvin and Gagne 2002
Segmentação com Paginação –
Intel 386
 Como será apresentado no
próximo diagrama, o Intel 386
usa segmentação com
paginação para gerenciamento
de memória com um esquema
de paginação em dois níveis
Operating System Concepts
3.67
Video
Silberschatz, Galvin and Gagne 2002
Tradução de Endereços no
Intel 386
Video
Operating System Concepts
3.68
Silberschatz, Galvin and Gagne 2002
Download