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 2

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
0 (a)

Programa de usurio
0 (b)

SO em RAM
(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 3

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 700 K Partio 3 400 K Partio 2 200 K Partio 1 100 K SO 0 (a) (b) SO Partio 1 Partio 2 Partio 3 Partio 4

800 K 700 K

400 K 200 K 100 K 0

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 5

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

C B B

C B

C B

E A A A D SO SO SO SO SO D SO D 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 7

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