DESENVOLVIMENTO DE
SISTEMAS PARA INTERNET
8. GERENCIAMENTO DE
MEMÓRIA
Disciplina: Sistemas Operacionais
Facilitador: Alisson Cleiton
[email protected]
06/05/2009
Sistemas para Internet – 2º Período - Sistemas Operacionais
8. Gerenciamento de Memória
8.1 Introdução
● A memória principal sempre foi vista como um
recurso caro e escasso.
● Ao projetar um SO, uma das maiores
preocupações dos projetistas é quanto à economia
de uso de memória e à otimização da utilização dos
recursos computacionais;
● A gerência de memória é simples nos sistemas
monoprogramáveis;
● Nos sistemas multiprogramáveis é um processo
crítico, devido a necessidade de maximizar o
número de usuários e aplicações utilizando
eficientemente o espaço da memória principal.
Sistemas para Internet – 2º Período - Sistemas Operacionais
8. Gerenciamento de Memória
8.1 Funções Básicas
● Como programas são armazenados em memória
secundárias, por serem meios de armazenamento
não voláteis e de baixo custo, há a necessidade de
que, cada vez que o processador necessite
computar algum desses dados, trazê-los para a
memória principal.
● A gerência de memória deve tentar manter na
memória principal o maior número de processos
residentes,
permitindo
maximizar
o
compartilhamento do processador e dois demais
recursos computacionais.
Sistemas para Internet – 2º Período - Sistemas Operacionais
8. Gerenciamento de Memória
8.1 Funções Básicas
Abaixo as principais funções da gerência de
memória:
● Maximizar o aproveitamento da memória principal;
● Gerenciar a superutilização da memória;
● Proteger áreas importantes da memória;
● Permitir a troca de dados de forma protegida.
Sistemas para Internet – 2º Período - Sistemas Operacionais
8. Gerenciamento de Memória
8.2 Alocação Contígua Simples
● Utilizada nos primeiros sistemas operacionais.
Atualmente, é empregada apenas em alguns
sistemas monoprogramáveis.
● Divide a memória principal em duas áreas: uma
para o sistema operacional e outra para programas
do usuário;
● A memória disponível para os programas do
usuário é calculada através da diferença entre a
memória total disponível e o espaço dela ocupado
pelo sistema operacional;
Sistemas para Internet – 2º Período - Sistemas Operacionais
8. Gerenciamento de Memória
8.2 Alocação Contígua Simples
● O acesso à memória é livre, inclusive à área do
sistema operacional. Alguns sistemas podem
implementar um registrador que limita a área
acessível da memória por parte do usuário. Caso
seja identificada uma tentativa de acesso a uma
área protegida, um erro é gerada e a instrução é
interrompida.
● Fácil implementação e código reduzido.
● Não permite utilização eficiente dos recursos
computacionais, pois apenas um usuário estará
presente e, caso seu programa não ocupe todo o
espaço disponível na memória, existirá um espaço
livre, sem utilização.
Sistemas para Internet – 2º Período - Sistemas Operacionais
8. Gerenciamento de Memória
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, de forma que seja possível a execução
independente de cada módulo, utilizando uma
mesma área da memória.
Sistemas para Internet – 2º Período - Sistemas Operacionais
8. Gerenciamento de Memória
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 para Internet – 2º Período - Sistemas Operacionais
8. Gerenciamento de Memória
Técnica de Overlay
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 outros módulos
for referenciado pelo módulo principal, aquele será
carregado na memória principal, na área de overlay.
Caso haja uma nova referência a um módulo que já está
na área de overlay, ele não será recarregado. Caso a
nova referência seja a um módulo que está em memória
secundária, ele será carregado na área de overlay,
sobrescrevendo o método que lá estava
Sistemas para Internet – 2º Período - Sistemas Operacionais
8. Gerenciamento de Memória
8.3 Alocação Particionada
● Conforme os sistemas operacionais evoluem,
estes têm possibilitado um melhor aproveitamento
dos recursos computacionais disponíveis. Nos
sistemas
monoprogramáveis,
o
processador
permanecia ocioso por grandes períodos e a
memória principal era subutilizada.
Os sistemas multiprogramáveis são muito mais
eficientes no uso do processador, necessitando
assim que diversos programas estejam na memória
principal ao mesmo tempo e que novas formas de
gerência de memória sejam implementadas.
Sistemas para Internet – 2º Período - Sistemas Operacionais
8. Gerenciamento de Memória
8.4 Alocação Particionada Estática
● O tamanho das partições era estabelecido na fase de
inicialização do sistema, em função dos programas que
executariam no ambiente.
● Sempre que fosse necessário alterar o tamanho de
uma partição, o sistema deveria ser reinicializado. Este é
o modelo de alocação particionada estática ou fixa.
● A proteção, nesse esquema de alocação de memória,
fica por conta de dois registradores que indicam os
limites inferior e superior da partição na qual o programa
está sendo executado.
● O grande defeito da alocação particionada estática,
seja absoluta ou relocável, é o desperdício de espaço
dentro das partições. Fragmentação Interna
Sistemas para Internet – 2º Período - Sistemas Operacionais
8. Gerenciamento de Memória
8.5 Alocação Particionada Dinâmica
● Surge como evolução da alocação particionada
estática, permitindo melhor aproveitamento e maior
compartilhamento da memória, reduzindo o problema da
fragmentação interna.
● Não há partições fixas. Cada programa utiliza uma
partição com o espaço necessário. Com isso, eliminouse o problema da fragmentação interna.
● Quando os programas são finalizados, deixam espaços
vazios na memória. Estes espaços tendem a se tornar
cada vez menores e, assim, não possibilitam a inserção
de novos programas na memória principal. Este tipo de
problema é chamado de fragmentação externa.
Sistemas para Internet – 2º Período - Sistemas Operacionais
8. Gerenciamento de Memória
Estratégias para minimizar os efeitos da
fragmentação externa
● Conforme os programas terminam, os espaços
adjacentes são reunidos, produzindo áreas livres de
tamanho maior
● Envolver a relocação de todas as partições ocupadas,
eliminando todos os espaços entre elas e criando uma
única área livre contígua.
Este mecanismo é conhecido como
particionada dinâmica com relocação.
alocação
Sistemas para Internet – 2º Período - Sistemas Operacionais
8. Gerenciamento de Memória
8.6 Estratégias de Alocação de Partição
● Há três estratégias implementadas pelos sistemas
operacionais para determinar em qual área livre será
carregado um programa para execução. Estas
estratégias tentam evitar ou diminuir o problema da
fragmentação interna.
● A melhor estratégia adotada depende de uma série de
fatores, sendo o mais relevante deles o tamanho dos
programas processados no ambiente.
Sistemas para Internet – 2º Período - Sistemas Operacionais
8. Gerenciamento de Memória
8.6.1 Best Fit
● Aloca o programa na partição que melhor se adapta ao
seu tamanho, ou seja, aquela que deixa um menor
espaço sem utilização.
● Sua grande desvantagem é em função do próprio
algoritmo. Como é alocada a partição que deixa a menor
área livre, a tendência é que a memória fique, cada vez
mais, com pequenas áreas não contíguas, aumentando o
problema da fragmentação.
Sistemas para Internet – 2º Período - Sistemas Operacionais
8. Gerenciamento de Memória
8.6.2 Worst Fit
● Aloca o programa na partição que pior se adapta ao
seu tamanho, ou seja, aquela que deixará um maior
espaço sem utilização.
● Apesar de utilizar as maiores partições, esta técnica
deixa espaços livres maiores que permitem que um
número maior de programas usem a memória principal,
diminuindo o problema da fragmentação.
Sistemas para Internet – 2º Período - Sistemas Operacionais
8. Gerenciamento de Memória
8.6.3 First Fit
● Aloca o programa na primeira partição livre que
encontrar com tamanho suficiente para abrigá-lo.
● Ordena a tabela de partições livres em função do seu
endereço.
● Como o método tenta utilizar primeiro as áreas de
endereços menores, há grandes chances de encontrar
grandes partições nos endereços mais altos.
● Das três estratégias, a first fit é a mais rápida,
consumindo menos recursos do sistema.
Sistemas para Internet – 2º Período - Sistemas Operacionais
8. Gerenciamento de Memória
8.7 Swapping
● A técnica de swapping foi introduzida para contornar o
problema de insuficiência de memória principal.
● O swapping é uma técnica aplicada à gerência de
memória para programas que esperem por memória livre
para serem executados.
Nesta situação, o sistema escolhe um processo
residente, que é transferido da memória principal à
memória secundária ( swap out ), geralmente em disco.
Posteriormente, o processo é carregado de volta à
memória principal ( swap in ).
Sistemas para Internet – 2º Período - Sistemas Operacionais
8. Gerenciamento de Memória
8.7 Swapping
● O conceito de swapping permite um maior
compartilhamento
da
memória
principal
e,
conseqüentemente, maior utilização dos recursos
computacionais.
● Em situações críticas, quando há
disponível, o sistema pode ficar quase
execução de swapping, deixando de
tarefas e impedindo a execução
residentes.
pouca memória
que dedicado à
realizar outras
dos processos
Sistemas para Internet – 2º Período - Sistemas Operacionais
8. Gerenciamento de Memória
8.8 Memória Virtual
● Memória virtual é uma técnica sofisticada e poderosa
de gerência de memória, onde as memórias principal e
secundária são combinadas, dando ao usuário a ilusão
de existir uma memória muito maior que a capacidade
real da memória principal.
● 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 apenas a endereços virtuais. No momento da
execução de uma instrução, o endereço virtual
referenciado é traduzido para um endereço físico, pois o
processador manipula apenas posições da memória
principal. O mecanismo de tradução do endereço virtual
para endereço físico é denominado mapeamento.
Sistemas para Internet – 2º Período - Sistemas Operacionais
8. Gerenciamento de Memória
8.8 Memória Virtual - Páginação
● A memória virtual por paginação é a técnica de
gerência de memória onde o espaço de endereçamento
virtual e o espaço de endereçamento real são divididos
em blocos do mesmo tamanho chamados páginas.
8.8 Memória Virtual - Segmentação
● Memória virtual por segmentação é a técnica de
gerência de memória onde o espaço de endereçamento
virtual é dividido em blocos de tamanhos diferentes
chamados segmentos.
Enquanto na paginação existe o problema da
fragmentação interna, na segmentação surge o problema
da fragmentação externa.
Sistemas para Internet – 2º Período - Sistemas Operacionais
8. Gerenciamento de Memória
Proteção da Memória
● O sistema operacional deve impedir que um processo
tenha acesso ou modifique uma página do sistema sem
autorização.
● Um primeiro nível de proteção é inerente ao próprio
mecanismo de memória virtual por paginação. Neste
esquema, cada processo tem a sua própria tabela de
mapeamento e a tradução dos endereços é realizada
pelo sistema.
A proteção de acesso é realizada individualmente em
cada página da memória principal, utilizando-se as
entradas das tabelas de mapeamento, onde alguns bits
especificam os acessos permitidos.
Sistemas para Internet – 2º Período - Sistemas Operacionais
8. Gerenciamento de Memória
Compartilhamento de Memória
● Em sistemas que implementam memória virtual, é
bastante simples a implementação da reentrância,
possibilitando compartilhamento de código entre os
diversos processos. Para isso, basta que as entradas
das tabelas de mapeamento dos processos apontem
para os mesmos frames na memória principal, evitando,
assim, várias cópias de um mesmo programa na
memória. Apesar de os processos compartilharem as
mesmas páginas de código, cada um possui sua própria
área de dados em páginas independentes.
Sistemas para Internet – 2º Período - Sistemas Operacionais
8. Gerenciamento de Memória
Swapping de Memória Virtual
● A técnica de swapping também pode ser aplicada em
sistemas com memória virtual, permitindo aumentar o
número de processos que compartilham a memória
principal
e,
conseqüentemente,
o
grau
de
multiprogramação do sistema.
● Quando existem novos processos para serem
executados e não há memória principal livre suficiente
para alocação, o sistema utiliza o swapping,
selecionando um ou mais processos para saírem da
memória e oferecer espaço para novos processos.
DESENVOLVIMENTO DE
SISTEMAS PARA INTERNET
9. PLATAFORMA WINDOWS
PRÓXIMA AULA
Download

Slides - Alisson Cleiton