Você está na página 1de 33
Gerenciamento de Memória Prof. Dr. José Luís Zem Prof. Dr. Renato Kraide Soffner Prof. Ms.
Gerenciamento de Memória Prof. Dr. José Luís Zem Prof. Dr. Renato Kraide Soffner Prof. Ms.

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
Faculdade de Tecnologia de Americana
Centro Paula Souza

Tópicos

Tópicos  Introdução  Alocação Contígua Simples  Alocação Particionada  Alocação Particionada
Tópicos  Introdução  Alocação Contígua Simples  Alocação Particionada  Alocação Particionada

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

Introdução  Na memória principal residem todos os programas e dados que serão executados ou referenciados
Introdução  Na memória principal residem todos os programas e dados que serão executados ou referenciados

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

Introdução  Historicamente, a memória principal sempre foi vista como um recurso escasso e caro. 
Introdução  Historicamente, a memória principal sempre foi vista como um recurso escasso e caro. 

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

Alocação Contígua Simples  A alocação contígua simples foi implementada nos primeiros sistemas operacionais
Alocação Contígua Simples  A alocação contígua simples foi implementada nos primeiros sistemas operacionais

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;

outra para o programa do

usuário.

M em ó ria

Prin cip a l

Sistem a O pera cio n a l Á rea p a ra p ro
Sistem a
O pera cio n a l
Á
rea
p a ra
p
ro g ra m a

Alocação Contígua Simples

Alocação Contígua Simples  O usuário tem controle sobre toda a memória principal, podendo ter acesso
Alocação Contígua Simples  O usuário tem controle sobre toda a memória principal, podendo ter acesso

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 em ó ria

Prin cip a l

Sistem a O pera cio n a l Á rea p a ra p ro
Sistem a
O pera cio n a l
Á
rea
p a ra
p
ro g ra m a

Registra d o r

e do usuário. M em ó ria Prin cip a l Sistem a O pera cio

Alocação Contígua Simples

Alocação Contígua Simples  Apesar de sua simplicidade de implementação e código reduzido, a alocação contígua
Alocação Contígua Simples  Apesar de sua simplicidade de implementação e código reduzido, a alocação contígua

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.

Fragmentação.

M em ó ria

Prin cip a l

Sistem a O pera cio n a l Pro gra m a d o u
Sistem a
O pera cio n a l
Pro gra m a
d o
u su á rio
Á rea
livre

Alocação Contígua Simples

Alocação Contígua Simples  No princípio, os programas dos usuários estavam limitados ao tamanho da memória
Alocação Contígua Simples  No princípio, os programas dos usuários estavam limitados ao tamanho da memória

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

Alocação Contígua Simples 2 K b 3 K b 4 K b 1 K b M
Alocação Contígua Simples 2 K b 3 K b 4 K b 1 K b M

2 K b

3 K b

4 K b

1 K b

M em ó ria

Prin cip a l

Sistem a O p era cio n a l M ó du lo p rincip
Sistem a
O p era cio n a l
M ó du lo
p rincip a l
Á rea
d e
o ve rla y
Á rea
livre

C a d a stra m en to

l Á rea d e o ve rla y Á rea livre C a d a

Im pressã o

Á rea n ã o u tiliza da
Á rea
n
ã o
u tiliza da

4

2

2

K b

K b

K b

Alocação Particionada

Alocação Particionada  Os sistemas monoprogramáveis permitem que o processador permaneça ocioso e que a memória
Alocação Particionada  Os sistemas monoprogramáveis permitem que o processador permaneça ocioso e que a memória

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

Alocação Particionada Estática  Nos primeiros sistemas multiprogramáveis, a memória foi dividida em pedaços de
Alocação Particionada Estática  Nos primeiros sistemas multiprogramáveis, a memória foi dividida em pedaços de

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

Alocação Particionada Estática Ta b ela de pa rtiçõ es Pa rtiçã o Ta m a
Alocação Particionada Estática Ta b ela de pa rtiçõ es Pa rtiçã o Ta m a

