Вы находитесь на странице: 1из 33

Gerenciamento de Memória

Prof. Dr. José Luís Zem


Prof. Dr. Renato Kraide Soffner
Prof. Ms. Rossano Pablo Pinto

Faculdade de Tecnologia de Americana


Centro Paula Souza
Tópicos

 Introdução

 Alocação Contígua Simples

 Alocação Particionada
 Alocação Particionada Estática
 Alocação Particionada Dinâmica
 Estratégias para a Escolha da Partição

 Swapping
Introdução

 Na memória principal residem todos os programas e dados que


serão executados ou referenciados pelo processador.

 Toda vez que deseja-se executar um programa residente na


memória secundária, deve-se, de alguma forma, carregá-lo para a
memória principal.

 Organização e gerência de memória principal têm sido fatores


importantes no projeto de sistemas operacionais.
Introdução

 Historicamente, a memória principal sempre foi vista como um


recurso escasso e caro.

 Uma das maiores preocupações dos projetistas era desenvolver


sistemas operacionais que não ocupassem muita memória e, ao
mesmo tempo, otimizassem a sua utilização.

 Enquanto nos sistemas monoprogramáveis a gerência de memória


não é muito complexa, nos sistemas multiprogramáveis ela se
torna crítica.
Alocação Contígua Simples

 A alocação contígua simples foi implementada nos primeiros


sistemas operacionais desenvolvidos, porém, ainda está presente
em alguns sistemas monoprogramáveis.

 Nesse tipo de organização, a memória principal é dividida em duas


partes:
 uma para o sistema operacional; M e m ó r ia P r in c ip a l
 outra para o programa do usuário.
S is te m a
O p e r a c io n a l

Á re a p a ra
p ro g ra m a
Alocação Contígua Simples

 O usuário tem controle sobre toda a memória principal, podendo


ter acesso a qualquer posição de memória, inclusive alterar e
destruir o sistema operacional.

 Para protegê-lo desses ataques, conscientes ou não, alguns


sistemas operacionais implementam proteção através de um
registrador, que delimita as áreas do sistema operacional e do
usuário.
M e m ó r ia P r in c ip a l
R e g i s tr a d o r
S is te m a
O p e r a c io n a l

Á re a p a ra
p ro g ra m a
Alocação Contígua Simples

 Apesar de sua simplicidade de implementação e código reduzido, a


alocação contígua simples não permite a utilização eficiente do
processador e da memória pois apenas um usuário pode utilizar
este recurso.

 Em relação à memória, caso o programa não a preencha


totalmente, existirá um espaço de memória sem utilização.
M e m ó r ia P r in c ip a l
 Fragmentação.
S is te m a
O p e r a c io n a l

Pro g ra m a
d o u s u á r io

Á re a liv r e
Alocação Contígua Simples

 No princípio, os programas dos usuários estavam limitados ao


tamanho da memória principal disponível.

 A solução encontrada para o problema foi dividir o programa em


partes (módulos), de forma que pudessem executar
independentemente uma da outra, utilizando a mesma área da
memória.

 Esta técnica recebeu o nome de overlay.


Alocação Contígua Simples

M e m ó r ia P r in c ip a l

2 Kb S is te m a O p e r a c io n a l
C a d a s tr a m e n to

3 Kb M ó d u lo p r in c ip a l
4 Kb

4 Kb Á re a d e o v e rla y Im p re ssã o

2 Kb
1 Kb Á r e a liv r e

Á re a n ã o 2 Kb
u ti l i z a d a
Alocação Particionada

 Os sistemas monoprogramáveis permitem que o processador


permaneça ocioso e que a memória seja subutilizada, enquanto um
programa aguarda o término de uma operação de I/O, por
exemplo.

 A multiprogramação vem resolver este problema, pois enquanto


aguarda algum evento, outros processos podem ser executados
pela CPU nesse intervalo de tempo.

 Para a multiprogramação ser eficiente, é necessário que vários


programas estejam na memória ao mesmo tempo, daí a
necessidade de uma nova forma de organização da memória
principal.
Alocação Particionada Estática

 Nos primeiros sistemas multiprogramáveis, a memória foi dividida


em pedaços de tamanho fixo, chamados partições.

 O tamanho das partições eram estabelecidos na fase de


inicialização do sistema (boot), em função do tamanho dos
programas que seriam executados no ambiente.
Alocação Particionada Estática

M e m ó r ia P r in c ip a l

Ta b e la d e p a r tiç õ e s S is te m a O p e r a c io n a l

