Anda di halaman 1dari 21

Sistemas Operacionais

Gerência de Memória

Profa. Fabrícia Damando


fabriciadamando@gmail.com

1
Introdução
• Historicamente: a memória é um recurso
escasso e caro

• Meta - desenvolver SO que ocupassem pouco


espaço de memória e otimizassem a utilização
dos recursos computacionais

• O gerenciamento de memória é um dos fatores


mais importantes no projeto de Sistemas
Operacionais.
2
Preocupações
• Colocamos apenas um único processo na memória principal ou
incluímos vários processos ao mesmo tempo (ou seja,
implementamos a multiprogramação)?

• Se a memória principal contiver diversos processos


simultaneamente, damos a cada um a mesma quantidade de
espaço ou dividimos a memória principal em porções de tamanhos
diferentes?

• Definimos partições rigidamente por períodos estendidos ou


dinamicamente, permitindo que o sistema se adapte rapidamente
às mudanças das necessidades dos processos?

• Exigimos que processos executem em uma partição específica ou


em qualquer lugar onde couberem?

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.

• Gerencia de memória - controla quais partes estão em uso ou não


e tratar o swapping

• Swapping: processo de troca de dados entre a memória principal e


o disco

• Manter o maior número de processos na memória

• Maximizar o compartilhamento da CPU e demais recursos

• Execução de programas maiores que memória disponível

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

• Proteção: registrador para delimitar


a área do Sistema Operacional. Á re a p a ra
p ro g ra m a

• Verifica se o endereço está dentro


dos limites
– Caso não esteja:
– O programa é cancelado
– Gera msg de erro de violação
Os programas estão
da memória principal
limitados ao tamanho da
área disponível para o
usuário 5
Técnicas de overlay
• Programas limitados ao tamanho da memória

• Overlay - Dividir o programa em módulos, de


forma que seja possível a execução
independente de cada módulo, utilizando a
mesma área de memória

• Programador define as áreas de overlay

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

– principal (3KB) – deve M ó d u lo p r in c ip a l


3 Kb
permanecer na memória 4 Kb

pois é comum aos dois


abaixo 4 Kb Á r e a d e o v e r la y Im p r e s s ã o

– 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

– necessitam que diversos programas estejam


na memória principal ao mesmo tempo

– novas formas de gerência de memória sejam


implementadas.

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

pedaços de tamanho fixo: 1 2 Kb


P a r t iç ã o 2 5 Kb
2 5 Kb
partição 3 8 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.

– Para alterar teria que


inicializar o sistema com a
nova partiçã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

• Código Absoluto: todas C A P a r t iç ã o 1 2 Kb

as referências a endereços são 1 Kb 2 Kb


posições físicas na memória E B P a r t iç ã o 2 5 Kb
– o programa só carregava a partir 3 Kb 4 Kb
do endereço especificado no
código
– Se A e B estivessem em D P a r t iç ã o 3 8 Kb
execução e a terceira partição
estivesse livre, os programas C e 6 Kb
E não poderiam processar

• Alocação Particionada Estática


Absoluta

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

• Tabela de Alocação de P a r t iç ã o Ta m a n h o Liv r e S is t e m a O p e r a c io n a l

Partições: 1

2
2 Kb

5 Kb
N ão

S im
1 Pro g ra m a C

– endereço inicial de cada 3 8 Kb N ão


2 Á r e a liv r e

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

carregado para a memória –


tabela – localizar uma partição E n d e r e ç o fin a l

livre, onde o programa possa


ser carregado

baseia-se em dois registradores, que 12


indicam os limites inferior e superior da partição
Alocação particionada
Dinâmica
• Este esquema considera que o tamanho das partições de
memória não são fixos
• Nesse esquema, o programa utilizaria o espaço
necessário, tornando essa área sua partição
• Não ocorre o problema da fragmentação interna
M e m ó r ia P r in c ip a l 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 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

– deixando espaços Pro g ra m a C

cada vez menores na D


3 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

– 1ª) conforme os programas Pro g ra m a C 8 Kb

terminam – reúne espaços 3 Kb

livres adjacentes, Pro g ra m a A Pro g ra m a A

produzindo áreas livres de 5 Kb 5 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

espaços entre elas e Pro g ra m a C


R e lo c a ç ã o
criando uma única área 3 Kb

livre contígua Pro g ra m a A 12 Kb

– relocação dinâmica – 5 Kb

pode ser inviável


15
Estratégias de alocação de
partição
• Gerência de memória – vários programas
na memória ao mesmo tempo
• Área livre para execução de um programa
• O sistema deve possuir formas de saber
quais áreas estão livres e quais não estão.
• Existem duas estratégias principais:
– Mapa de Bits
– Lista Encadeada
16
Estratégias de alocação de
partição
• Mapa de bits
– esta estratégia divide a memória em pequenas unidades de
alocação.
– “0” memória está livre
– “1” que está ocupada.
– Processo que ocupa k unidades de alocação - o Gerente de
Memória deve, então, procurar por k bits “0” consecutivos no
mapa.
– Lenta
– Raramente são usados - ainda que eles sejam muito simples
de serem implementados.

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

inclusive nos momentos em que B


esperava por um evento, como uma
operação de E/S. M e m ó r ia P r in c ip a l

• 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

– Swap out - o sistema escolhe um Pro g ra m a H


processo residente, que é transferido da Pro g ra m a E
memória principal para a memória B
S w a p in
Á r e a L iv r e
secundária - disco.
– Swap in - o processo é carregado de A r q u iv o
volta da memória secundária para a de Sw ap
memória principal e pode continuar sua
execução como se nada tivesse ocorrido 19
Swapping
• O algoritmo de escolha do processo a ser retirado da memória principal deve priorizar
aquele com menores chances de ser executado.

• Para que essa técnica seja utilizada, é essencial que o sistema ofereça um loader que
implemente a relocação dinâmica

• O programa é carregado na memória - o registrador recebe o endereço inicial da


posição de memória que o programa irá ocupar.

• 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.

• Dessa forma - um programa pode ser carregado em qualquer posição de memória

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

Anda mungkin juga menyukai