Ta b ela

de

pa rtiçõ es

Pa rtiçã o

Ta m a nh o

 

1

 

2

 

K

b

 
 

2

 

5

K

 

b

 
 

3

 

8

K

 

b

 

Pro gra m a s a

serem executa do s:

E
E
D
D
C
C
B
B
A
A

3

K b

6

K b

1

K b

4

K b

2

K b

M em ó ria

Prin cipa l

Sistem a O p era cio n a l Pa rtiçã o 1 2 K
Sistem a
O p era cio n a l
Pa rtiçã o
1
2
K b
Pa rtiçã o
2
5
K b
Pa rtiçã o
3
8
K b

Alocação Particionada Estática

Alocação Particionada Estática  No princípio, os programas só podiam ser executados em uma das partições,
Alocação Particionada Estática  No princípio, os programas só podiam ser executados em uma das partições,

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

Alocação Particionada Estática M em ó ria Prin cip a l Sistem a O p era
Alocação Particionada Estática M em ó ria Prin cip a l Sistem a O p era

M em ó ria

Prin cip a l

Sistem a O p era cio n a l C A Pa rtiçã o 1
Sistem a
O p era cio n a l
C
A
Pa rtiçã o
1
2
K b
1
K b
2
K b
Pa rtiçã o
2
5
K b
E
B
3
K b
4
K b
D
Pa rtiçã o
3
8
K b
6
K b

Alocação Particionada Estática

Alocação Particionada Estática  Com a evolução dos compiladores, linkers e loadres, a geração de código
Alocação Particionada Estática  Com a evolução dos compiladores, linkers e loadres, a geração de código

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

particionada estática relocável.

D E 6 K b 3 K b
D
E
6
K b
3
K b

M em ó ria

Prin cip a l

Sistem a O p era cio n a l Pro gra m a C 2
Sistem a
O p era cio n a l
Pro gra m a
C
2
K b
Pro gra m a
A
5
K b
Pro gra m a
B
8
K b

nome

de

alocação

Alocação Particionada Estática

Alocação Particionada Estática  Para manter o controle sobre quais as partições estavam alocadas ou não,
Alocação Particionada Estática  Para manter o controle sobre quais as partições estavam alocadas ou não,

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.

Pa rtiçã o

Ta m a nh o

Livre

 

1 2

K

b

N

ã o

 
 

2 5

K

b

S

im

 
 

3 8

K

b

N

ã o

1

2

3

M em ó ria

Prin cipa l

Sistem a O p era cio n a l Pro gra m a C Á
Sistem a
O p era cio n a l
Pro gra m a
C
Á rea
livre
Pro gra m a
B

Alocação Particionada Estática

Alocação Particionada Estática  A proteção baseava-se em dois registradores, que indicavam os limites inferiores
Alocação Particionada Estática  A proteção baseava-se em dois registradores, que indicavam os limites inferiores

A proteção baseava-se em dois registradores, que indicavam os limites inferiores e superiores da partição onde o processo seria carregado.

M em ó ria

Prin cip a l

Sistem a O p era cio n a l En dereço in icia l En
Sistem a
O p era cio n a l
En dereço
in icia l
En dereço
fin a l

Alocação Particionada Estática

Alocação Particionada Estática  Tanto nos sistemas de alocação absoluta como nos sistemas com alocação
Alocação Particionada Estática  Tanto nos sistemas de alocação absoluta como nos sistemas com alocação

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.

D B 6 K b 4 K b
D
B
6 K b
4
K b

M em ó ria

Prin cip a l

Sistem a O p era cio n a l Pro gra m a C 1
Sistem a
O p era cio n a l
Pro gra m a
C
1
K b
Pro gra m a
A
3
K b
Pro g ra m a
E
5
K b

Alocação Particionada Dinâmica

