Buscar

Sistemas Operacionais aula 08

Prévia do material em texto

CCT0011 – Sistemas Operacionais 
Aula 08 – Gerência de Memória 
Sistemas Operacionais 
Conteúdo da Aula 
Breve Revisão Última Aula 
 
Funções 
 
Espaço de Endereçamento Físico 
 
Espaço de Endereçamento Lógico 
 
Sistemas Operacionais 
Sumário 
• Funções básicas 
• Alocação contígua simples 
• Técnica de overlay 
• Alocação Particionada 
– Alocação Particionada Estática 
– Alocação Particionada Dinâmica 
– Estratégias de Alocação de Partição 
• Swapping 
Sistemas Operacionais 
Introdução 
 A memória RAM é um recurso importante que deve ser gerenciado com muito 
cuidado. 
 Ao longo dos anos, as pessoas descobriram o conceito de hierarquia de memórias, 
em que computadores têm alguns megabytes de memória caches muito rápidas, de 
custo alto e volátil, alguns gigabytes de memória principal volátil de velocidade e custo 
médios e alguns terabytes de armazenamento em disco não volátil de velocidade e 
custo baixos. 
 
 A função do sistema operacional é abstrair essa hierarquia em um modelo útil e, 
então, gerenciar a abstração. 
 
Sistemas Operacionais 
Introdução 
 
 A parte do sistema operacional que gerencia (parcialmente) a hierarquia de 
memórias é denominada gerenciador de memória. 
 
 Sua função é gerenciar a memória de modo eficiente: manter o controle de quais 
partes da memória estão em uso e quais não estão, alocando memória aos processos 
quando eles precisam e liberando-a quando esses processos terminam. 
 
 
Sistemas Operacionais 
Introdução 
 Os primeiros computadores de grande porte (antes de 1960), microcomputadores 
(antes de 1970) e computadores pessoais (antes de 1980) não possuíam abstração de 
memória. Cada programa simplesmente considerava a memória física. 
 O modelo de memória apresentado ao programador era um conjunto de endereços de 
0 a algum máximo, cada endereço correspondendo a uma célula. 
 
 Nestas condições, não era possível executar dois programas na memória 
simultaneamente. 
 
 Ainda assim vária opções eram possíveis. 
Sistemas Operacionais 
Funções Básicas 
 
• Manter o maior número de processos na memória 
• Maximizar o compartilhamento da CPU e demais recursos 
• Swapping 
• Execução de programas maiores que memória disponível 
• Proteção 
• Compartilhamento 
Sistemas Operacionais 
O problema 
 Em ambiente multiprogramado, é necessário: 
 
Subdividir a memória para acomodar múltiplos processos. 
Mas se poucos processos estão na memória, em boa parte do tempo estarão 
esperando por E/S e a CPU estará sub-utilizada. 
Então, deve-se alocar a memória de forma eficiente ao maior número de 
processos possíveis. 
 
Solução  Gerenciador de Memória 
 
Sistemas Operacionais 
Alguns Requisitos do Gerenciador de Memória 
 
Relocação 
 
• O programador não deve se preocupar com o local onde o programa (processo) 
será carregado para execução. 
 
• Durante a execução, o processo poderá sair da memória e retornar para um local 
diferente, nesta mesma memória. 
 
• Referências devem ser resolvidas para endereços de memória física. 
 
Sistemas Operacionais 
Alguns Requisitos do Gerenciador de Memória 
 
Proteção 
 
• Processos não devem conseguir referenciar posições de memória em outros 
processos sem permissão.. 
 
• Em virtude da relocação, não é possível testar endereços em programas. 
 
• Com suporte de h/w, o teste deverá ser em tempo de execução. 
Sistemas Operacionais 
Alguns Requisitos do Gerenciador de Memória 
 
Compartilhamento 
 
• Deve-se permitir que vários processos possam acessar a mesma porção de 
memória. 
 
• O mecanismo de proteção deve ter flexibilidade. 
 
• Caso por exemplo, exclusão mútua. 
Sistemas Operacionais 
Alguns Requisitos do Gerenciador de Memória 
Organização lógica 
 
• Programas são normalmente separados em módulos, que podem ser escritos e 
compilados separadamente. 
 
• Graus diferentes de proteção podem ser atribuídos aos módulos. 
 
