Escolar Documentos
Profissional Documentos
Cultura Documentos
EADDCC006
Pontifícia Universidade Católica
PUC - Minas Poços de Caldas EADDCC006 #1
Introdução aos Sistemas Operacionais
Unidade 5
Gerência de Memória
Parte 1
ORIENTAÇÕES DE ESTUDO
Prezado(a) Aluno(a),
Nesta unidade iremos aprender os conceitos básicos que envolve o gerenciamento de memória por parte do
SO.
- FICHA DE ESTUDO: Montar uma ficha de estudo com os principais conceitos apresentados na unidade, de
forma a facilitar o seu estudo para a prova.
Lembre-se da importância de estabelecer o seu próprio cronograma de estudos dentre as atividades passadas
pelo professor, pois o conteúdo é extenso e não é possível aprendê-lo todo na véspera da prova.
Bom estudo!
EADDCC006 #3
Lembrando....
EADDCC006 #4
Gerenciador de Memória
Problemas a serem resolvidos pelo gerenciador de memória:
EADDCC006 #7
Alocação de Memória
A alocação de memória (reserva de uma região de memória para
um processo) pode ser feita das seguintes maneiras:
Alocação Contígua
– Simples.
– Particionada
• Estática (Absoluta e Relocável).
• Dinâmica.
Alocação Não-Contígua (envolve memória virtual)
– Paginada.
– Segmentada.
– Segmentada com Paginação.
EADDCC006 #8
Alocação Contígua Simples
Utilizada em sistemas Monousuário / Monoprogramáveis.
(ainda utilizada em sistemas computacionais simples, a
maioria deles microcontrolados)
Área de memória
para o SO
Programa do
usuário
Área para
o
programa Área livre
Região de Memória
ocupada pelo
do usuário
Programa do
usuário
EADDCC006 #9
Alocação Contígua Simples
EADDCC006 #10
Alocação Contígua Particionada
A Alocação Particionada surgiu com os
sistemas Multiprogramáveis / Multiusuários
(ocupação mais eficiente do processador),
visando permitir o compartilhamento da
memória entre os diversos processos.
• Dinâmica.
EADDCC006 #11
Alocação Contígua
Particionada Estática - Absoluta
EADDCC006 #12
Alocação Contígua
Particionada Estática - Absoluta
O quanto cada
programa ocupa
de memória
B D C E A
4MB 6MB 1MB 3MB 2MB
Particionamento
pré-definido da
memória
Uma questão interessante e não
resolvida por este tipo de Alocação:
Sistema Operacional
Partição1 – 2MB Os programas atuais ocupam uma
quantidade de memória variável,
Partição2 – 5MB conforme sua execução.
Neste tipo de alocação esse
problema tem que ser previsto
Partição3 – 8MB antes da compilação do código
fonte (geração do executável)
EADDCC006 #13
Alocação Contígua
Particionada Estática - Absoluta
B D C E A
4MB 6MB 1MB 3MB 2MB
Sistema Operacional
Partição1 – 2MB
Imagine que todos os programas
chegaram quase ao mesmo tempo
(respeitando a ordem acima) e que Partição2 – 5MB
antes de executar o primeiro a
chegar (A), todas as solicitações de
execução já tenham sido efetuadas.
Partição3 – 8MB
EADDCC006 #14
Alocação Contígua
Particionada Estática - Absoluta
B D C E A
4MB 6MB 1MB 3MB 2MB
Partição2 – 5MB
Partição3 – 8MB
EADDCC006 #15
Alocação Contígua
Particionada Estática - Absoluta
B D C E A
4MB 6MB 1MB 3MB 2MB
E Partição2 – 5MB
Partição3 – 8MB
EADDCC006 #16
Alocação Contígua
Particionada Estática - Absoluta
B D C E A
4MB 6MB 1MB 3MB 2MB
E Partição2 – 5MB
Partição3 – 8MB
EADDCC006 #17
Alocação Contígua
Particionada Estática - Absoluta
B D C E A
4MB 6MB 1MB 3MB 2MB
E Partição2 – 5MB
D Partição3 – 8MB
EADDCC006 #18
Alocação Contígua
Particionada Estática - Absoluta
B D C E A
4MB 6MB 1MB 3MB 2MB
B E Partição2 – 5MB
D Partição3 – 8MB
EADDCC006 #19
Alocação Contígua
Particionada Estática - Absoluta
B D C E A
4MB 6MB 1MB 3MB 2MB
Sistema Operacional
C A Partição1 – 2MB Sistema Operacional
C Programa A
B E Partição2 – 5MB
B E Partição2 – 5MB
D Partição3 – 8MB
D Partição3 – 8MB
EADDCC006 #20
Alocação Contígua
Particionada Estática - Absoluta
B D C E A
4MB 6MB 1MB 3MB 2MB
Sistema Operacional
C A Partição1 – 2MB Sistema Operacional
C Programa A
B E Partição2 – 5MB
Programa E (3MB)
B
“Área Livre” - 2MB
D Partição3 – 8MB
D Partição3 – 8MB
EADDCC006 #21
Alocação Contígua
Particionada Estática - Absoluta
B D C E A
4MB 6MB 1MB 3MB 2MB
Sistema Operacional
C A Partição1 – 2MB Sistema Operacional
C Programa A
B E Partição2 – 5MB
Programa E (3MB)
B
“Área Livre” - 2MB
D Partição3 – 8MB
Programa D (6MB)
“Área Livre” - 2MB
EADDCC006 #22
Alocação Contígua
Particionada Estática - Absoluta
B D C E A
4MB 6MB 1MB 3MB 2MB
EADDCC006 #25
Alocação Contígua
Particionada Estática - Relocável
C D B E A
1MB 6MB 4MB 3MB 2MB
Fila representando a ordem de solicitação para executar os programas
Sistema Operacional
Partição1 – 2 MB
Partição2 – 5 MB
C D B E A
Partição3 – 8 MB
EADDCC006 #26
Alocação Contígua
Particionada Estática - Relocável
C D B E A
1MB 6MB 4MB 3MB 2MB
Fila representando a ordem de solicitação para executar os programas
Sistema Operacional
Programa A
Partição2 – 5 MB
C D B E
Partição3 – 8 MB
EADDCC006 #27
Alocação Contígua
Particionada Estática - Relocável
C D B E A
1MB 6MB 4MB 3MB 2MB
Fila representando a ordem de solicitação para executar os programas
Sistema Operacional
Programa A
Programa E (3MB)
C D B “Área Livre” - 2MB
Partição3 – 8 MB
EADDCC006 #28
Alocação Contígua
Particionada Estática - Relocável
C D B E A
1MB 6MB 4MB 3MB 2MB
Fila representando a ordem de solicitação para executar os programas
Sistema Operacional
Programa A
Programa E (3MB)
“Área Livre” - 2MB
Programa B (4MB)
C D
“Área Livre” - 4MB
EADDCC006 #29
Alocação Contígua
Particionada Dinâmica
EADDCC006 #30
Alocação Contígua
Particionada Dinâmica
E D C B A
3MB 6MB 1MB 4MB 2MB
Sistema Operacional
A E C B
Área Livre = 11MB
EADDCC006 #31
Alocação Contígua
Particionada Dinâmica
E D C B A
3MB 6MB 1MB 4MB 2MB
Sistema Operacional
Programa B
A E C
EADDCC006 #32
Alocação Contígua
Particionada Dinâmica
E D C B A
3MB 6MB 1MB 4MB 2MB
Sistema Operacional
Programa B
A E Programa C
EADDCC006 #33
Alocação Contígua
Particionada Dinâmica
E D C B A
3MB 6MB 1MB 4MB 2MB
Sistema Operacional
Programa B
A Programa C
Programa E
EADDCC006 #34
Alocação Contígua
Particionada Dinâmica
E D C B A
3MB 6MB 1MB 4MB 2MB
Sistema Operacional
Programa B
Programa C
Programa E
Programa A
EADDCC006 #35
Alocação Contígua
Particionada Dinâmica
Programa B Programa B
Fim do
Programa C Área Livre
Programa C
Programa E Programa E
Programa A Programa A
Área Livre Área Livre
Este espaço deixado
pelo término do
Com o surgimento de várias lacunas: processo
* É possível termos espaço livre na memória correspondente ao
suficiente para executar um novo programa, mas programa C, gerou
esse espaço pode não ser contínuo! Atitude? uma lacuna
* Qual lacuna alocar a um processo que pede por chamada
um espaço X de memória? fragmentação
externa.
EADDCC006 #36
Alocação Contígua
Particionada Dinâmica
EADDCC006 #37
Alocação Contígua
Particionada Dinâmica
Para se decidir em qual lacuna colocar o processo, podemos
adotar uma das seguintes soluções:
• Best-Fit
• Worst-Fit
• First-Fit
EADDCC006 #38
Alocação Contígua
Particionada Dinâmica
P1
P2
EADDCC006 #39
Alocação Contígua
Particionada Dinâmica
P1
P2
EADDCC006 #40
Alocação Contígua
Particionada Dinâmica
P1
P2
Área livre 1 = 2MB
EADDCC006 #41
Alocação Contígua
Particionada Dinâmica
P1
P2
EADDCC006 #42
Alocação Contígua
Particionada Dinâmica
P1
P2
EADDCC006 #43
Alocação Contígua
Particionada Dinâmica
P1
P2
Área livre 1 = 2MB
Worst-Fit (pior alocação):
P3
Cria o maior espaço possível,
Área livre 2 = 1MB
ou seja, deixa sempre a maior
P4
lacuna possível.
Área livre 3 = 4MB
Vamos utilizar o mesmo
processo P6 (que ocupa
1MB). P5
P6
EADDCC006 #44
Alocação Contígua
Particionada Dinâmica
P1
P2
EADDCC006 #45
Alocação Contígua
Particionada Dinâmica
P1
P2
EADDCC006 #46
Alocação Contígua
Particionada Dinâmica
P1
P2
P6
EADDCC006 #47
Problemas de Alocação
EADDCC006 #48
Problemas de Alocação
SOLUÇÃO:
EADDCC006 #49