Alocação Particionada Dinâmica  Aumenta o grau de compartilhamento de memória.  Diminui o grau de
Alocação Particionada Dinâmica  Aumenta o grau de compartilhamento de memória.  Diminui o grau de

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

Alocação Particionada Dinâmica A E C B 2 K b 3 K b 1 K b
Alocação Particionada Dinâmica A E C B 2 K b 3 K b 1 K b
A
A
E
E
C
C
B
B

2

K b

3

K b

1

K b

4

K b

Particionada Dinâmica A E C B 2 K b 3 K b 1 K b 4

M em ó ria

Prin cipa l

Sistem a O p era cio n a l
Sistem a
O p era cio n a l

15 K b

b M em ó ria Prin cipa l Sistem a O p era cio n a

M em ó ria

Prin cipa l

Sistem a O p era cio n a l Pro gra m a B 4
Sistem a
O p era cio n a l
Pro gra m a
B
4
K b
Pro gra m a
C
1
K b
Pro gra m a
E
3
K b
Pro gra m a
A
2
K b
5
K b

Alocação Particionada Dinâmica

Alocação Particionada Dinâmica  Neste esquema também ocorre a fragmentação e ela aparecerá na medida em
Alocação Particionada Dinâmica  Neste esquema também ocorre a fragmentação e ela aparecerá na medida em

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.

D
D

6 K b

M em ó ria

Prin cip a l

Sistem a O p era cio n a l 4 K b Pro gra m
Sistem a
O p era cio n a l
4
K b
Pro gra m a
C
3
K b
Pro gra m a
A
5
K b

Alocação Particionada Dinâmica

Alocação Particionada Dinâmica  Uma solução seria fazer com que os espaços adjacentes fossem reunidos,
Alocação Particionada Dinâmica  Uma solução seria fazer com que os espaços adjacentes fossem reunidos,

Uma solução seria fazer com que os espaços adjacentes fossem reunidos, produzindo um único espaço de tamanho maior.

M em ó ria

Prin cipa l

Sistem a O p era cio n a l 4 K b Pro gra m
Sistem a
O p era cio n a l
4
K b
Pro gra m a
C
3
K b
Pro gra m a
A
5
K b
a l 4 K b Pro gra m a C 3 K b Pro gra m

M em ó ria

Prin cipa l

Sistem a O p era cio n a l 8 K b Pro gra m
Sistem a
O p era cio n a l
8
K b
Pro gra m a
A
5
K b

Alocação Particionada Dinâmica

Alocação Particionada Dinâmica  A segunda maneira seria realizar uma relocação de todas as partições ocupadas,
Alocação Particionada Dinâmica  A segunda maneira seria realizar uma relocação de todas as partições ocupadas,

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 em ó ria

Prin cip a l

Sistem a O p era cio n a l 4 K b Pro gra m
Sistem a
O p era cio n a l
4
K b
Pro gra m a
C
3
K b
Pro gra m a
A
5
K b

Relo ca çã o

gra m a C 3 K b Pro gra m a A 5 K b Relo

M em ó ria

Prin cip a l

Sistem a O p era cio n a l Pro g ra m a C
Sistem a
O p era cio n a l
Pro g ra m a
C
Pro g ra m a
A

1 2

K b

Estratégias para Escolha da Partição

Estratégias para Escolha da Partição  Os sistemas operacionais implementam, basicamente, três estratégias para
Estratégias para Escolha da Partição  Os sistemas operacionais implementam, basicamente, três estratégias para

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,

fragmentação antes que ela ocorra.

o

problema

da

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

Estratégias para Escolha da Partição Á rea s livres Ta m a nh o   1
Estratégias para Escolha da Partição Á rea s livres Ta m a nh o   1

Á rea s livres

Ta m a nh o

 

1

   

4

K

b

 
 

2

   

5

K

b

 
 

3

   

3

K

b

 

M em ó ria

Prin cip a l