• Compartilhamento de módulos. 
 
• Manipulação de diferentes módulos de um mesmo executável pode ser melhor 
realizada através de segmentação. 
Sistemas Operacionais 
Alguns Requisitos do Gerenciador de Memória 
Organização física 
 
• Memória é organizada como uma hierarquia. 
 
• Se um programa precisa de mais memória do que o disponível na MP, a MS 
deverá ser utilizada. 
 
• Uso de memória cache. 
 
• Este gerenciamento deverá ser feito de forma transparente pelo SO. 
Sistemas Operacionais 
Particionamento Fixo 
 
Particionamento da memória em regiões fixas 
 
Se partições idênticas processos menores que o tamanho da 
partição podem ser carregados diretamente. 
 
Processos maiores exigirão overlay. 
 
Processos menores provocaram fragmentação interna e 
desperdício de MP. 
 
Sistemas Operacionais 
Particionamento Fixo 
Partições de tamanhos distintos 
• diminuem a ineficiência (não a elimina)‏ 
• associa o processo à partição menor possível 
• aumenta a sobrecarga do gerenciamento (e.g., uma fila por partição ou fila 
única?)‏ 
 
 De qualquer forma o número de partições determina o número de processos no 
sistema. 
 
 Processos pequenos utilizam de maneira ineficiente a memória relocação 
 
Sistemas Operacionais 
Alocação Contígua Simples 
 A memória principal é dividida em duas áreas, uma para o sistema operacional e 
outra para o programa do usuário. O usuário tem controle total sobre toda a memória 
principal. 
 
 
Alguns sistemas implementam proteção através de um registrador que delimita as 
áreas do sistema operacional e do usuário. 
Memória Principal
Sistema
Operacional
Área para
programa
Memória Principal
Registrador
Sistema
Operacional
Área para
programa
Sistemas Operacionais 
Alocação Contígua Simples 
 Subutilização da memória 
Apesar de fácil implementação e do código reduzido, este tipo de alocação não permite 
a utilização eficiente dos recursos computacionais, pois apenas um usuário pode dispor 
desses recursos. 
Memória Principal
Sistema
Operacional
Programa
do usuário
Área livre
Sistemas Operacionais 
Alocação Particionada Estática 
Primeiros sistemas multiprogramáveis. 
 A memória era dividida em pedaços de tamanho fixo, chamados de partição. O 
tamanho das partições, era estabelecido na fase de inicialização do sistema. 
 
Memória Principal
Sistema Operacional
2 Kb
5 Kb
8 Kb
Partição 1Partição
Tabela de partições
Tamanho
1 2 Kb
2 5 Kb
3 8 Kb
Partição 2
Partição 3
Programas a serem executados:
AE
3 Kb
D
6 Kb
C
1 Kb
B
4 Kb 2 Kb
Sistemas Operacionais 
Alocação Particionada Estática 
Alocação Particionada Estática Absoluta 
 
Inicialmente, os programas só podiam ser 
carregados e executados em apenas uma 
participação específica, mesmo se outras 
estivessem disponíveis. 
 
No código absoluto, todas as referências a 
endereços no programa são posições físicas 
na memória principal, ou seja, o programa só 
poderia ser carregado a partir do endereço de 
memória especificado no seu próprio código. 
Memória Principal
Sistema Operacional
2 Kb
5 Kb
8 Kb
Partição 1
Partição 2
Partição 3
A
B
D
C
E
3 Kb
6 Kb
1 Kb
4 Kb
2 Kb
Sistemas Operacionais 
Alocação Particionada Estática 
 Com a evolução dos compiladores, montadores, linkers e loaders, o código gerado 
deixou de ser absoluto e passa a ser relocável, todas as referências a endereços no 
programa são relativas ao início do código, desta forma os programas puderam ser 
executados a partirde qualquer partição. 
Memória Principal
Sistema Operacional
2 Kb
5 Kb
8 Kb
Programa C
Programa A
Programa B
ED
6 Kb 3 Kb
Memória Principal
Sistema Operacional
1
2
3
Programa C
Área livre
Programa B
Partição Tamanho Livre
1 2 Kb Não
2 5 Kb Sim
3 8 Kb Não
Sistemas Operacionais 
Alocação Particionada Estática 
Proteção 
 Neste esquema de 
