Buscar

UNIDADE 07 Gerencia de Memória Principal

Prévia do material em texto

Unidade VII: 
Gerência de Memória Principal
INSTITUTO DE CIÊNCIAS EXATAS E NATURAIS
FACULDADE DE COMPUTAÇÃO
BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO
SISTEMAS OPERACIONAIS
Professor: Dr. Josivaldo Araújo
josivaldo@ufpa.br
Objetivos desta Unidade...
� Estudar as vantagens, desvantagens e principais
implementações da memória principal;
� Fornecer uma descrição detalhada de várias maneiras
de organizar o hardware memória;
� Analisar as motivações que levaram à ampla adoção do
mecanismo de gerência de memória virtual e outras
técnicas de gerência de memória.
� Discutir várias técnicas de gerência de memória,
inclusive a paginação e a segmentação;
� A memória principal sempre foi vista como um recurso
escasso e caro;
� Seu gerenciamento é um dos fatores mais importantes
no projeto de S.O.; (Determina o bom desempenho)
� Computadores utilizam uma hierarquia de memórias;
• Memória Cache (volátil, rápida, alto custo);
• Memória Principal (volátil, rápida, custo médio);
• Memória Secundária (não-volátil, baixa velocidade e
baixo custo)
Introdução
� A parte que gerência a hierarquia de memória é
denominada de gerenciador e memória;
• 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 quando terminam;
• Gerenciar a troca de processos (swapping) entre memória e
o disco quando a memória principal não é suficiente para
todos os processos;
Introdução
� Programas são armazenados em memória secundária, ou
seja, o uso de discos ou fitas === Meios não voláteis, com
grande capacidade e baixo custo;
� Processador executa instruções localizadas na memória
principal;
• S.O. deve transferir programas da memória secundária para
memória principal;
� Maximizar o compartilhamento do processador e demais
recursos computacionais:
• Manter o maior número de processos residentes na
memória principal;
Funções Básicas
� Mesmo na ausência de espaço livre, o sistema deve
permitir o aceite e execução de novos processos.
• Isso é possível através da técnica de swapping;
� Permitir a execução de programas que sejam maiores
que a memória física disponível, para isso, pode-se
utilizar duas técnicas:
1. Overlay;
2. Memória Virtual;
Funções Básicas
� Foi implementada nos primeiros sistemas operacionais,
porém ainda reside em alguns sistemas
monoprogramáveis;
� A memória principal é subdividida em duas áreas: uma
para o sistema operacional e a outra para o programa
do usuário (Fig.01).;
� O programador deve desenvolver suas aplicações,
preocupado, apenas, em não ultrapassar o espaço de
memória disponível;
� O usuário tem controle sobre toda a memória, podendo
ler qualquer posição, inclusive a área do S.O.
Alocação Contígua Simples
� Para proteger o sistema desse tipo de acesso, alguns
sistemas implementam um registrador que delimita as
áreas (Fig.02).;
� Não permite a utilização eficiente dos recursos
computacionais, pois apenas um usuário pode dispor
desses recursos (Fig.03).
S.O.
Área para 
programa
Memória Principal
S.O.
Área para 
programa
Memória Principal
Registrador
S.O.
Área Livre
Memória Principal
Programa do 
usuário
Fig. 01 Fig. 02 Fig. 03
Alocação Contígua Simples
Técnica do Overlay
� Na alocação contígua simples, os programas estão
limitados ao tamanho da memória principal;
� Solução encontrada é a técnica do Overlay:
• É dividir o 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.
� A independência do código significa que quando um
módulo estiver na memória para execução, o outro não
precisa necessariamente estar presente;
� Módulo principal é comum e deve permanecer na
memória durante todo o tempo de execução.
� A definição das áreas de overlay é função do
programador, através de comandos específicos da
linguagem utilizada;
Sistema Operacional
Módulo Principal
Área de overlay
Área livre
2 Kb
3 Kb
4 Kb
1 Kb
4 Kb
Cadastramento
Impressão
2 Kb
2 Kb
Área não 
utilizada
Técnica do Overlay
� Evolução dos S.O. � Melhor aproveitamento dos
recursos disponíveis:
• Monoprogramáveis: O processador permanece ocioso
grande parte do tempo e a memória principal é
subutilizada;
• Multiprogramáveis: Diversos programas estejam na
memória principal ao mesmo tempo e que novas
formas de gerência da memória sejam implementadas.
� A alocação particionada pode ser:
1. Estática;
2. Estática Absoluta;
3. Estática Relocável;
4. Dinâmica
Alocação Particionada
1. Alocação Particionada Estática
� A memória era dividida em
pedaços de tamanho fixo,
chamados partições e era
definido em função do
tamanho dos programas que
executariam no ambiente;
� Alteração no tamanho de
uma partição, o sistema
deveria ser desativado e
reinicializado com nova
configuração.
Sistema Operacional
Partição 1
Partição 2
Partição 3
2 Kb
5 Kb
8 Kb
E
A
B
2 Kb
5 Kb
8 Kb
Alocação Particionada
� No código absoluto, todas as referências a endereços no
programa são posições físicas na memória principal.
� Os programas só podiam ser carregados e executados em
apenas uma partição específica, mesmo se outras
estivessem disponíveis;
Sistema Operacional
Partição 1
Partição 2
Partição 3
2 Kb
5 Kb
8 Kb
E
A C
B D
2 Kb 1 Kb
4 Kb 3 Kb
6 Kb
2. Alocação Particionada Estática Absoluta
Alocação Particionada
� Evolução � O código passa a ser relocável;
� Todas as referências a endereços no programa são relativas
ao início do código e não a endereços físicos de memória,
ou seja, os programas puderam ser executados a partir de
qualquer partição.
Sistema Operacional
Programa C
Programa A
Programa B
2 Kb
5 Kb
8 Kb
E
3Kb
D
6 Kb
3. Alocação Particionada Estática Relocável
Alocação Particionada
� Para controlar as partições alocadas, a gerência de
memória mantém uma tabela;
� Quando um programa é carregado na memória, o
sistema percorre a tabela para localizar uma partição
livre.
Partição Tamanho Livre
1
2
3
2 Kb
5 Kb
8 Kb
Não
Não
Sim
3. Alocação Particionada Estática Relocável
Alocação Particionada
� Na alocação de memória estática, a proteção baseia-
se em dois registradores, que indicam os limites
inferior e superior da partição onde o programa está
sendo executado;
� Se o programa tentar acessar uma posição de
memória fora dos limites, ele é interrompido e uma
mensagem de erro é gerada;
� Fragmentação Interna: Quando os programas não
preenchem totalmente as partições onde são
carregados;
� Problema decorrente da alocação fixa das partições.
� Características
Alocação Particionada
� Elimina-se o conceito de partições fixas;
� Cada programa utilizará o espaço necessário,
tornando essa área sua partição;
� Elimina-se o problema da fragmentação interna;
� Contudo, quando os programas forem sendo
finalizados e deixando espaços cada vez menores na
memória, não permitirão que novos programas
ingressem na memória principal;
� Esse problema é chamado de fragmentação externa.
4. Alocação Particionada Dinâmica
Alocação Particionada
Sistema Operacional
15 Kb
Sistema Operacional
Programa E6 Kb
4 Kb
Programa B2 Kb
Sistema Operacional
Programa E
Programa D
Programa C
6 Kb
1 Kb
3 Kb
Programa B2 Kb
3 Kb Área Livre 3 Kb Área Livre
Área Livre
Fragmentação Externa
4. Alocação Particionada Dinâmica
Alocação Particionada
Solução 01:
� Apenas os espaços livres adjacentes são reunidos,
produzindo áreas livres de tamanho maior.
Solução 02:
� Relocação de todas as partições ocupadas, eliminando
os espaços livres entre elas e criando uma única área
livre contígua;� Sistema tenha a capacidade de mover os diversos
programas da memória principal, ou seja, relocação
dinâmica.
4. Alocação Particionada Dinâmica
Alocação Particionada
� Os S.O. implementam basicamente três estratégias para
determinar em qual área livre um programa será
carregado para execução:
1. Best-fit
� A melhor partição é escolhida, ou seja, aquela em que
o programa deixa o menor espaço sem utilização;
� A lista de áreas livres está ordenada por tamanho,
diminuindo o tempo de busca por uma área
desocupada;
� Desvantagem: A memória fica com pequenas áreas
não contíguas, aumentando o problema da
fragmentação.
Estratégias de Alocação de Partição
2. Worst-fit
� A pior partição é escolhida, ou seja, aquela em que o
programa deixa o maior espaço sem utilização;
� Diminui o problema da fragmentação: deixa espaços
livres maiores que permitem a um maior número de
programas utilizar a memória;
3. First-fit
� A primeira partição livre de tamanho suficiente para
carregar o programa é escolhida;
� Das três estratégias, esta é a mais rápida, consome
menos recursos.
Estratégias de Alocação de Partição
Sistema Operacional
Programa C
Programa A
4 Kb
5 Kb
3 Kb
Sistema Operacional
Programa C
Programa A
1 KbBest-fit
1 Kb
1 KbWorst-fit
1 KbFirst-fit
Estratégias de Alocação de Partição
� As três estratégias de alocação podem ser visualizadas
abaixo:
� Introduzida para contornar o problema da insuficiência
de memória principal;
� Evita que um processo fique esperando na memória
principal por algum evento, ou seja, programas que
esperam por memória livre para serem executados, são
transferidos da memória principal para a memória
secundária.
� Posteriormente são transferidos novamente a memória
principal e podem continuar sua execução como se
nada tivesse ocorrido.
� Retirar da memória principal aquele processo com
menores chances de ser executado; (evitar swapping
desnecessário)
Swapping
Sistema Operacional
Programa E
Programa D
Programa C
Programa B
Programa A
R
D
Swap out
Arquivo de Swap
Sistema Operacional
Programa E
Programa R
Programa C
Programa B
Área Livre
Swap in
Memória Principal Memória Principal
Swapping
� Retirada do processo da memória é chamado de swap
out;
� Recolocação do processo para a memória é chamado de
swap in;
� O sistema precisa oferecer um loader que implemente a
relocação dinâmica de programas;
� A relocação é realizada através de um registrador
denominado registrador de relocação;
� Programas podem ser carregados em qualquer posição
da memória.
OBS.: Loader (ou carregador) é o utilitário responsável por carregar na memória principal
um programa para ser executado. Podendo ser do tipo:
• Absoluto: o loader só necessita conhecer o endereço de memória inicial e o tamanho do
módulo para realizar o carregamento.
• Relocável: o programa pode ser carregado em qualquer posição de memória, e o
loader é responsável pela relocação no momento do carregamento.
Swapping Conclusão
� Os algoritmos de gerenciamento de memória para
sistemas operacionais multiprogramados vão desde a
abordagem de sistemas monousuários simples à
segmentação paginada;
� Programas e dados devem estar na memória principal
antes que o sistema possa executá-los ou referencia-los;
� Existem várias técnicas que podem ser utilizadas para
melhorar o desempenho do sistema ou permitir com
que a memória seja melhor utilizada;
� Técnicas como Overley, Swapping e Memória Virtual
trouxeram benefícios tanto para a otimização do sistema
quanto da memória principal;

Continue navegando