Você está na página 1de 9

Sistemas Operacionais

AULA 13 - Gerncia de Memria


Como sabemos, os computadores utilizam uma hierarquia de memria em sua organizao,
combinando memrias volteis e no-volteis, tais como: memria cache, memria principal e
memria secundria. Ao sistema operacional destinada a funo de coordenar e gerenciar a
utilizao dessas memrias de forma eficiente. Este servio implementado pelo sistema
operacional atravs do gerenciador de memria.
O gerenciador de memria controla quais partes da memria esto sendo utilizadas e quais no
esto. Alm disso, ele responsvel por alocar espao em memria aos processos que sero
executados e liberar as posies de memria ocupadas quando os processos so finalizados. Uma
outra funcionalidade do gerenciador de memria controlar o swapping de informao, constante
na execuo das aplicaes. Para iniciar a discusso sobre o tema da aula vamos entender,
primeiramente, a funo da MMU.

Unidade de Gerncia de Memria (Memory Management Unit (MMU)


A MMU um mdulo de hardware que faz o mapeamento entre os endereos lgicos (end. da
memria virtual) e os endereos fsicos da memria (RAM), ou seja, um dispositivo que
transforma endereos virtuais em endereos fsicos. Para isso, a MMU normalmente traduz
nmero de pginas virtuais para nmero de pginas fsicas utilizando uma cache chamada
Translation Lookaside Buffer (TLB). Na figura abaixo temos ilustrado o mecanismo de traduo
dos endereos.

Prof. Dr. Jean M. Laine

Sistemas Operacionais
Em geral, os programas precisam ser compilados para que possam ser executados no sistema
computacional. Vrias atividades ocorrem entre o instante em que o mesmo compilado e o
momento em que ele inicia sua execuo: gerao do cdigo objeto, cdigo executvel, alocao
em memria, nova entrada no PCB, insero da referncia do processo na fila de apto, etc. O
mecanismo tradicional de transformao de programas em processos ilustrado abaixo:

Gerenciamento Bsico de Memria


Podemos classificar os gerenciadores de memria em dois tipos: os que permitem as trocas de
processos entre a memria principal e o disco (troca de processos e paginao, mais complexos) e
os que no permitem (muito mais simplificados e limitados). A necessidade da troca de processos
e paginao acontece devido a quantidade insuficiente de memria principal para armazenar vrios
programas ao mesmo tempo. Hoje em dia, as mquinas adotam um modelo denominado
multiprogramao e, portanto, os algoritmos necessitam gerenciar vrias aplicaes que concorrem
ao uso das unidades de processamento e armazenamento de dados.

Monoprogramao sem Troca de Processos ou Paginao


Este o esquema mais simples de gerenciamento de memria. Neste caso a memria
compartilhada entre o sistema operacional e o programa usurio. importante observar que a
Prof. Dr. Jean M. Laine

Sistemas Operacionais
monoprogramao indica que somente um programa usurio carregado na memria e executado
por vez. Algumas formas de organizar a memria com um sistema operacional e um processo de
usurio so mostradas na Figura 1.
O modelo apresentado em (a) foi utilizado em computadores de grande porte mas no mais
empregado. J a segunda organizao (b) ainda utilizada em alguns palmtops e em sistemas
embarcados. A estratgia ilustrada em (c) esteve presente nos primeiros computadores pessoais,
onde a parte do sistema operacional contida em ROM denominada BIOS (Basic Input Output
System).
0xFFF.

0xFFF.

Programa
de usurio

SO em
RAM

Drivers de 0xFFF.
dispositivos
em ROM
Programa
de usurio

SO em
RAM

Programa
de usurio
0

0
(a)

SO em
RAM

(b)

(c)

Figura 1. Formas de organizao da memria.


Pelo fato de permitir que apenas um nico programa usurio seja carregado em memria a cada
instante, a monoprogramao raramente usada hoje em dia, a no ser em sistemas embarcados
simples.

Multiprogramao com Parties Fixas


Os sistemas operacionais modernos permitem que mais de um processo seja carregado em
memria, de modo que quando um fica bloqueado esperando por uma operao de E/S outro, que
esteja carregado em memria, poder usar a CPU. Dessa forma, a multiprogramao ajuda a
melhorar a utilizao da CPU evitando desperdcios de ciclo de processamento.
Para que seja possvel a multiprogramao, podemos dividir a memria em n parties
(provavelmente de tamanhos diferentes). Os jobs sero colocados em filas de entrada associadas
menor partio capaz de armazen-lo. Pelo fato de usarmos parties de tamanho fixo, todo o
restante de espao de memria no utilizado pelo job ser perdido. Este desperdcio de memria
chamado de fragmentao interna (espao de memria perdido dentro da rea alocada ao
processo). Por outro lado, imagine que exista duas parties livres, uma de 25 e outra de 100
Prof. Dr. Jean M. Laine

Sistemas Operacionais
Kbytes, no contguas. Nesse instante criado um processo de 110 Kbytes que no poder ser
carregado em memria pela forma como ela gerenciada. Este problema ocasiona o que
chamamos de fragmentao externa (memria perdida fora da rea ocupada por um processo). A
Figura 2 ilustra o esquema de organizao com parties fixas.
O problema da organizao em mltiplas filas que jobs pequenos podem precisar esperar pela
liberao de memria (partio mais adequada para o mesmo), embora exista memria disponvel
(partio grande), como o caso da partio 1 e 3. Por outro lado, isso no ocorre no esquema de
uma nica fila. Nesta organizao (b) sempre que uma nova partio liberada o job mais prximo
do incio da fila e que caiba nessa partio pode ser carregado nela para ser executado pela CPU.
No entanto, esta estratgia pode desperdiar muito espao ao armazenar um job pequeno em uma
partio grande. Assim, uma opo mais interessante seria pesquisar em toda a fila de entrada e
alocar a partio disponvel ao maior job que pudesse ser carregado. Qual o problema dessa
soluo? (Discriminar jobs pequenos!) Qual a soluo? (Ter pelo menos uma partio pequena!).
Existe uma outra possibilidade consiste em estabelecer uma quantidade mxima k de vezes que um
job pudesse ser excludo da escolha de receber uma partio. Assim, sempre que ele fosse
preterido teria seu contador incrementado e, ao chegar em k vezes, ele teria que receber uma
partio.

800 K
Partio 4

800 K
Partio 4

700 K
Partio 3

700 K
Partio 3

400 K
Partio 2

400 K
Partio 2

200 K
Partio 1

200 K
Partio 1

100 K
SO

100 K
SO

0
(a)

0
(b)

Figura 2. Parties fixas com filas de entrada separadas (a) e com uma nica fila (b).

Prof. Dr. Jean M. Laine

Sistemas Operacionais

Multiprogramao com Parties Variveis


Neste esquema de organizao a quantidade e o tamanho dos processos na memria podem variar
dinamicamente com o passar do tempo, o tamanho das parties ajustado dinamicamente s
necessidades exatas dos processos. A Figura 3 ilustra o funcionamento deste algoritmo,
considerando a ocorrncia de swapping (trazer um processo do disco para a memria [swap in]
execut-lo durante um intervalo de tempo e depois devolv-lo ao disco [swap out]). Inicialmente,
s o processo A est alocado na memria e com o passar do tempo os processos B, C, D e E
tambm so carregados. Diferentemente do esquema de partio fixa, na multiprogramao com
parties variveis a o tamanho e a localizao dos processos variam a medida que o mesmo deixa
e retorna memria. Uma das grandes vantagens desta estratgia que a flexibilidade obtida
melhora bastante a utilizao da memria, evitando desperdcios de espao. Por outro lado, a
gerncia dos espaos vazios mais complicada, bem como a alocao e liberao das parties. O
sistema operacional mantm uma lista de espaos livres na memria fsica. Sempre que um novo
processo criado esta lista percorrida e ser usada uma lacuna maior ou igual ao tamanho do
processo em questo. O espao que ultrapassar o tamanho do processo pode dar origem a uma
nova partio. Existem algumas formas de percorrer esta lista:
1. first-fit: inicia a procura a partir da primeira pgina de memria (parte baixa) e vai
varrendo a memria at encontrar a primeira lacuna suficientemente grande para armazenar
o processo.
2. best-fit: varre toda a memria e escolhe a pgina mais ajustada ao tamanho do processo.
3. worst-fit: varre toda a memria e escolhe a pgina menos ajustada ao tamanho do
processo.
4. next-fit: segue a mesma idia do first-fit, mas somente a primeira busca iniciada na parte
baixa da memria (primeira pgina), as outras iniciam onde terminou a ltima. Usa-se uma
lista circular para permitir que, eventualmente, toda a memria seja percorrida.
Existe a possibilidade de formar buracos por toda a memria ao longo da execuo dos processos,
o que no desejvel. Uma das formas de eliminar tais buracos mover todos os processos para a
parte mais baixa da memria. Tal tcnica conhecida como compactao de memria. No entanto,
perde-se muito tempo de processamento para promover esta organizao (desvantagem), logo no
adequado realizar esta tarefa constantemente.
Algumas linguagens de programao permitem que a rea de dados alocados por um processo
cresa ao longo de sua execuo. Com isso, ocorrero alguns problemas sempre que um processo
Prof. Dr. Jean M. Laine

Sistemas Operacionais
necessita crescer e sua partio no permite nenhuma expanso. Se houver algum espao adjacente
ao processo que puder ser alocado a ele, o crescimento ser permitido sem que seja necessrio
mover o mesmo para outra partio maior (Figura 4). Caso no haja espao para aumentar o
tamanho da partio ou no tenha uma partio grande o suficiente para realocar o processo, ento
um ou mais processos devero ser removidos para o disco (swapping). Se no for possvel realizar
o swapping (rea de swapping cheia) o processo que deseja crescer dever esperar ou ser
eliminado.

tempo

E
A

SO

SO

SO

SO

SO

SO

SO

Figura 3. Alocao com parties variveis.

Espao para expanso


B

Espao em uso

Espao para expanso


A

Espao em uso

SO

Figura 4. Alocao de espao com possibilidade de expanso.

Prof. Dr. Jean M. Laine

Sistemas Operacionais

Gerncia de Memria com Mapeamento de Bits


Basicamente, existem dois modos de gerenciar o uso da memria: com mapa de bits ou com uma
lista encadeada indicando os espaos ocupados e os disponveis. No primeiro modo, a cada
unidade de alocao da memria atribuido um bit para dizer se a posio est livre ou ocupada.
Assim, o conjunto de todos os bits representado em uma tabela, denominada mapa de bits, que
mapeia todas as posies de memria dizendo o estado de cada uma. Devemos ressaltar que o
tamanho da unidade de alocao muito importante e quanto menor as unidades, maior ser o
mapa de bits. Como o mapa de bits tambm armazenado em memria seu tamanho ocupar
espao til e, consequentemente, uma parte da memria ser desperdiada.
Quando um processo de k bits necessitar ser armazenado em memria a MMU dever procurar no
mapa k bits consecutivos indicando que a posio est vazia (pode ser o bit 0 ou 1). Como varrer o
mapa de bits lento este mtodo quase no usado.

Figura 5. Representao dos espaos de memria com mapa de bits e lista ligada. (a) 5 segmentos
alocados a processos e trs livres. (b) mapa de bits. (c) lista ligada.

Gerncia de Memria com Lista Ligada


As representaes dos espaos livres e ocupados so feitos atravs de uma lista ligada, onde P
indica uma regio ocupada por um processo e H um espao livre de memria (Figura 5).
A lista pode estar ordenada por endereos de memria, conforme ilustrado na figura acima. Assim
como no mapa de bits, qualquer alterao nas posies de memria deve gerar uma alterao no
mapeamento promovido pela lista ligada. Se a lista estiver ordenada por endereo uma atualizao
mais rpida permitida sempre que um processo terminar de executar suas instrues ou for
Prof. Dr. Jean M. Laine

Sistemas Operacionais
retirado da memria. A utilizao de uma lista duplamente encadeada facilita no processo de
atualizao da mesma.
Existem alguns algoritmos que podem ser utilizados para alocar as informaes na memria:
1. algoritmo da primeira alocao (first fit): procura-se pelo primeiro espao na lista o
suficientemente grande para armazenar o processo. um algoritmo rpido pois ele gasta o
tempo mnimo em procura. Se o processo no ocupa todo o espao o restante
disponibilizado como buraco na lista. A pesquisa por espao sempre inicia na parte baixa
de memria, independentemente dos locais escolhidos para alocar os dados.
2. algoritmo da melhor alocao (best fit): busca em toda a lista o espao cujo o tamanho seja
o mais prximo possvel do tamanho do processo. Este algoritmo mais lento que o
anterior pois precisa pesquisar em toda a lista para descobrir qual a melhor opo.
3. algoritmo da prxima alocao (next fit): semelhante ao first-fit, s que a prxima
alocao inicia com uma busta a partir da pgina onde terminou a alocao anterior e no
da parte baixa da memria.
4. algoritmo da pior alocao (worst fit): procura pelo maior espao capaz de armazenar o
processo, de tal forma que o espao restante seja grande o suficiente para armazenar outro
processo.
Questionamento: que estratgia poderiamos adotar, em relao a lista encadeada, para aumentar o
desempenho dos algortmos ao procurar um espao disponvel para alocao?

Prof. Dr. Jean M. Laine

Sistemas Operacionais

Exerccios
01. Qual a funo da MMU na gerncia de memria?
02. O que o TLB?
03. Explique a importncia do TLB no desempenho da MMU.
04. Qual o tipo de fragmentao apresentado pelos mtodos de gerncia de memria baseados
em parties fixas e por parties variveis?
05. Qual a diferena entre endereo fsico e virtual?
06. Qual a diferena entre monoprogramao e multiprogramao?
07. Explique o que a atividade de swapping e diga como ela pode prejudicar o desempenho
do sistema computacional.
08. Quando mais interessante utilizarmos o algoritmo best-fit? E o worst-fit?
09. Considerando parties fixas de memria de 100K, 500K, 200K, 300K e 600K (nessa
ordem), como cada um dos algoritmos first-fit, best-fit e worst-fit colocaria processos de
212K, 417K, 112K e 426K (nessa ordem)? Calcule a quantidade de espao desperdiado
em cada algoritmo.
10. Considere um sistema cuja gerncia de memria feita atravs de parties variveis.
Inicialmente, existem as seguintes pginas: 10K, 4K, 20K, 18K, 7K, 9K, 12K e 13K, nessa
ordem. Desenhe a memria com suas pginas e mostre como as pginas sero ocupadas
pelos processos de tamanho: 5K, 10K, 15K, 8K, 3K, 7K e 6K. Considere essa ordem de
solicitao. Simule os seguintes algoritmos:
a. First-fit
b. Best-fit
c. Worst-fit
d. Next-fit

Bibliografia
TANENBAUM, A. S. Sistemas Operacionais Modernos. 2 Edio. Prentice Hall, 2003.

Prof. Dr. Jean M. Laine

Você também pode gostar