Escolar Documentos
Profissional Documentos
Cultura Documentos
AULA 13 - Gerência de Memória
AULA 13 - Gerência de Memória
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:
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)
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).
Sistemas Operacionais
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
Espao em uso
Espao em uso
SO
Sistemas Operacionais
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.
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?
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.