Gerência de Memória
1
Introdução
• Historicamente: a memória é um recurso
escasso e caro
3
Funções básicas
• SO executa programas – para serem executados devem estar na
memória principal. Mas usa-se o disco para apoio a memória.
4
Alocação contígua
• Sistemas monoprogramáveis
Utilizado nos
primeiros SO
• Memória principal é dividida em:
M e m ó r ia P r in c ip a l
– Para o SO
R e g is tr a d o r
– Para o usuário S is t e m a
O p e r a c io n a l
6
Técnicas de overlay
• EX - Programa com três M e m ó r ia P r in c ip a l
módulos: 2 Kb S is t e m a O p e r a c io n a l
C a d a s tr a m e n to
– cadastramento (4KB) 2 Kb
1 Kb Á r e a l iv r e
– impressão (2KB) Á re a n ã o 2 Kb
u tiliz a d a
• Necessário 9K
• Usa-se overlay Sempre que um dos dois módulos for
referenciado pelo módulo principal, o
módulo será carregado da memória secundária
para a área de overlay.
7
Alocação particionada
• Sistemas Multiprogramáveis
– são mais eficientes no uso do processador
8
Alocação particionada
Estática
• Usada nos primeiros
Sistemas Operacionais M e m ó r ia P r in c ip a l
multiprogramáveis Ta b e la d e p a r t iç õ e s S is t e m a O p e r a c io n a l
– memória dividida em P a r t iç ã o Ta m a n h o P a r t iç ã o 1 2 Kb
P r o g r a m a s a s e r e m e xe c u ta d o s :
– Tamanho das partições P a r t iç ã o 3 8 Kb
E D C B A
estabelecido na 3 Kb 6 Kb 1 Kb 4 Kb 2 Kb
inicialização.
9
Alocação particionada
Estática absoluta
• Programas só podiam ser
carregados em uma partição
específica. M e m ó r ia P r in c ip a l
S is t e m a O p e r a c io n a l
10
• Evolução dos compiladores.
M e m ó r ia P r in c ip a l
• Código Realocável: todas as
S is t e m a O p e r a c io n a l
referências a endereços são
relativas ao início do código Pro g ra m a C 2 Kb
– Programas podem ser executados
a partir de qualquer partição
– Quando o programa é carregado D E Pro g ra m a A 5 Kb
o loader calcula todos os
6 Kb 3 Kb
endereços a partir da posição
inicial onde o programa foi
alocado
Pro g ra m a B 8 Kb
• Alocação Particionada
Estática Relocável: programas
podem ser executados em
qualquer partição
11
M e m ó r ia P r in c ip a l
Partições: 1
2
2 Kb
5 Kb
N ão
S im
1 Pro g ra m a C
partição
– seu tamanho 3 Pro g ra m a B
– se está em uso
M e m ó r ia P r in c ip a l
• Quando um programa é S is t e m a O p e r a c io n a l E n d e r e ç o in ic ia l
S is t e m a O p e r a c io n a l S is t e m a O p e r a c io n a l
Pro g ra m a B 4 Kb
Pro g ra m a C 1 Kb
Pro g ra m a E 3 Kb
A E C B 15 Kb
2 Kb 3 Kb 1 Kb 4 Kb Pro g ra m a A 2 Kb
5 Kb
13
Alocação particionada
Dinâmica
• Fragmentação M e m ó r ia P r in c ip a l
externa: S is t e m a O p e r a c io n a l
– quando os programas
forem terminando 4 Kb
memória 6 Kb Pro g ra m a A
– não permitindo o
5 Kb
ingresso de novos
programas
12 Kb livres
D- precisa de 6Kb
Não há este espaço disposto continuamente
14
Alocação particionada
Dinâmica
M e m ó r ia P r in c ip a l M e m ó r ia P r in c ip a l
• Solução para S is t e m a O p e r a c io n a l S is t e m a O p e r a c io n a l
Fragmentação Externa 4 Kb
tamanho maior
– 2ª) relocação de todas as M e m ó r ia P r in c ip a l M e m ó r ia P r in c ip a l
partições ocupadas, S is t e m a O p e r a c io n a l S is t e m a O p e r a c io n a l
eliminando todos os 4 Kb
Pro g ra m a C
Pro g ra m a A
– relocação dinâmica – 5 Kb
17
Estratégias de alocação de
partição
• Listas ligadas
– utiliza uma lista ligada para controlar a alocação/liberação de
memória
– tal lista contém os segmentos livres e ocupados da memória
18
Swapping
• Swapping
– contorna o problema da insuficiência de M e m ó r ia P r in c ip a l
memória principal.
– um programa não podia ser S is t e m a
O p e r a c io n a l
executado por falta de uma partição
livre disponível Pro g ra m a A
• Antes H Pro g ra m a B
Sw ap out
Pro g ra m a E
– um processo permanecia na memória
principal até o final da sua execução, Pro g ra m a G
• Com swapping S is t e m a
O p e r a c io n a l
– para programas que esperam por
memória livre para serem executados Pro g ra m a A
• Para que essa técnica seja utilizada, é essencial que o sistema ofereça um loader que
implemente a relocação dinâmica
• Ocorre uma referência a algum endereço, o endereço contido na instrução será somado
ao conteúdo do registrador, gerando, assim, o endereço físico.
R e g is tr a d o r d e R e lo c a ç ã o In s tru ç ã o
E n d e r e ç o in c ia l C ó d ig o d e
En d e re ço
d a p a r tiç ã o o p e ra çã o
20
En d e re ço d e
m e m ó r ia
Atividades
• Pesquisar:
– Fragmentação externa na alocação
particionada estática
• Exercícios da apostila – a definir
21