Você está na página 1de 41

Gerência

de
Memória

Renata Mesquita da Silva Santos


(renata.mesquita@gsuite.iff.edu.br)
2
Agenda
1. Introdução
2. Funções de Gerência de Memória
3. Gerência de Memória em Sistemas Multiprogramáveis
4. A Organização Hierárquica da Memória
5. Alocação Contígua Simples
6. Alocação Particionada

Alocação Particionada Estática

Alocação Particionada Dinâmica

Estratégias de Alocação de Partição
7. Swapping
8. Memória Virtual
3 2
Introduçã o

• A memória é um importante recurso que deve ser


gerenciado cuidadosamente.

• É senso comum perceber que, embora a capacidade de


memória disponível nos sistemas de computação cada vez
aumente mais, os desenvolvedores de software
demandam mais memória para que seus programas
possam ser armazenados e executados.
4 2
Introduçã o

• A questão é que a memória, ao contrário do processador,


possui um limite e por isso seu gerenciamento é crítico
para o funcionamento dos processos pelo sistema
operacional.

• Gerenciamento de memória é a tarefa desempenhada


pela parte do Sistema Operacional que controla o uso da
memória.
5 2
Funçõ es da Gerência de
Memó ria
• É função dessa parte do SO:


conhecer quais regiões da memória estão em uso e
quais não estão sendo usadas;

alocar memória para processos quando eles
necessitarem e desalocá-la quando os processos
terminarem de ser executados;

gerenciar o swapping entre a memória principal e o
disco, quando a memória principal não for grande o
suficiente para comportar todos os processos.
6 2
A Gerência de Memó ria em
Sistemas Multiprogramados
• A necessidade de manter múltiplos programas ativos na
memória do sistema impõe outra necessidade: a de
controlar como esta memória é utilizada por estes vários
programas.

• O gerenciamento de memória é, portanto, o resultado da


aplicação de duas práticas distintas dentro de um sistema
de computação:

Como a memória é vista, isto é, como pode ser
utilizada pelos processos existentes neste sistema.

Como os processos são tratados pelo SO quanto às
suas necessidades de uso de memória.
7 2
A Organizaçã o Hierá rquica da
Memó ria
• Em um sistema de computação, o armazenamento de
dados ocorre em diversos níveis.

• Isso quer dizer que o armazenamento é realizado em


diferentes tipos de dispositivos devido a quatro fatores
básicos:

1) Tempo de acesso.
2) Velocidade de operação.
3) Custo por unidade de armazenamento.
4) Capacidade de armazenamento.
8 2
A Organizaçã o Hierá rquica da
Memó ria
• Com isso, o projetista de um sistema operacional
determina quanto de cada tipo de memória será
necessário para que o sistema seja, ao mesmo tempo,
eficiente e economicamente viável.

• Ocorre que quanto mais rápida mais cara a memória e


menor sua capacidade de armazenamento de dados.
9 2
A Organizaçã o Hierá rquica da
Memó ria
11 2
Alocaçã o Contígua Simples

• A alocação contígua simples foi implementada nos primeiros


sistemas operacionais, porém ainda está presente em alguns
sistemas monoprogramáveis.

• Nesse tipo de organização, a memória principal é subdividida


em duas áreas: uma para o sistema operacional e outra para o
programa do usuário.

• Dessa forma, o programador deve desenvolver suas aplicações


preocupado, apenas, em não ultrapassar o espaço de memória
disponível, ou seja, a diferença entre o tamanho total da
memória principal e a área ocupada pelo sistema operacional.
12 2
Alocaçã o Contígua Simples
13 2
Alocaçã o Contígua Simples

• Apesar da fácil implementação e do


código reduzido, a alocação contígua
simples não permite a utilização
eficiente dos recursos
computacionais, pois apenas um
usuário pode dispor desses recursos.

• Em relação à memória principal, caso


o programa do usuário não a
preencha totalmente existirá um
espaço de memória livre sem
utilização.
14 2
Alocaçã o Particionada

• Os sistemas operacionais evoluíram no sentido de


proporcionar melhor aproveitamento dos recursos disponíveis.

• Nos sistemas monoprogramáveis, o processador permanece


grande parte do tempo ocioso e a memória principal é
subutilizada.

• Os sistemas multiprogramáveis já 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 da memória sejam
implementadas.
15 2
Alocaçã o Particionada
Alocaçã o Particionada Está tica
• Nos primeiros sistemas multiprogramáveis, a memória era
dividida em pedaços de tamanho fixo, chamados partições.

• O tamanho das partições, estabelecido na fase de inicialização


do sistema, era definido em função do tamanho dos programas
que executariam no ambiente.