P a r tiç ã o Ta m a n h o P a r tiç ã o 1 2 Kb

1 2 Kb
P a r tiç ã o 2 5 Kb
2 5 Kb

3 8 Kb

P r o g r a m a s a s e r e m e x e c u ta d o s :
P a r tiç ã o 3 8 Kb
E D C B A

3 Kb 6 Kb 1 Kb 4 Kb 2 Kb
Alocação Particionada Estática

 No princípio, os programas só podiam ser executados em uma das


partições, mesmo que outras estivessem disponíveis.

 Essa limitação era devido aos compiladores utilizados na época,


que geravam códigos absolutos.

 Este tipo de alocação recebeu o nome de alocação particionada


estática absoluta.
Alocação Particionada Estática

M e m ó r ia P r in c ip a l

S is te m a O p e r a c io n a l

C A P a r tiç ã o 1 2 Kb
1 Kb 2 Kb

E B P a r tiç ã o 2 5 Kb

3 Kb 4 Kb

D P a r tiç ã o 3 8 Kb

6 Kb
Alocação Particionada Estática

 Com a evolução dos compiladores, linkers e loadres, a geração de


código relocável foi possível e os programas puderam ser
carregados em qualquer partição.

 A esse novo tipo de alocação deu-se o nome de alocação


particionada estática relocável.
M e m ó r ia P r in c ip a l

S is te m a O p e r a c io n a l

Pro g ra m a C 2 Kb

D E Pro g ra m a A 5 Kb

6 Kb 3 Kb

Pro g ra m a B 8 Kb
Alocação Particionada Estática

 Para manter o controle sobre quais as partições estavam alocadas


ou não, os sistemas possuíam uma tabela delimitando cada
partição, seu tamanho e se estava em uso ou não.

M e m ó r ia P r in c ip a l

P a r tiç ã o Ta m a n h o L iv r e S is te m a O p e r a c io n a l

1 2 Kb N ão 1 Pro g ra m a C

2 5 Kb S im
2 Á r e a liv r e
3 8 Kb N ão

3 Pro g ra m a B
Alocação Particionada Estática

 A proteção baseava-se em dois registradores, que indicavam os


limites inferiores e superiores da partição onde o processo seria
carregado.
M e m ó r ia P r in c ip a l

S is te m a O p e r a c io n a l E n d e r e ç o in ic ia l

E n d e r e ç o fin a l
Alocação Particionada Estática

 Tanto nos sistemas de alocação absoluta como nos sistemas com


alocação relocável, os processos não preenchiam totalmente as
partições onde eram alocadas. Desta forma, a fragmentação
também estava presente nestes esquemas.
M e m ó r ia P r in c ip a l

S is te m a O p e r a c io n a l

Pro g ra m a C
1 Kb
Pro g ra m a A
D B

6 Kb 4 Kb 3 Kb

Pro g ra m a E

5 Kb
Alocação Particionada Dinâmica

 Aumenta o grau de compartilhamento de memória.

 Diminui o grau de fragmentação.

 Neste esquema foi eliminado o conceito de partições com tamanho


fixo.

 Cada programa utiliza o espaço que necessitasse, desde que


existisse este espaço na memória,transformando-o em uma
partição.
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

S is te m a O p e r a c io n a l S is te 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
Alocação Particionada Dinâmica

 Neste esquema também ocorre a fragmentação e ela aparecerá na


medida em que os processos forem terminado e deixando espaços
cada vez memores na memória, não permitindo o carregamento de
outros processos.
M e m ó r ia P r in c ip a l

S is te m a O p e r a c io n a l

4 Kb

Pro g ra m a C

3 Kb
D

6 Kb Pro g ra m a A

5 Kb
Alocação Particionada Dinâmica

 Uma solução seria fazer com que os espaços adjacentes fossem


reunidos, produzindo um único espaço de tamanho maior.
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 te m a O p e r a c io n a l S is te m a O p e r a c io n a l

4 Kb

Pro g ra m a C 8 Kb

3 Kb

Pro g ra m a A Pro g ra m a A

5 Kb 5 Kb
Alocação Particionada Dinâmica

 A segunda maneira seria realizar uma relocação de todas as


partições ocupadas, eliminando todos os espaços entre elas e
criando-se uma única área livre contígua.
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 te m a O p e r a c io n a l S is te m a O p e r a c io n a l
Pro g ra m a C

4 Kb Pro g ra m a A

