Infra-Estrutura de SoftwareInfra-Estrutura de Software
Gerenciamento de MemóriaGerenciamento de Memória
O que ocorre para que um O que ocorre para que um programa seja executado?programa seja executado? Compilação Carregamento na memória Execução
Execução de um programaExecução de um programa
Ambiente monoprocessoAmbiente monoprocesso Programa executa numa posição conhecida de
memória
Execução de um programaExecução de um programa
Ambiente monoprocessoAmbiente monoprocesso Programa executa numa posição conhecida de
memória Compilador conhece o endereço inicial onde o
programa será executado (geração de código absoluto) Requer recompilação se endereço de execução mudar
AJMP testeCALL func
...func ADD r1, r2, r3
RET...teste SUB r1, r2, r3
0800 AJMP 09500803 CALL 0900...0900 ADD r1, r2, r30902 RET ...0950 SUB r1, r2, r3
Execução de um programaExecução de um programa
Ambiente multiprocesso => Ambiente multiprocesso => RelocaçãoRelocação Programa executa numa posição desconhecida em
tempo de compilação Compilador gera código relocável, ou Há suporte de hardware para relocação (registradores
de base)
Endereço virtual
Endereço inicial
Endereço físico
+
MultiprocessamentoMultiprocessamento
Partições fixas e variáveisPartições fixas e variáveis
P1P2P3
P4
P1
P2
P3
P4
P1
FragmentaçãoFragmentaçãoInternaInterna ExternaExterna
Partições FixasPartições Fixas Partições VariáveisPartições Variáveis
Necessita compactaçãoNecessita compactação(com relocação)(com relocação)
Multiproc. com partições variáveisMultiproc. com partições variáveis Alocação de espaço extraAlocação de espaço extra
a) Alocando espaço para dadosb) Alocando espaço para pilha e dados
Memória VirtualMemória Virtual
Como o programador vê o sistema• CPU e memória individuais• Memória grande e rápida
Como funciona realmente• CPU e memória compartilhada• Hierarquia de memória para compensar o
preço
Memória VirtualMemória Virtual
CPU End.
Dados
n
Memória disponível
Espaço de endereçamento da CPU
2n
Hierarquia de MemóriaHierarquia de Memória
cache (L1)
CPURegistradores
memória principal
memória secundária
Quantidade disponível
chip
cache (L2)
Velocidadee custo/bit
Reg.
Cache
Principal
Cache de Disco
Disco Magnético
Fita CD-ROM
Princípio da LocalidadePrincípio da Localidade
Há uma grande probabilidade do programa referenciar novamente as instruções e dados recentemente referenciados ou que tenham endereços próximos das últimas referências.
Memória VirtualMemória VirtualUnidade de Gerenciamento de MemóriaUnidade de Gerenciamento de Memória
achamem.
Hierarquia de MemóriaHierarquia de Memória
Rp Dp
memóriaprincipal
ValorValortab. páginas(Mem.Princ.)
Vp Dp
TLBachaTLB
faltaTLB &achatab.pag.
DiscoDisco
faltafaltaTLBTLB &&faltafaltatab.pag.tab.pag.
faltafaltamem..mem..
Rp
Memória VirtualMemória Virtual
PaginaçãoPaginação
Páginas virtuais efísicas: Tradução com
tabela de páginas
PaginaçãoPaginação
Exemplo deExemplo detraduçãotradução
MMU com tabela para 16 páginas de 4KB
PaginaçãoPaginação
Exemplo de traduçãoExemplo de tradução
Ocupada
Ocupada
Ocupada
…131415161718192021
13, 15, 16
Tabela ConversãoPág. p/ Proc. A
DiscoDisco
Proc. AProc. Apág.0pág.1pág.2pág.3
13151615
Pág.V.0
Pág.V.1Pág.V.2Pág.V.3
Pág. Livres
15, 16 16 15
MemóriaMemóriaPrincipalPrincipal
OcupadaOcupada
Ocupada
PaginaçãoPaginaçãoO que fazer quando há falta de página?O que fazer quando há falta de página?
Escolha da página a ser retirada da memória (se não houver espaço livre)
Página a ser retirada deve ser salva no disco se tiver sido modificada
Tamanho da páginaTamanho da página
Páginas pequenas Vantagens
• Efeito menor da fragmentação interna• Se adapta melhor a diversas estruturas de
dados e blocos de código Menos memória desperdiçadaMenos memória desperdiçada
Desvantagem• Tabelas de páginas maiores
Tamanho da páginaTamanho da página
Overhead da memória devido à fragmentação interna e tabelas de página
Onde• s = tam. médio de um processo• p = tam. da página• e = tam. da entrada na tabela
2s e poverheadp
Espaço das tab. de páginas
fragmentação
interna
otimizado quando2p se
Espaços separados para dados e Espaços separados para dados e instruçõesinstruções
a) Espaço único b) Espaços separados
Páginas compartilhadasPáginas compartilhadas
Dois processos compartilhando o mesmo código e tabela de páginas
A
B
SegmentaçãoSegmentação
Antes da segmentação:
Tabelas com alocação dinâmica
Tabelas podem “colidir”
SegmentaçãoSegmentaçãoSegmentos DinâmicosSegmentos Dinâmicos
Segmentação x PaginaçãoSegmentação x PaginaçãoQuestão Paginação Segmentação
Programador interage com a técnica? Não Sim
Espaços de end. lineares usados? 1 Vários
Espaço de end. pode ser maior que a memória física? Sim Sim
Tabelas podem mudar tamanho? Não Sim
Procedimentos e dados são distintos e protegidos separadamente? Não Sim
É fácil compartilhar procedimentos?Não Sim
Porque é usado? Para dispor de mais MP do que realmente temos
Programas e dados usam espaços de end. distintos. Facilita compartilhamento e proteção