alocação a proteção baseia-
se em dois registradores, 
que indicam os limites 
inferior e superior da 
partição onde o programa 
está sendo executado. 
Memória Principal
Sistema Operacional Endereço inicial
Endereço final
Memória Principal
Sistema Operacional
1 Kb
3 Kb
5 Kb
Programa C
Programa A
Programa E
BD
6 Kb 4 Kb
Tanto nos sistemas de alocação absoluta quanto relocável, os programas, normalmente 
não preenchem totalmente as partições onde são carregados. Este tipo de problema, 
decorrente da alocação fixa das partição, é conhecido como fragmentação interna. 
Sistemas Operacionais 
Particionamento Dinâmico 
• Número e tamanho das partições é variável. 
• Cada processo recebe a quantidade de memória que necessita. 
• Gerenciando buracos e processos. 
 
IC - UFF 
SO 
P1 
320k 
SO SO 
P1 
P3 
288k 
SO SO 
P1 
P2 
P2 
224k 
SO SO 
P1 
P2 
P3 
P4 
128k 
- sem espaço 
- SO faz swap out 
- SO escolhe P1 
Sistemas Operacionais 
Particionamento Dinâmico 
 
 Buracos começam a ser formados 
 Tamanhos tendem a ser pequenos 
 Necessidade de rearrumar os espaços 
SO SO 
P2 
P3 
P4 
Sistemas Operacionais 
Particionamento Dinâmico 
Sistemas Operacionais 
Particionamento Dinâmico 
Políticas de alocação 
• Primeiro encaixe (o melhor) - first fit 
• seleciona o primeiro que encaixa, a partir do início 
• mais simples, mais rápido e melhor na maioria das vezes 
• Próximo encaixe (um pouco pior) – next fit 
• seleciona o primeiro que encaixa, a partir da última partição selecionada 
• usualmente seleciona para o final da MP 
• Melhor encaixe (o pior!) - best fit 
• de todas as partições, seleciona aquela imediatamente maior 
• mais custoso, maior grau de fragmentação externa 
 
Sistemas Operacionais 
Particionamento Dinâmico 
 
Buracos na memória: fragmentação externa 
 
Compactação: tempo perdido e relocação dinâmica (melhor com swapping)‏ 
 
Sobrecarga maior que método fixo 
 
Em qualquer caso, relocação 
 
Então, o que fazer? 
 
Sistemas Operacionais 
Alocação Particionada Dinâmica 
 Eliminado o conceito de partições de tamanho fixo. 
Memória PrincipalMemória Principal
Sistema OperacionalSistema Operacional
4 Kb
1 Kb
3 Kb
5 Kb
2 Kb
15 Kb
Programa C
Programa B
Programa A
Programa E
BA
2 Kb
E
3 Kb
C
1 Kb 4 Kb
Sistemas Operacionais 
Alocação Particionada Dinâmica 
Fragmentação externa 
 
 
 
 
 
 
 
 
 
Memória Principal
Sistema Operacional
4 Kb
3 Kb
5 Kb
Programa C
Programa A
D
6 Kb
Sistemas Operacionais 
Alocação Particionada Dinâmica 
 
Solução para a 
Fragmentação Externa 
 
Conforme os programas 
terminam, apenas os 
espaços livres adjacentes 
são reunidos, produzindo 
áreas livres de tamanho 
maior. 
 
 
 
 
Memória PrincipalMemória Principal
Sistema OperacionalSistema Operacional
8 Kb
4 Kb
3 Kb
5 Kb5 Kb
Programa C
Programa APrograma A
Sistemas Operacionais 
Relocação Dinâmica 
Loader relocável. A implementação dinâmica é realizada através de um registrador 
denominado registrador de relocação. No momento em que o programa é carregado na 
memória, o registrador recebe o endereço inicial da posição de memória que o 
programa irá ocupar. Toda vez que ocorrer uma referência a algum endereço, o 
endereço contido na instrução será somado ao conteúdo do registrador, gerando o 
endereço físico. 
Endereço de
memória
Endereço incial
da partição
Registrador de Relocação Instrução
Endereço
Código de
operação
Sistemas Operacionais 
Alocação Particionada Dinâmica 
 
Alocação particionada 
dinâmica com relocação: 
 