Pro gra m a C
R e lo ca çã o
3 Kb

Pro gra m a A 12 Kb

5 Kb
Estratégias para Escolha da
Partição
 Os sistemas operacionais implementam, basicamente, três
estratégias para determinar em qual partição livre um programa
será carregado para execução.

 Essas estratégias tentam evitar, ou diminuir, o problema da


fragmentação antes que ela ocorra.

 Independente do algoritmo utilizado, o sistema possui uma lista de


áreas livres ( free list ), com endereço de cada área livre e seu
respectivo tamanho.
Estratégias para Escolha da
Partição

M e m ó r ia P r in c ip a l

S is te m a O p e r a c io n a l

Á r e a s liv r e s Ta m a n h o
Á r e a liv r e 1 4 Kb
1 4 Kb

2 5 Kb Pro g ra m a C

3 3 Kb
Á r e a liv r e 2 5 Kb

Pro g ra m a A

Á r e a liv r e 3 3 Kb
Estratégias para Escolha da
Partição
 BEST FIT
 Esse mecanismo escolhe a melhor partição (best fit), ou seja,
aquela em que o processo deixa o menor espaço sem
utilização.

 WORST FIT
 Esse mecanismo escolhe a pior partição (worst fit), ou seja,
aquela em que o processo deixa o maior espaço sem utilização.

 FIRST FIT
 Esse mecanismo escolhe a primeira partição (first fit) livre, de
tamanho suficiente para carregar o processo.
Estratégias para Escolha da
Partição
S is te m a O p e r a c io n a l

M e m ó r ia P r in c ip a l
Pro g ra m a C
S is te m a O p e r a c io n a l
it
s t- f
4 Kb B e
)
(a
Pro g ra m a C Pro g ra m a A
Pro g ra m a F
F
5 Kb Á r e a liv r e 2 Kb
1 Kb

Pro g ra m a A

3 Kb
Estratégias para Escolha da
Partição

M e m ó r ia P r in c ip a l

S is te m a O p e r a c io n a l S is te m a O p e r a c io n a l

4 Kb

Pro g ra m a C Pro g ra m a C
( b ) W o r s t- f i t Pro g ra m a F
F
5 Kb Á r e a liv r e
1 Kb 4 Kb

Pro g ra m a A Pro gra m a A

3 Kb
Estratégias para Escolha da
Partição
M e m ó r ia P r in c ip a l

S is te m a O p e r a c io n a l

4 Kb

Pro g ra m a C

F S is te m a O p e r a c io n a l
5 Kb
1 Kb Pro g ra m a F

(c
)F
Á r e a liv r e 3 Kb

ir
Pro g ra m a A

st
-f
Pro g ra m a C

it
3 Kb

P ro g ra m a A
Swapping

 A técnica de swapping veio para tentar resolver o problema de


insuficiência de memória para todos os usuários.

 Nos esquemas apresentados até o momento, um processo


permanecia na memória principal até o final de sua execução,
inclusive quando realizava operações de entrada e saída.

 O swapping é uma técnica aplicada à gerência de memória, para


processos que esperam por memória livre para serem processados.

 O sistema escolhe um processo residente que é levado da memória


para o disco (swapped out), retornando posteriormente para a
memória principal (swapped in), como se nada tivesse ocorrido.
Swapping

M e m ó r ia P r in c ip a l

S is te m a
O p e r a c io n a l

Pro g ra m a A

H Pro g ra m a B
Sw ap out
Pro g ra m a E

Pro gra m a G

M e m ó r ia P r in c ip a l

S is te m a
O p e r a c io n a l

Pro g ra m a A

Pro gra m a H

Pro g ra m a E
S w a p in
B Á r e a L iv r e

A r q u iv o
de Sw ap
Swapping

 Um dos problemas gerados pelo swapping é a relocação dos


processos.

 O loader relocável permite que um processo seja colocado em


qualquer posição de memória, porém a relocação é realizada no
momento do carregamento.

 O conceito de swapping permitiu um maior compartilhamento de


memória e, consequentemente, um maior throughput.

 Mostrou-se eficiente em ambientes onde existiam poucos usuários


competindo pela memória e com aplicações pequenas.

 Seu maior problema é o custo das operações de entrada e saída.


Gerenciamento de Memória

Prof. Dr. José Luís Zem


Prof. Dr. Renato Kraide Soffner
Prof. Ms. Rossano Pablo Pinto

Faculdade de Tecnologia de Americana


Centro Paula Souza

Вам также может понравиться