Sistem a O p era cio n a l Á rea livre 1 4 K
Sistem a
O p era cio n a l
Á
rea
livre
1
4
K b
Pro gra m a
C
Á
rea
livre 2
5
K b
Pro gra m a
A
Á
rea
livre 3
3
K b

Estratégias para Escolha da Partição

Estratégias para Escolha da Partição  BEST FIT  Esse mecanismo escolhe a melhor partição (best
Estratégias para Escolha da Partição  BEST FIT  Esse mecanismo escolhe a melhor partição (best

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

Estratégias para Escolha da Partição M em ó ria Prin cipa l Sistem a O p
Estratégias para Escolha da Partição M em ó ria Prin cipa l Sistem a O p

M em ó ria

Prin cipa l

Sistem a O p era cio n a l 4 K b Pro gra m
Sistem a
O p era cio n a l
4
K b
Pro gra m a
C
5
K b
Pro gra m a
A
3
K b
F (a ) Best- fit
F
(a ) Best- fit

1 K b

Sistem a O p era cio n a l Pro gra m a C Pro
Sistem a
O p era cio n a l
Pro gra m a
C
Pro gra m a
A
Pro gra m a
F
Á rea
livre

2 K b

Estratégias para Escolha da Partição

Estratégias para Escolha da Partição M em ó ria Prin cipa l Sistem a O p
Estratégias para Escolha da Partição M em ó ria Prin cipa l Sistem a O p

M em ó ria

Prin cipa l

Sistem a O p era cio n a l 4 K b Pro gra m
Sistem a
O p era cio n a l
4
K b
Pro gra m a
C
5
K b
Pro gra m a
A
3
K b

(b ) W o rst- fit

F
F

1 K b

Sistem a

O p era cio n a l

 

Pro gra m a

C

Pro gra m a

F

Á rea

livre

4

K b

Pro gra m a

A

 

Estratégias para Escolha da Partição

Estratégias para Escolha da Partição F 1 K b M em ó ria Prin cip a
Estratégias para Escolha da Partição F 1 K b M em ó ria Prin cip a
F
F

1 K b

M em ó ria

Prin cip a l

Siste m a O p e ra cio n a l 4 K b Pro
Siste m a
O p e ra cio n a l
4
K b
Pro g ra m a
C
5
K b
Pro g ra m a
A
3
K b
(c) First- fit
(c) First- fit
Sistem a O p era cio n a l Pro g ra m a F
Sistem a
O p era cio n a l
Pro g ra m a
F
Á rea
livre
Pro g ra m a
C
Pro g ra m a
A

3 K b

Swapping

Swapping  A técnica de swapping veio para tentar resolver o problema de insuficiência de memória
Swapping  A técnica de swapping veio para tentar resolver o problema de insuficiência de memória

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

Swapping M em ó ria Prin cip al Sistem a O pera cio n a l
Swapping M em ó ria Prin cip al Sistem a O pera cio n a l
M em ó ria Prin cip al Sistem a O pera cio n a l
M em ó ria
Prin cip al
Sistem a
O pera cio n a l
Pro gra m a
A
H
Pro gra m a
B
Sw a p
o u
t
Pro gra m a
E
Pro gra m a
G
B
B
B

A rq u ivo

d e

Sw a p

Sw a p

in

M em ó ria

Prin cip al

Sistem a O pera cio n a l Pro gra m a A Pro gra
Sistem a
O pera cio n a l
Pro gra m a
A
Pro gra m a
H
Pro gra m a
E
Á rea
Livre

Swapping

Swapping  Um dos problemas gerados pelo swapping é a relocação dos processos.  O loader
Swapping  Um dos problemas gerados pelo swapping é a relocação dos processos.  O loader

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.
Gerenciamento de Memória Prof. Dr. José Luís Zem Prof. Dr. Renato Kraide Soffner Prof. Ms.

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
Faculdade de Tecnologia de Americana
Centro Paula Souza