• Sempre que fosse necessária a alteração do tamanho de uma


partição, o sistema deveria ser desativado e reinicializado com
uma nova configuração.

• Esse tipo de gerência de memória é conhecido como alocação


particionada estática ou fixa.
16 2
Alocaçã o Particionada
Alocaçã o Particionada Está tica
17 2
Alocaçã o Particionada
Alocaçã o Particionada Está tica
• A alocação particionada estática tinha como grandes
problemas:


O fato de os programas, normalmente, não preencherem
totalmente as partições onde eram carregados,
desperdiçando espaço.

Se um programa fosse maior do que qualquer partição livre,
ele ficaria aguardando uma que o acomodasse, mesmo se
existisse duas ou mais partições adjacentes que, somadas,
totalizassem o tamanho do programa.

Este tipo de problema, onde pedaços de memória ficam
impedidos de serem usados por outros programas, é
chamado de fragmentação.
18 2
Alocaçã o Particionada
Alocaçã o Particionada Está tica
19 2
Alocaçã o Particionada
Alocaçã o Particionada Dinâ mica
• Dado o problema da fragmentação na alocação particionada
estática, foi necessário outro tipo de alocação como solução e,
consequentemente, o aumento do compartilhamento da
memória.

• Na alocação particionada dinâmica, foi eliminado o conceito


de partições de tamanho fixo.

• Nesse esquema, cada programa utilizaria o espaço que


necessitasse, passando esse bloco a ser sua partição.
20 2
Alocaçã o Particionada
Alocaçã o Particionada Dinâ mica
21 2
Alocaçã o Particionada
Alocaçã o Particionada Dinâ mica
• A princípio, o problema da fragmentação pareceu estar
resolvido.

• Porém, neste caso, a fragmentação começará a ocorrer,


realmente, quando os programas forem terminando e
deixando espaços cada vez menores na memória, não
permitindo o ingresso de novos programas.
22 2
Alocaçã o Particionada
Alocaçã o Particionada Dinâ mica
• Para exemplificar este fato,
veja os seguintes
programas; com o término
de B e E, mesmo existindo
KB livres de memória, o
programa D, de 6 KB, não
poderá ser carregado.
23 2
Alocaçã o Particionada
Alocaçã o Particionada Dinâ mica
• Depois de já ter sido detectada a fragmentação da memória, há
duas soluções para o problema:

a)Caso o programa C termine, o sistema pode reunir apenas


os espaços adjacentes, produzindo espaço de tamanho 8
KB.

b) Caso o programa C continue executando, o sistema pode


realocar todas as partições ocupadas, eliminando todos os
espaços entre elas e criando uma única área livre contígua.
24 2
Alocaçã o Particionada
Alocaçã o Particionada Dinâ mica
25 2
Alocaçã o Particionada
Alocaçã o Particionada Dinâ mica
26 2
Alocaçã o Particionada

• A complexidade do algoritmo de desfragmentação e o


consumo de recursos do sistema, como processador e área em
disco, podem tornar este processo inviável.

• É importante perceber que, nesses dois tipos de


gerenciamento de memória apresentados, o espaço de
endereçamento é igual ao tamanho da memória primária
existente no sistema.
27 2
Alocaçã o Particionada
Estratégias de Alocaçã o de Partição
• Os sistemas operacionais implementam, basicamente, três
estratégias para determinar em qual área livre um programa
será carregado para execução.

• Essas estratégias tentam evitar ou diminuir o problema da


fragmentação externa.

• A melhor estratégia a ser adotada por um sistema depende de


uma série de fatores, sendo o mais importante o tamanho dos
programas processados no ambiente.
28 2
Alocaçã o Particionada
Estratégias de Alocaçã o de Partição
• Independentemente do algoritmo utilizado, o sistema possui
uma lista de áreas livres, com o endereço e tamanho de cada
área.
29 2
Alocaçã o Particionada
Estratégias de Alocaçã o de Partição
• Best-fit


Na estratégia best-fit, a melhor partição é escolhida, ou
seja, aquela em que o programa deixa o menor espaço
sem utilização.

Nesse algoritmo, a lista de áreas livres está ordenada por
tamanho, diminuindo o tempo de busca por uma área
desocupada.

Desvantagem: Como é alocada a partição que deixa a
menor área livre, a tendência é que cada vez mais a
memória fique com pequenas áreas não contíguas,
aumentando o problema da fragmentação.
30 2
Alocaçã o Particionada
Estratégias de Alocaçã o de Partição
• Worst-fit


Na estratégia worst-fit, a pior partição é escolhida, ou
seja, aquela em que o programa deixa o maior espaço
sem utilização.

