Você está na página 1de 4

FUNDAMENTOS DE 12.

2 Funções
SISTEMAS OPERACIONAIS Geralmente, os programas são armazenados em
Prof° – Rogério Melo memórias secundárias, de uso permanente e não
Aula 05 – Gerência de Memória voláteis, como discos ou fitas. Como o processador
somente executa o que está na memória principal, o
sistema operacional deve sempre transferir
12. Gerência de Memória programas da memória secundária para a principal
antes de serem executados.
Revisando:

Como o tempo de acesso às memórias


secundárias é muito inferior ao tempo de acesso à
memória principal, o sistema operacional deve
buscar reduzir o número de operações de E/S (acessos
à memória secundária) a fim de não comprometer o
desempenho do sistema.
Como vimos anteriormente, um sistema
computacional precisa de memória para armazenar as
instruções e dados que são processados. A memória A gerência de memória deve:
RAM, portanto, está relacionada diretamente com a
 manter na memória principal o maior
velocidade de um computador, juntamente com a
número possível de processos residentes,
“potência” do processador. Dessa forma, quanto maior a
permitindo maximizar o compartilhamento do
capacidade da memória RAM, maio será o desempenho
processador e demais recursos computacionais.
geral do computador.
 Proteger áreas de memória ocupadas por cada
processo, além da área de memória reservada ao
12.1 Introdução Sistema Operacional.
Historicamente, a Memória Principal sempre foi  Mesmo na ausência de espaço livre, o sistema
vista como um recurso escasso e caro. Uma das maiores deve permitir que novos processos sejam
preocupações dos projetistas foi desenvolver sistemas aceitos e executados.
operacionais que não ocupassem muito espaço de
memória e, ao mesmo tempo, otimizasse a utilização  Como isto pode ser realizado? Através de
dos recursos computacionais. Mesmo atualmente, com a swapping, que é a transferência de processos
redução do custo e o aumento considerável da residentes na memória principal para a
capacidade da memória principal, seu gerenciamento é memória secundária.
dos fatores mais importantes no projeto e
implementação dos sistemas operacionais.
12.3 Esquemas para gerência de memória
Enquanto nos sistemas monoprogramáveis a
Podem ser:
gerência de memória não é muito complexa, nos
sistemas multiprogramáveis essa gerência se torna  Alocação Contígua Simples
crítica, devido à necessidade de se maximizar o número  Alocação Particionada
de usuários e aplicações utilizando eficientemente o • Estática
espaço da Memória Principal. • Dinâmica
12.3.1 Alocação Contígua Simples O tamanho dessas partições, estabelecido em
tempo de inicialização do sistema, era definido em
Este tipo de alocação foi implementado nos
função do tamanho dos programas que seriam
primeiros sistemas operacionais.
executados.
Nesse modelo, a memória principal é dividida
Sempre que fosse necessária a alteração do
em duas partes, uma para o sistema operacional e a
tamanho de uma partição, o sistema deveria ser
outra para o programa do usuário. Dessa forma, o
inicializado novamente com uma nova configuração.
programador deve desenvolver suas aplicações
preocupado apenas em não ultrapassar o espaço de
memória disponível.
Neste esquema o usuário tem total controle
sobre toda a memória, exceto naquela área onde reside o
sistema operacional, cujo endereçamento é protegido
por um registrador, impedindo acesso indevido pelo
usuário.

Inicialmente, os programas só podiam ser


carregados e executados em apenas uma partição
específica, especificado no seu próprio código, mesmo
que as outras estivessem disponíveis. A esse tipo de
alocação de memória chamou-se alocação
particionada estática absoluta.
Com a evolução, os programas então passaram
a ser alocados em qualquer partição livre,
Apesar de simples implementação e código independente do endereço inicial e da partição para a
reduzido, a alocação contígua simples não permite a qual o código foi criado. A esse tipo de alocação deu-se
utilização eficiente dos recursos do sistema, pois apenas o nome de alocação particionada estática relocável.
um usuário pode dispor destes recursos. Há inclusive um Em ambos os tipos de alocação, os programas
desperdício de espaço de memória, caso o programa normalmente não ocupam totalmente as partições
não venha a ocupar toda a área reservada para ele. onde são alocados, deixando algum espaço livre dentro
das partições. Este tipo de problema, decorrente do
esquema de alocação fixa de partições, é chamado
fragmentação interna.

