infra-estrutura de software gerenciamento de memória

Post on 07-Apr-2016

217 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

top related