Apesar de utilizar as maiores partições, a técnica de worst-
fit deixa espaços livres maiores que permitem a um maior
número de programas utilizar a memória, diminuindo o
problema da fragmentação.
31 2
Alocaçã o Particionada
Estratégias de Alocaçã o de Partição
• First-fit


Na estratégia first-fit, a primeira partição livre de tamanho
suficiente para carregar o programa é escolhida.

Nesse algoritmo, a lista de áreas livres está ordenada por
endereços crescentemente.

Como o método tenta primeiro utilizar as áreas livres de
endereços mais baixos, existe uma grande chance de se
obter uma grande partição livre nos endereços de
memória mais altos.

Das três estratégias apresentadas, a first-fit é a mais
rápida, consumindo menos recursos do sistema.
32 2
33 2
Swapping

• Mesmo com o aumento da eficiência da multiprogramação e,


particularmente, da gerência de memória, muitas vezes um
programa não podia ser executado por falta de uma partição
livre disponível.

• A técnica de swapping foi introduzida para contornar o


problema da insuficiência de memória principal.

• Em todos os esquemas apresentados anteriormente, um


processo permanecia na memória principal até o final da sua
execução, inclusive nos momentos em que esperava por um
evento, como uma operação de leitura ou gravação.
34 2
Swapping

• O swapping é uma técnica aplicada à gerência de memória


para programas que esperam por memória livre para serem
executados.

• Nesta situação, o sistema escolhe um processo residente, que é


transferido da memória principal para a memória secundária
(swap out), geralmente disco.

• Posteriormente, o processo é carregado de volta da memória


secundária para a memória principal (swap in) e pode
continuar sua execução como se nada tivesse ocorrido.
35 2
Swapping

• O conceito de swapping
permite um maior
compartilhamento da
memória principal e,
consequentemente,
uma maior utilização
dos recursos do sistema
computacional.
36 2
Swapping

• Seu maior problema é o elevado custo das operações de


entrada/saída (swap in/out).

• Em momentos em que há pouca memória disponível, o sistema


pode ficar quase que dedicado à realização de swapping,
deixando de executar outras tarefas e impedindo a execução
dos demais processos residentes.

• Esta situação é denominada thrashing, e é considerada um


problema crítico na gerência de memória dos sistemas
operacionais.
37 2
Memó ria Virtual

• O conceito de relocação de memória possibilitou o


desenvolvimento de um meio mais otimizado de utilização de
memória chamado memória virtual.

• Memória virtual é uma técnica sofisticada e poderosa de


gerência de memória, em que 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.

• O conceito de memória virtual está fundamentado em


desvincular o endereçamento feito pelo programa dos
endereços físicos da memória principal.
38 2
Memó ria Virtual

• Assim, programas e suas estruturas de dados deixam de estar


limitados ao tamanho da memória física disponível, pois
podem possuir endereços associados à memória secundária.

• Outra vantagem da técnica de memória virtual é permitir um


número maior de processos compartilhando a memória
principal, já que apenas partes de cada processo estarão
residentes.

• Isto leva a uma utilização mais eficiente também do


processador.
39 2
Memó ria Virtual
40 2
Memó ria Virtual

• A memória virtual de um sistema é, de fato, o(s) arquivo(s) de


troca ou swap file(s) gravado(s) no disco rígido.

• Portanto, a memória total de um sistema, que possui memória


virtual, é a soma de sua memória física, de tamanho fixo, com a
memória virtual.

• Este conceito surgiu em 1960 no computador Atlas, construído


pela Universidade de Manchester (Inglaterra), embora sua
utilização mais ampla tenha acontecido recentemente.
41
Bibliografia

BIBLIOGRAFIA BÁSICA

SILBERSCHATZ, Abrahan; GALVIN, Peter. Fundamentos De Sistemas
Operacionais – Princípios Básicos. São Paulo. LTC, 2013.

MACHADO, Francis Berenger; MAIA, Luiz Paulo. Arquitetura De
Sistemas Operacionais. LTC, 2007.

OLIVEIRA, R. S., CARISSIMI, A. S., TOSCANI, S. S. Sistemas
Operacionais. Editora Sagra Luzzatto, 2004.

BIBLIOGRAFIA COMPLEMENTAR

ALBERT, S. Woodhull; TANENBAUM, Andrew S. Sistemas Operacionais
- Projeto eImplementação. ArtMed, 2008.

DEITEL, H. M., DEITEL, P.J., CHOFINES, D.R. Sistemas Operacionais.
Pearson Prenticce-Hall, 2005.
Gerência
de
Memória

Renata Mesquita da Silva Santos


(renata.mesquita@gsuite.iff.edu.br)

Você também pode gostar