Relocação de todas as 
partições ocupadas, 
eliminando todos os espaços 
entre elas e criando uma única 
área livre contígua. (relocação 
dinâmica) 
 
 
 
 
Memória PrincipalMemória Principal
Sistema Operacional
Relocação
Sistema Operacional
4 Kb
3 Kb
12 Kb
5 Kb
Programa C
Programa C
Programa A
Programa A
Sistemas Operacionais 
Estratégias de Alocação 
 
Os sistemas operacionais 
implementam, basicamente, 
três estratégias para 
determinar em qual área livre 
um programa será carregado 
para execução. 
 
Lista de Áreas Livres 
Memória Principal
Sistema Operacional
4 Kb
3 Kb
5 Kb
Programa C
Programa A
Áreas livres
Área livre 1
Área livre 2
Área livre 3
Tamanho
1 4 Kb
2 5 Kb
3 3 Kb
Sistemas Operacionais 
Estratégias de Alocação 
First-fit: A primeira partição livre de tamanho suficiente para carregar o programa é escolhida 
(primeira que se encaixa a partir co início). A lista de áreas livres está ordenada 
crescentemente por endereços. Mais simples, mais rápida e melhor na maioria das vezes. 
 
Memória Principal
Sistema Operacional
4 Kb
3 Kb
5 Kb
Programa C
Programa A
F
1 Kb
Sistema Operacional
3 Kb
Programa C
Programa A
Área livre
Programa F
Sistemas Operacionais 
Estratégias de Alocação 
Worst-fit: A pior partição é escolhida, ou seja, aquela em que o programa deixa o 
maior espaço sem utilização. Deixa espaços livres maiores que permitem a um maior 
número de programas utilizar a memória. 
Memória Principal
Sistema Operacional
4 Kb
3 Kb
5 Kb
Programa C
Programa A
F
1 Kb
Sistema Operacional
4 Kb
Programa C
Programa A
Área livre
Programa F
Sistemas Operacionais 
A
rq
u
it
et
u
ra
 d
e 
S
is
te
m
as
 O
p
er
ac
io
n
ai
s 
–
 M
ac
h
ad
o
/M
ai
a 
Estratégias de Alocação 
Best-fit: a melhor partição é 
escolhida, ou seja, aquela em que o 
programa deixa o menor espaço 
sem utilização (aquela 
imediatamente maior). 
Mais custoso, maior grau de 
fragmentação externa. 
 
A lista de áreas livres está ordenada 
por tamanho, diminuindo o tempo 
de busca por uma área 
desocupada. 
 
 
Memória Principal
Sistema Operacional
4 Kb
3 Kb
5 Kb
Programa C
Programa A
F
1 Kb
Sistema Operacional
2 Kb
Programa C
Programa F
Programa A
Área livre
Sistemas Operacionais 
Técnica de Overlay 
 Divisão do programa em módulos, de forma que seja possível a execução 
independente de cada módulo, utilizando uma mesma área de memória. 
 
Memória Principal
Cadastramento
Impressão
Sistema Operacional2 Kb
3 Kb
4 Kb
4 Kb
2 Kb
2 Kb
1 Kb
Módulo principal
Área de overlay
Área livre
Área não
utilizada
Sistemas Operacionais 
Técnica de Overlay 
 Enquanto na alocação contígua simples os programas estão limitados ao tamanho da 
área disponível na memória principal para o usuário, na técnica de Overlay os 
programas são divididos em módulos, deforma que seja possível a execução 
independente de cada módulo,utilizando uma mesma área da memória. 
 
Exemplo de Overlay: Um programa que consista em um módulo principal e outros dois 
módulos independentes, um correspondente ao cadastro e outro, à impressão. 
Quando o programa é carregado, apenas o módulo principal é introduzido na memória, 
os demais aguardam em memória secundária. Quando um dos outrosmódulos for 
referenciado pelo módulo principal, aquele será carregado na memória principal, na 
área de overlay 
 
Sistemas Operacionais 
Técnica de Overlay 
 A definição das áreas de overlay é feita pelo próprio programador, através de 
comandos específicos da linguagem de programação. 
 
• O tamanho da área de overlay deve ser igual ou maior ao tamanho do maior 
módulo. 
 
• Como vantagem, a técnica de overlay possibilita um melhor aproveitamento da 
memória principal. 
 