12.3.2 Alocação Particionada

 Alocação Particionada Estática


Nos primeiros sistemas multiprogramáveis a Fragmentação interna – falta de espaço para D e B iniciarem
memória era dividida em blocos de tamanho fixo,
chamados partições.
 Alocação Particionada Dinâmica primeira solução, conforme os programas terminam,
apenas os espaços livres adjacentes são reunidos,
A alocação particionada estática deixou clara a
produzindo áreas livres de tamanho maior. Na figura a
necessidade de uma nova forma de gerência de
seguir, caso o programa C termine, uma área de 8kb
memória principal, onde o problema da fragmentação
será criada.
interna fosse reduzido e, conseqüentemente, o grau de
compartilhamento da memória aumentado.
Na alocação particionada dinâmica, a partições
de tamanho fixo foram eliminadas. Nesse esquema,
cada programa, ao ser carregado, utilizaria o espaço
necessário à sua execução, tornando esse espaço a sua
partição, eliminando, também a fragmentação interna.

A segunda solução envolve a relocação de


todas as partições ocupadas, eliminado todos os
espaços entre elas e criando uma única área livre
contígua.

Porém, com o término de alguns programas e o


início de outros, passam a existir na memória blocos
cada vez menores na memória, não permitindo o
ingresso de novos programas. A este tipo de problema
dá-se o nome de fragmentação externa.
No exemplo da figura abaixo, mesmo existindo
12kb livres de memória principal, o programa D, que
necessita de 6kb de espaço, não poderá ser carregado
para execução, pois este espaço não está disposto
contiguamente.

Estas soluções ajudaram a diminuir os


problemas da fragmentação (tanto interna como
externa), mas, devido á complexidade dos algoritmos,
nem todos os sistemas operacionais as utilizaram.

12.4 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á alocado para execução.
Existem duas soluções para o problema da
fragmentação externa da memória principal. Na
A melhor estratégia depende de uma série de
fatores, sendo o mais importante o tamanho dos
programas executados.

São estratégias de alocação:

- Best-fit: é escolhida a melhor partição, ou seja, aquela


que deixa o menor espaço sem utilização.

- Worst-fit: aloca o programa na pior partição, ou seja,


aquela que deixa o maior espaço livre. Esta técnica 12.6 Memória Virtual
acaba deixando espaços livres grandes o suficiente para
que outros programas utilizem esses espaços, Memória virtual é uma técnica sofisticada e
diminuindo ou retardando a fragmentação. poderosa de gerência de memória onde as memórias
principal e secundária são combinadas, dando ao
usuário a impressão de que existe muito mais
- First-fit: aloca o programa na primeira partição que o memória do que a capacidade real de memória
couber. É a estratégia mais rápida, consumindo menos principal.
recursos do sistema. Essa técnica é uma forma de contornar o
problema de falta de memória RAM num computador
utilizando a própria memória interna do HD (disco
12.5 Swapping rígido) através da criação virtual de memória estendida
Visa resolver o problema da falta de memória que funciona da mesma maneira que a RAM embora
principal num sistema. muito mais lentamente, uma vez que isto acontece ao
nível do HD e, como se sabe, a velocidade dos discos
Toda vez que um programa precisa ser alocado
rígidos ainda é muito inferior à de um pente de
para execução e não há espaço na memória principal, o
memória RAM normal.
sistema operacional escolhe entre os processos alocados
que não tem previsão de utilizar a CPU nos próximos
instantes, e “descarrega” este processo da memória para
uma área especial em disco, chamada arquivo de swap,
O processo então fica armazenado
temporariamente no disco. Durante esse tempo, outro
processo que necessitava de memória entra em execução
ocupando o espaço deixado pelo que saiu.
Pouco antes de chegar a vez do processo
armazenado em swap utilizar a CPU, o sistema escolhe
um outro processo para descarregar para swap e
devolve o anterior da área de swap para a memória
principal, para que este possa ser executado novamente.
E vai trabalhando assim até que os processos vão
terminando. O problema dessa técnica é que pode
provocar um número excessivo de acesso à memória
secundária (disco), levando o sistema a uma queda de
desempenho.

Você também pode gostar