• Sua utilização exige cuidado, pois pode trazer implicações tanto na manutenção 
como no desempenho das aplicações, devido à possibilidade de transferências 
excessivas dos módulos entre a memória principal e a memória secundária. 
 
Sistemas Operacionais 
Swapping 
 Técnica aplicada à gerência de memória para 
programas que esperam por memória livre para 
serem executados. 
 O sistema escolhe um processo residente, que é 
transferido da memória principal para a memória 
secundária (swap out). 
 
• Processo necessita estar na memória para ser 
executado 
• Se não há mais espaço em memória é necessário 
fazer um rodízio de processos em memória 
• Um processo pode ser temporariamente 
movido para fora da memória (backing store) 
e então trazido de volta para a memória para 
continuar a execução . 
Memória Pr incipal
Memória Pr incipal
Sistema
Operacional
Sistema
Operacional
Programa A
Programa A
Programa G
Área Livre
Swap in
Swap out
Arquivo
de Swap
Programa E
Programa E
Programa B
Programa H
H
B
B
Sistemas Operacionais 
Swapping 
 
 
 Sistema operacional mantém 
uma fila de processos que estão 
prontos para executar, que 
possuem imagens da memória em 
disco 
Sistemas Operacionais 
Memória Virtual 
 
Técnica que combina memória 
principal e secundária, dando ao 
usuário a ilusão de existir uma 
memória muito maior 
• Maximizar o número de processos 
na memória 
• Reduzir a fragmentação 
• Permitir estruturas e dados 
maiores que a memória 
 
Memória Virtual
.
.
.
.
Memória Principal
Memória Secundária
.
.
.
Sistemas Operacionais 
Espaço de Endereçamento Virtual 
Ideia de um vetor 
• Quando um programa faz referência a um elemento do vetor, não há preocupação em saber a posição 
de memória daquele dado. 
• O compilador se encarrega de gerar instruções que implementam esse mecanismo. 
• Um programa no ambiente de memória virtual não faz referência a endereços físicos de memória 
(endereços reais), mas a endereços virtuais. 
 
Memória Virtual
Memória Principal
Mapeamento
.
.
.
.
.
.
Endereço Físico
500
501
502
503
504
.
.
.
599
VET [1]
VET [2]
VET [3]
VET [4]
VET [5]
.
.
.
.
.
.
VET [100]
 O mecanismo de tradução de um 
endereço virtual para endereço físico é 
denominado mapeamento. 
 
 
Sistemas Operacionais 
Espaço de Endereçamento Virtual 
Espa
ço d
e en
dere
çam
ento
 virt
ual
Espa
ço d
e en
dere
çam
ento
 rea
l
Endereço virtual 0
Endereço virtual 1
Endereço virtual 2
Endereço virtual 3
Endereço virtual 4
Endereço virtual 5
.
.
.
Endereço virtual V
Endereço real 0
Endereço real 1
Endereço real 2
Endereço real 3
.
.
.
Endereço real R
Memória Virtual
.
.
.
.
Memória Principal
Memória Secundária
.
.
.
Sistemas Operacionais 
Mapeamento 
 Mapeamento: tradução de um endereço 
localizado no espaço virtual para um associado 
no espaço real. 
Dispositivo de hardware responsável por esta 
tradução é conhecido como unidade de 
gerência de memória (MMU); 
Cada processo tem seu espaço de 
endereçamento virtual como se possuísse sua 
própria memória. 
Tabela de mapeamento: mapeiam blocos de 
dados, cujo tamanho determina o número de 
entradas existentes nas tabelas de 
mapeamento. 
Processo A
Espaço de
endereçam en to
vi r tua l de A
Endereço vir tual 1
.
.
.
Tabela de
m apeam en to
de A
Espaço de
endereçam en to
vi r tua l de B
Endereço vir tual 1
.
.
.
Tabela de
m apeam en to
de B
Processo B
M em ór ia Pr incipal
Sistemas Operacionais 
Mapeamento 
Tabelas mapeiam blocos de dados, cujo tamanho determina o número de entradas 
existentes na tabela de mapeamento. 
Quanto maior o bloco, menos entradas nas tabelas de mapeamento e 
consequentemente, tabelas de mapeamento que ocupam um menor espaço de 
memória. 
 
 
Sistemas Operacionais 
Dúvidas

Continue navegando