Você está na página 1de 61

Sistemas Operacionais

Gerenciamento de Memria
Prof. Dr. Mrcio Andrey Teixeira

Gerenciamento de Memria - Introduo

Todo programador deseja dispor de uma memria infinitamente grande, rpida e no voltil e tambm
de baixo custo.
Porm, infelizmente, com a tecnologia atual, isso no possvel, tornando-se necessrio utilizar uma
hierarquia de memria, que combina: uma memria principal, uma memria secundria, e cabe ao
sistema operacional coordenar a utilizao destas memrias.

A parte do sistema operacional que gerencia a hierarquia de memria o gerenciador de memria.

Funo do gerenciador de memria:Manter o controle de quais partes do de memria esto em uso e


quais partes no esto, alocando memria aos processos quando eles precisarem, e liberando a memria
quando esses processos terminam. Alm de de gerenciar a troca de processos (swapping) entre a
memria e o disco.

Prof. Dr. Mrcio Andrey Teixeira Sistemas Operacionais

Gerenciamento de Memria - Introduo

Gerenciamento bsico de memria


Os sistemas de gerenciamento de memrias podem ser dividido em duas partes:
1 Sistemas que, durante a execuo levam e trazem processos da memria principal para a
memria secundria (disco).
2 Sistemas mais simples, que no o fazem.
Monoprogramao sem trocas de processos ou paginao
Quando se utiliza um esquema mais simples de gerenciamento de memria, a memria
compartilhada entre o sistema operacional e o programa, e somente um programa executado por
vez.
Trs variaes desse esquema so mostrado na Figura 1.

Prof. Dr. Mrcio Andrey Teixeira Sistemas Operacionais

Gerenciamento de Memria - Introduo

Figura 1. Trs maneiras simples de organizar a memria com um sistema operacional

a) Inicialmente muito empregado em computadores de grande porte e minicomputadores.


Atualmente no mais usado.
b) Utilizado em alguns computadores de mo (palmtop) e em sistemas embracados.
c) Faz parte dos primeiros computadores pessoais (por exemplo, MS-DOS), nos quais a parte do
sistema contida em ROM denominada de BIOS.
Prof. Dr. Mrcio Andrey Teixeira Sistemas Operacionais

Gerenciamento de Memria - Introduo

Quando um sistema organizado desta maneira, somente um processo pode ser executado em um
determinado instante.
Quando um usurio executava um programa, o prompt do sistema ficava ocupado aguardando o
trmino do processo.
Quando um processo era encerrado, o prompt ficava livre para o usurio entrar com outro comando
(ou processo a ser executado).

Multiprogramao com parties fixas


A monoprogramao pouco utilizado hoje em dia, geralmente utiliaza-se apenas em sistemas
embarcados simples.
A maioria dos sistemas modernos permitem que mltiplos processos estejam sempre em execuo
simultnea. Se um processo for bloqueado, outro entre em seu lugar na CPU e executa. Assim, a
multiprogramao aumenta a utilizao da CPU.

Prof. Dr. Mrcio Andrey Teixeira Sistemas Operacionais

Gerenciamento de Memria - Introduo

A maneira mais comum de realizar a multiprogramao consistem em dividir a memria em n


parties (provavelmente de tamanhos diferentes).
Ao chegar, um processo pode ser colocado na fila de entrada e associado menor partio, grande
suficiente para armazen-lo. Como o tamanho das parties fixa nesse esquema, todo o espao da
partio no usado pelo processo perdido.

Figura 2: Esquema de parties fixas

Prof. Dr. Mrcio Andrey Teixeira Sistemas Operacionais

Gerenciamento de Memria - Introduo

Na Figura 2-a, vemos como se representa o esquema de parties fixas com filas de entrada separada.

Desvantagem desse esquema: A fila de uma grande partio ficar vazia e a fila de uma pequena partio
ficar cheia.
Nesse caso, processos pequenos tem que esperar pela liberao de memria, embora exista muito
espao de memria disponvel.
Organizao alternativa: Manter uma nica fila, como pode ser visto na Figura 2-b. Nesse caso,
sempre que uma partio estiver disponvel, o processo mais prximo da fila e que caiba na partio
poder ser carregado e executado.
Como indesejvel desperdiar uma grande partio com um processo pequeno, outra estratgia seria
pesquisar o maior processo da fila de entrada e alocar a partio de memria ao maior processo que
pudesse ser alocado.
Problema: Discriminao com os processos pequenos.
Soluo: Deve haver pelo menos uma partio pequena para permitir a execuo dos processos
pequenos.

Prof. Dr. Mrcio Andrey Teixeira Sistemas Operacionais

Gerenciamento de Memria Multiprogramao

Esses esquema de parties fixas foi utilizado por muitos anos pelo OS/360. simples de entender e
igualmente simples de implementar. Os processos que esto chegando permanecem enfileirados at que
a partio adequada esteja disponvel.

Modelagem da Multiprogramao
O uso da multiprogramao melhora a utilizao da CPU. De modo genrico, se, em mdia, um
processo permanece em execuo apenas 20% durante o tempo que permanece em memria, com cinco
processos simultaneamente na memria a CPU deveria permanecer 100% do tempo ocupado.

Isso acontece ????


Esse modelo otimista no realista. Porque ??

Prof. Dr. Mrcio Andrey Teixeira Sistemas Operacionais

Gerenciamento de Memria Multiprogramao

Considere o modelo probabilstico. Suponha que um processo gaste uma frao p do seu tempo
esperando pela finalizao de uma solicitao de E/S. Com n processos simultneo na memria, a
probabilidade de todos os n processos estarem esperando por uma requisio de E/S pn .
A utilizao da CPU ento dada pela
frmula: CPU = 1 - pn

Prof. Dr. Mrcio Andrey Teixeira Sistemas Operacionais

Gerenciamento de Memria Realocao de memria

Realocao de Memria
A multiprogramao introduz dois problemas essenciais para serem resolvidos: a realocao e a
proteo.
Observe a Figura 2. Observe que processos diferentes executam em espaos de memria diferentes.
Quando um programa ligado (programa principal, procedimentos escritos pelos usurios,
procedimentos de biblioteca), o ligador (Linker) tem de saber em que endereo o programa deve
comear na memria.
Suponha, por exemplo, que a primeira instruo seja uma chamada a um procedimento situado em
um endereo absoluto 100, dentro do arquivo binrio produzido pelo ligador.
Se esse programa fosse carregado na partio 1 (a partir do endereo 100k), essa instruo de
chamada faria saltar para o endereo absoluto 100 que est dentro do sistema operacional, enquanto
o correto seria saltar para o endereo 100K + 100 dentro da partio 1.

O que ocorre se este programa carregado na partio 2??

Prof. Dr. Mrcio Andrey Teixeira Sistemas Operacionais

Gerenciamento de Memria Realocao de memria

Realocao de Memria
Uma possvel soluo para este exemplo seria modificar as instrues dos programas segundo
partio de memria alocado. Programas carregados na partio 1 tero 100k adicionados a cada
endereo. Isso conhecido como realocao.

A realocao de um programa no momento de sua carga no resolve o problema da proteo. Neste


caso, um processo poderia, por exemplo, ler e escrever em uma outra partio que no seja a dele.

Uma das solues para este problema foi dividir a memria em blocos de 2k, (isso utilizado pelo
computador IBM 360) e associar um cdigo de proteo de 4 bits a cada bloco. Com isso, o
hardware interrompia qualquer tentativa de um processo em execuo acessar um bloco de
memria cujo seu cdigo de proteo era diferente. Somente o sistema operacional podia modificar
este cdigos.

Uma outra soluo seria inserir dois registradores especiais, denominados: Registrador Base e
Registrador Limite.

Prof. Dr. Mrcio Andrey Teixeira Sistemas Operacionais

Gerenciamento de Memria Realocao de memria

Quando um processo escalonado, o registrador base carregado com o endereo do incio da


partio alocada a esse processo e o registrador limite alocado com o tamanho dessa partio.

Cada endereo de memria gerado automaticamente somado ao contedo do registrador base


antes de ser enviado para a memria. Assim, se o registrador base possuir o endereo 100K, uma
instruo CALL 100 funcionar como se fosse a instruo CALL 100k + 100, sem que a instruo
tenha sido modificada.

Os endereos gerados tambm so verificados em relao em relao ao registrador limite para


certificar-se de que no tentaro enderear memria fora da partio alocado ao processo em
questo.
Uma desvantagem desse esquema a necessidade de executar uma adio e uma comparao em
cada referncia da memria.

Prof. Dr. Mrcio Andrey Teixeira Sistemas Operacionais

Gerenciamento de Memria Troca de processos

Troca de Processos
Em um sistema em lote, simples e eficiente organizar a memria em parties fixas. Cada Job
carregado em uma partio ao alcanar o incio da fila e permanece na memria at a concluso de
sua execuo.
Em relao aos sistemas com compartilhamento no tempo, esta histria diferente. s vezes no h
memria principal suficiente para conter todos os processos ativos, de modo que os excedentes
devem ser mantidos em disco e trazidos dinamicamente para a memria a fim de ser executado.

Dois mtodos gerais para o gerenciamento de memria podem ser usados, dependendo do recurso
disponvel:
Troca de processos (swapping): Estratgia mais simples, consiste em trazer totalmente cada
processo para a memria, execut-lo durante um certo tempo e ento devolve-lo ao disco.

Memria virtual: Permite que programas possam ser executados mesmo que estejam apenas
parcialmente carregados na memria principal.

Prof. Dr. Mrcio Andrey Teixeira Sistemas Operacionais

Gerenciamento de Memria Troca de processos

O funcionamento de um sistema de troca de processo ilustrado na figura abaixo:

H alteraes na alocao de memria a medida em que os processos entram e saiam da memria.


Regies sombreadas correspondem a regies da no utilizadas naquele instante.
O tamanho e a localizao das parties variam dinamicamente media em que os processos
entram e saem da memria.
Prof. Dr. Mrcio Andrey Teixeira Sistemas Operacionais

Gerenciamento de Memria Multiprogramao

Quando trocas de processos deixam muitos espaos vazios na memria, possvel combin-los
todos em um nico espao contguo de memria, movendo-os para os endereos mais baixos. Essa
tcnica denominada compactao de memria.
Devido ao tempo gasto, essa tcnica no muito utilizada.
Um ponto muito importante a ser considerado a quantidade de memria que deve ser alocada a
um processo quando este for criado.
Se um processo for criado com um tamanho fixo, inaltervel, ento a alocao simples: o sistema
operacional ir alocar exatamente aquilo que necessrio, nem mais nem menos.

Porm, se a rea de dados puder crescer, por exemplo, alocando dinamicamente a memria,
problemas podero ocorrer sempre que um processo tentar crescer.

Se houver um espao livre disponvel adjacente ao processo que necessita crescer, ele poder ser
alocado ao processo

Prof. Dr. Mrcio Andrey Teixeira Sistemas Operacionais

Gerenciamento de Memria Multiprogramao

Por outro lado, se estiver adjacente a outro processo, o processo que necessita crescer poder ser
movida para uma rea de memria grande o suficiente para cont-lo, ou um ou mais processos tero
de ser transferidos para o disco a fim de criar essa rea disponvel.

Se esperado que um processo cresa durante a sua execuo, provavelmente ser uma boa idia
alocar uma pequena memria extra, para evitar a transferncia de um processo para a memria, ou
a movimentao dele do mesmo.

Com isso, reduziria o custo extra relacionado a movimentao do processo. Porm, ao voltar para o
disco, somente a memria em uso dever ser transferida.

A figura a seguir mostra a configurao da memria na qual o espao para crescimento foi alocado
para dois processos.

Prof. Dr. Mrcio Andrey Teixeira Sistemas Operacionais

Gerenciamento de Memria Multiprogramao

A figura abaixo mostra como organizado um programa feito em C na memria principal:

Pilha: rea usada para salvar os registradores;

Heap: rea usada para alocao dinmica de memria;


Variveis global e esttica: rea usada para alocao de todas as
variveis globais e estticas;
Programa: rea usada para armazenar o cdigo executvel;
Organizao dos processos na memria

Prof. Dr. Mrcio Andrey Teixeira Sistemas Operacionais

Gerenciamento de Memria Multiprogramao

a) Alocao de um espao para uma rea de dados em expanso


b) Alocao de um espao para uma pilha em expanso e uma rea de dados tambm em
expanso.

Prof. Dr. Mrcio Andrey Teixeira Sistemas Operacionais

Gerenciamento de Memria Multiprogramao

Gerenciamento de Memria com Mapas de Bits


Quando a memria alocada dinamicamente, o sistema operacional deve gerenci-la. Em termos
gerais, existem duas maneiras de se fazer isso:
1 Com mapa de bits
2 Com listas disponveis

Mapa de Bits
Com o mapa de bits, a memria dividida em unidades de alocao, que pode conter apenas
poucas palavras ou ter vrios Kbytes.
Associado a cada unidade de alocao, existe um bit no mapa de bits, o qual vale 0 se a
respectiva unidade de alocao estiver disponvel e 1 se tiver ocupada.
A figura a seguir mostra parte da memria e o mapa de bits correspondente.

Prof. Dr. Mrcio Andrey Teixeira Sistemas Operacionais

Gerenciamento de Memria Multiprogramao

a) Uma parte da memria com cinco segmentos alocados a processos e trs segmentos de memria
livre.
b) Mapa de bits correspondente.
c) As mesmas informaes dos bits correspondente em uma lista encadeada.

Prof. Dr. Mrcio Andrey Teixeira Sistemas Operacionais

Gerenciamento de Memria Multiprogramao

Mapa de Bits - Continuao


O tamanho da unidade de alocao muito importante, pois:
Quanto menor a unidade de alocao, maior ser o tamanho do mapa de bits.
Se a unidade de alocao for definida como grande, o mapa de bits ser menor.
O mapa de bits uma maneira simples de de gerenciar a alocao de memria, pois o tamanho
desse mapa s depende do tamanho da memria e da unidade de alocao.

Principal problema dessa tcnica: Quando se decide carregar na memria um processo com k
unidades, o gerenciador de memria precisa encontrar no mapa de bits uma seqncia de k bits
consecutivos em 0.Essa operao de busca muito lenta.

Prof. Dr. Mrcio Andrey Teixeira Sistemas Operacionais

Gerenciamento de Memria Multiprogramao

Gerenciamento de memria com listas encadeadas


Tcnica utilizada: manter uma lista encadeada de segmentos de memria alocados e de segmentos
de memria disponvel.
Um segmento uma rea de memria alocada a um processo ou uma rea de memria livre situada
entre as reas de memria de dois processos.

Cada elemento dessa lista encadeada especfica um segmento de memria disponvel (H), ou um
segmento de memria utilizado por um processo (P), o endereo onde se inicia o segmento e o
ponteiro para o prximo elemento da lista.

Nesse exemplo, a lista de segmentos mantida ordenada por endereo. Essa ordenao apresenta a
vantagem de permitir uma utilizao rpida e simples da lista sempre que um processo terminar sua
execuo ou for removido da memria.

Prof. Dr. Mrcio Andrey Teixeira Sistemas Operacionais

Gerenciamento de Memria Multiprogramao

Gerenciamento de memria com listas encadeadas. (Continuao ....)


Um processo que termina sua execuo
tem geralmente dois vizinhos na lista
encadeada de segmentos de memria.
Esses vizinhos podem ser ou segmentos de
memria alocados a processos ou
segmentos de memria livres.
A figura ao lado mostra quatro
combinaes possveis de vizinhana
para um processo X em trmino de
execuo.
a) Um segmento de memria liberado
e a atualizao da lista feita pela
substituio de um P por um H.

d) Trs segmentos de memria so


concatenados em um nico e dois
elementos so eliminados da lista.

b) e c). Dois segmentos de memria so


concatenados em um nico; a lista fica,
deste modo, com um item a menos.

Prof. Dr. Mrcio Andrey Teixeira Sistemas Operacionais

Gerenciamento de Memria Multiprogramao

Gerenciamento de memria com listas encadeadas. (Continuao ....)


Quando segmentos de memria alocados a processos e segmentos de memria livres so mantidos
em uma lista ordenada por endereo, possvel utilizar diversos algoritmos para alocar memria a
um processo recm criado (ou um processo em memria secundria que esteja sendo transferido
para a memria principal.).

First fit (o primeiro que couber): o algoritmo mais simples. O gerenciador de memria procura
ao longo da lista de segmentos de memria por um segmento livre que seja suficientemente grande
para esse processo.
Esse segmento quebrado em duas partes, uma parte alocado ao processo e a parte restante
transforma-se em um segmento de memria livre de tamanho menor.

Next fit: Uma pequena alterao no algoritmo First fit resulta no algoritmo next fit (o prximo que
couber). Este algoritmo funciona da mesma maneira que o algoritmo First fit, exceto pelo fato de
sempre memorizar a posio em que encontra um segmento de memria disponvel de tamanho
suficiente.

Prof. Dr. Mrcio Andrey Teixeira Sistemas Operacionais

Gerenciamento de Memria Multiprogramao

Gerenciamento de memria com listas encadeadas. (Continuao ....)


Quando o algoritmo torna a ser chamado para encontrar um segmento livre , ele iniciar sua busca a
partir desse ponto, em vez de procurar novamente a partir do incio da lista.

Prof. Dr. Mrcio Andrey Teixeira Sistemas Operacionais

Gerenciamento de Memria Memria Virtual

Memria Virtual
H muitos anos, os programadores j eram obrigados a lidar com programas muito maiores que a
memria disponvel.
A soluo geralmente adotada era dividir o programa em mdulos (programao modular),
denominados overlay. Por exemplo, o overlay 0 seria o primeiro a ser executado.

Esse quando terminasse, ele chamaria outro overlay, que seria carregado em seu lugar na memria.

Os overlays eram mantidos em disco, e sua alocao ou remoo responsabilidade do sistema


operacional, mas a diviso dos mdulos era de responsabilidade do programador.

Passado o tempo, a responsabilidade de dividir os programas em mdulos de execuo ficou por


conta do sistema operacional. Essa tcnica ficou conhecida como memria virtual.

Prof. Dr. Mrcio Andrey Teixeira Sistemas Operacionais

Gerenciamento de Memria Memria Virtual

A idia bsica desse conceito que o tamanho total do programa, ou seja, seu cdigo mais seus
dados e pilha, pode exceder a quantidade de memria fsica disponvel para ele.

O sistema operacional mantm apenas as partes ativa do programa na memria e o restante em


disco. Por exemplo, um programa de 16Mb poderia executar em um computador com apenas 4Mb
de memria fsica.
As partes do programa so cuidadosamente carregadas em memria de acordo com a necessidade
do programa.
A memria virtual utilizada em sistemas com multiprogramao, com pedaos e partes de
diferentes programas simultaneamente na memria. Se um programa estiver esperando por um
parte de si prprio, ele estar na condio de espera de E/S, enquanto isso, outro programa poder
executar em seu lugar.

Prof. Dr. Mrcio Andrey Teixeira Sistemas Operacionais

Gerenciamento de Memria Memria Virtual

Paginao
A maioria dos sistemas com memria virtual utiliza uma tcnica de paginao. Em qualquer
computador existe um conjunto de endereos de memria que os programas podem gerar ao serem
executados.
Por exemplo, quando um programa executa a instruo:
MOV, REG 1000
Ele deseja copiar o contedo do endereo de memria 1000 para o registrador REG, (ou ao
contrrio, dependendo do computador.)
Os endereos podem ser gerados com o uso de indexao, de registradores base, registradores de
segmento ou outras tcnicas.
Esses endereos gerados pelo programa so denominados endereos virtuais, e constituem o
espao de endereamento virtual.

Prof. Dr. Mrcio Andrey Teixeira Sistemas Operacionais

Gerenciamento de Memria Memria Virtual

Os endereos virtuais no so idnticos aos endereos fsicos, sendo necessrio mapear os


endereos virtuais em endereos fsicos. A parte do sistema que executa este trabalho a MMU
(Memory Managemente Unit).
A figura abaixo mostra a localizao da MMU no sistema

Prof. Dr. Mrcio Andrey Teixeira Sistemas Operacionais

Gerenciamento de Memria Memria Virtual

Suponha que, um computador pode gerar endereos virtuais de 16 bits, ou seja de 0 a 64k. Porm,
esse computador tem somente 32K de memria fsica.
Nesse caso, possvel escrever um programa com 64K de tamanho, porm, ele no poder ser
alocado inteiramente na memria fsica para ser executado.
Uma cpia completa do cdigo do programa deve estar presente em disco, de modo que partes
possam ser carregadas dinamicamente na memria quando necessrio.

O espao do endereo virtual dividido em unidades denominados pginas (pages). As unidades


correspondente em memria fsica so denominadas molduras de pginas (frame pages).

As pginas e os frames so sempre do mesmo tamanho. Em nosso exemplo, as pginas tem 4K. Com
64K de memria virtual, e 32K de memria fsica, podemos ter:
16 pginas virtuais;
8 frame pages;

Prof. Dr. Mrcio Andrey Teixeira Sistemas Operacionais

Gerenciamento de Memria Memria Virtual

A figura abaixo ilustra o nosso exemplo:

Prof. Dr. Mrcio Andrey Teixeira Sistemas Operacionais

Gerenciamento de Memria Memria Virtual

6
MMU
Memria Virtual

Prof. Dr. Mrcio Andrey Teixeira Sistemas Operacionais

Memria Fsica

Gerenciamento de Memria Memria Virtual

As transferncia entre memria e disco so feitas em unidades de uma pgina. Quando o programa
tenta acessar o endereo 0, por exemplo, usando a instruo:
MOV REG, 0
o endereo virtual 0 enviado para MMU, a qual detecta que esse endereo virtual situa-se na
pgina virtual 0 (de 0 a 4095), que, de acordo com seu mapeamento, corresponde ao frame 2 (de
8192 a 1228).

Da mesma maneira, determine o mapeamento da instruo:


MOV REG, 8192

Prof. Dr. Mrcio Andrey Teixeira Sistemas Operacionais

Gerenciamento de Memria Memria Virtual

8K - 12K
6
0K - 4K
0 - 4095

8192- 12287

2
MMU
Memria Virtual

Prof. Dr. Mrcio Andrey Teixeira Sistemas Operacionais

Memria Fsica

Gerenciamento de Memria Memria Virtual

Neste exemplo, somente oito pginas virtual podero ser mapeados para a memria fsica. Imagine o
que aconteceria quando um programa executasse a seguinte instruo:
MOV REG, 32780
Esse endereo corresponde ao pgina virtual 8 (que se inicia em 32768).
A MMU constata que esta pgina no est mapeada (o que indicado por um X na figura) e fora o
desvio da CPU para o sistema operacional. Esse interrupo (trap), denominada de falta de pgina
(page fault).
O sistema operacional ento escolhe um frame pouco usado e o salva em disco, ou seja reescreve seus
dados de volta no disco. Em seguida ele carrega a pgina virtual referenciada pela instruo no frame
recm-liberado.
Por exemplo, imagine se o frame escolhido seja o frame 1. Com isso, a pgina virtual 8 seria
carregada a partir do endereo 4K e duas alteraes sero feitas na MMU:

1 O sistema operacional ir marcar, na tabela de pgina virtuais, a entrada da pgina virtual 1 como
'no mapeada'.
2 Marcar a pgina virtual 8 como mapeada. Substitui o 'X' por um '1'.

Prof. Dr. Mrcio Andrey Teixeira Sistemas Operacionais

MOV REG, 32780

7
X
36K - 40K

32K -36K

28K -32K

28K -32K

24K -28K

24K -28K

20K -24K

20K -24K

16K -20K

16K -20K

12K -16K

12K -16K

8K - 12K

8K - 12K

4K - 8K

4K - 8K

0K - 4K

0K - 4K

0 - 4095

MMU
Memria Virtual

Memria Fsica

32780
pgina 8

Incio

na

X
36K - 40K

32K -36K

28K -32K

28K -32K

24K -28K

24K -28K

20K -24K

20K -24K

16K -20K

16K -20K

12K -16K

12K -16K

8K - 12K

8K - 12K

4K - 8K

4K - 8K

0K - 4K

0K - 4K

0 - 4095

Memria Virtual

MMU

Memria Fsica

MMU Constata page fault


7
X
36K - 40K

32K -36K

28K -32K

28K -32K

24K -28K

24K -28K

20K -24K

20K -24K

16K -20K

16K -20K

12K -16K

12K -16K

8K - 12K

8K - 12K

4K - 8K

4K - 8K

0K - 4K

0K - 4K

0 - 4095

Memria Virtual

MMU

Memria Fsica

Pgina a ser trocada = 1. Menos utilizada.


7
X
36K - 40K

32K -36K

28K -32K

28K -32K

24K -28K

24K -28K

20K -24K

20K -24K

16K -20K

16K -20K

12K -16K

12K -16K

8K - 12K

8K - 12K

4K - 8K

4K - 8K

0K - 4K

0K - 4K

Memria Virtual

MMU

Memria Fsica

Salva a pagina em disco.


7
X
36K - 40K

32K -36K

28K -32K

28K -32K

24K -28K

24K -28K

20K -24K

20K -24K

16K -20K

16K -20K

12K -16K

12K -16K

8K - 12K

8K - 12K

4K - 8K

4K - 8K

0K - 4K

0K - 4K

Memria Virtual

MMU

Memria Fsica

Carrega a pgina 8 no frame 1


7
X
36K - 40K

32K -36K

28K -32K

28K -32K

24K -28K

24K -28K

20K -24K

20K -24K

16K -20K

16K -20K

12K -16K

12K -16K

8K - 12K

8K - 12K

4K - 8K

4K - 8K

0K - 4K

0K - 4K

Memria Virtual

MMU

Memria Fsica

1 Marca a pgina 8 como mapeada.


7

1 Marca o frame 1 como no mapeada.

X
36K - 40K

32K -36K

28K -32K

28K -32K

24K -28K

24K -28K

20K -24K

20K -24K

16K -20K

16K -20K

12K -16K

12K -16K

8K - 12K

8K - 12K

4K - 8K

4K - 8K

0K - 4K

0K - 4K

Memria Virtual

MMU

Memria Fsica

Gerenciamento de Memria Memria Virtual

O funcionamento da MMU.
A figura ao lado mostra o
mapeamento da MMU:
Endereamento = 16, onde:
4 bits = nmero de pgina
12 bits = Deslocamento
O nmero de pgina usado como
ndice para a tabela de pgina.

Coluna do bit Ausente/Presente: 0


pgina ausente e 1 pgina presente.

Prof. Dr. Mrcio Andrey Teixeira Sistemas Operacionais

Gerenciamento de Memria Memria Virtual

Endereo lgico de 16 bits


0

4 bits = Nmero de
pgina

Endereamento de: 0
at 7

Total: 8 pginas fsicas

Prof. Dr. Mrcio Andrey Teixeira Sistemas Operacionais

Gerenciamento de Memria Memria Virtual

Endereo lgico de 16 bits


0

4 bits = Nmero de
pgina
ndice dos frames da memria fsica.
0

0101

0100

0110

3
.
.
7

1010
1000

Tabela de pgina do
processo

Prof. Dr. Mrcio Andrey Teixeira Sistemas Operacionais

Gerenciamento de Memria Memria Virtual

Endereo lgico de 16 bits


0

4 bits = Nmero de
pgina

12 bits para deslocamento da pgina virtual. Tambm


conhecido como offset

12 bits = 4096 = 4K de deslocamento

Exemplo:

Prof. Dr. Mrcio Andrey Teixeira Sistemas Operacionais

Gerenciamento de Memria Memria Virtual

Endereo lgico de 16 bits


0

4 bits = Nmero de
pgina

12 bits = 4096 = 4K de deslocamento


Exemplo:
Bit ausente/presente

15
.
.

0000

0000

0110

0001

4K

0010

4K

Tabela de pgina

Prof. Dr. Mrcio Andrey Teixeira Sistemas Operacionais

Gerenciamento de Memria Memria Virtual

8196 (Endereo virtual de


entrada)

Exemplo:
Endereo lgico de 16 bits
0

Prof. Dr. Mrcio Andrey Teixeira Sistemas Operacionais

Gerenciamento de Memria Memria Virtual

8196 (Endereo virtual de


entrada)

Exemplo:
Endereo lgico de 16 bits
0

0101

0100

0110

1000

Tabela de pgina do
processo

Prof. Dr. Mrcio Andrey Teixeira Sistemas Operacionais

Gerenciamento de Memria Memria Virtual

8196 (Endereo virtual de


entrada)

Exemplo:
Endereo lgico de 16 bits
0

0101

0100

0110

1000

Tabela de pgina do
processo

Prof. Dr. Mrcio Andrey Teixeira Sistemas Operacionais

Gerenciamento de Memria Memria Virtual

8196 (Endereo virtual de


entrada)

Exemplo:
Endereo lgico de 16 bits
0

0101

0100

0110

1000

Tabela de pgina do
processo

10

01

Prof. Dr. Mrcio Andrey Teixeira Sistemas Operacionais

Gerenciamento de Memria Memria Virtual

8196 (Endereo virtual de


entrada)

Exemplo:
Endereo lgico de 16 bits
0

0101

0100

0110

1000

Tabela de pgina do
processo

10

01

Prof. Dr. Mrcio Andrey Teixeira Sistemas Operacionais

Gerenciamento de Memria Memria Virtual

Exemplo:
Endereo lgico de 16 bits
0

0101

0110

1001

1000

Tabela de pgina do
processo

Endereo Fsico
Prof. Dr. Mrcio Andrey Teixeira Sistemas Operacionais

Gerenciamento de Memria Memria Virtual

Tabela de Pginas
No caso mais simples, o mapeamento de endereos virtuais em endereos fsicos feito da maneira
que foi descrito.
O endereo virtual dividido em nmero de pginas virtuais (bits mais significativos) e
deslocamento (bits menos significativos).
O nmero da pgina virtual usado como um ndice dentro da tabela de pgina para se encontrar a
entrada dessa tabela associada a pgina virtual em questo.

A partir dessa entrada, chega-se ao nmero da moldura da pgina fsica (frame) caso ela exista.

O nmero do frame conectado aos bits de deslocamento, substituindo assim o nmero da pgina
virtual pela pgina fsica (frame).
O objetivo da tabela de pginas mapear pginas virtuais em pginas fsicas. Matematicamente, a
tabela de pagina uma funo que usa o nmero da pgina virtual como argumento e retorna o
nmero da pgina fsica.

Prof. Dr. Mrcio Andrey Teixeira Sistemas Operacionais

Gerenciamento de Memria Memria Virtual

Tabela de Pginas
Apesar desse mtodo ser bastante simples, dois pontos impotentes devem ser considerados:
1 A Tabela de pgina pode ser extremamente grande;
2 O mapeamento deve ser rpido;
O primeiro ponto conseqncia do fato de os modernos computadores utilizarem endereos
virtuais de 32 bits.
Com uma pgina de 4K, teremos um milho de pginas virtuais. Neste caso, a tabela de pgina ter
um milho de entrada;
Cada processo mantm sua tabela prpria tabela de pginas, pois o mesmo possui seu endereo
virtual;
O segundo ponto advm do fato do mapeamento virtual-fsico ser efetuado a cada referncia de
memria. Isso poder gerar um gargalo no sistema, caso esse tempo seja muito grande.

Prof. Dr. Mrcio Andrey Teixeira Sistemas Operacionais

Gerenciamento de Memria Memria Virtual

Tabela de Pginas
A necessidade de se ter tabelas de pginas enormes e ao mesmo tempo mapeamento rpido uma
restrio significativa.
O projeto mais simples (conceitualmente) ter uma nica tabela de pginas que consista em um
vetor de registradores rpidos em hardware, com uma entrada para cada pgina virtual indexado
pelo nmero da pgina virtual.
Quando um processo for executado, sistema operacional carregar esses registradores a partir de
uma cpia da tabela de pginas desse processo mantida na memria.

Problema, custo !!!!! Quanto maior a tabela de pginas, mais caro a implementao.

No outro extremo tem-se toda a tabela de pgina na memria. Todo o hardware necessrio se
resume em um nico registrador, que aponta para o incio da tabela de pginas.
Esse mtodo apresenta a desvantagem de requerer muitos acessos a tabela de pgina durante a
execuo das instrues;

Prof. Dr. Mrcio Andrey Teixeira Sistemas Operacionais

Gerenciamento de Memria Memria Virtual

Troca tima de pgina


O melhor algoritmo de troca de pginas fcil de descrever mas impossvel de
implementar. O algoritmo opera da seguinte maneira.
No momento que ocorre uma falta de pgina, um certo conjunto de pginas
est na memria. Uma dessas pginas ser referenciada em muitas das
prxima instrues (a pgina contendo a instruo).
Outras pginas no sero referenciadas antes de 10, 100, ou talvez 1000
instrues. Cada pgina pode ser rotulada com o nmero de instrues que
sero executadas antes que a pgina seja inicialmente referenciada.
O algoritmo da pgina tima simplesmente diz que a pgina com o maior
rtulo deve ser removida, adiando-se o mximo possvel a prxima falta de
pgina.
O nico problema com este algoritmo que ele no realizvel. No momento
da falta de pgina, o sistema operacional no tem como saber quando cada
pgina ser referenciada.
No mximo podemos executar um programa num simulador e, mantendo uma
lista de todas as pginas referenciadas, implementar o algoritmo na segunda
execuo (usando as informaes coletadas na primeira execuo).
Prof. Dr. Mrcio Andrey Teixeira Sistemas Operacionais

Gerenciamento de Memria Memria Virtual

Troca de pgina no recentemente usada


Para permitir que o sistema operacional colete estatsticas sobre quais pginas
esto sendo usadas e quais no esto, muitos computadores com memria
virtual tm 2 bits associados cada pgina.
Um bit, R ou bit de referncia, ativado pelo hardware em qualquer leitura ou
escrita de pgina. O outro bit, M ou bit de modificao, ativado pelo
hardware quando uma pgina escrita (i.e., um byte alterado/adicionado na
pgina).
importante que estes bits sejam atualizados em qualquer referncia de
memria, assim, essencial que eles sejam ativados pelo hardware. Uma vez
que um bit foi ativado, ele permanece ativado at que o sistema operacional o
desative (por software).
To logo uma pgina seja referenciada, uma falta de pgina ocorrer. O
sistema operacional ento ativa o bit R (em sua tabela interna), muda a
entrada de tabela de pginas para apontar para a pgina correta, com modo
READ ONLY, e reinicia a instruo.
Se a pgina subseqentemente escrita, uma outra falta de pgina ocorrer,
permitindo ao sistema operacional ativar o bit M e mudar o modo da pgina
para READ/WRITE.
Prof. Dr. Mrcio Andrey Teixeira Sistemas Operacionais

Gerenciamento de Memria Memria Virtual

Troca de pgina no recentemente usada


Os bits R eM podem ser usados para construir um algoritmo de paginao
simples como se segue. Quando um processo iniciado, ambos os bits
de pgina para todas estas pginas so declarados 0 pelo sistema
operacional.
Periodicamente (i.e., a cada interrupo de relgio), o bit R zerado,
para distinguir pginas que no foram referenciadas recentemente
daquelas que tenham sido.
Quando uma falta de pgina ocorre, o sistema operacional examina
todas as pginas e as classifica em 4 categorias baseado nos valores
correntes de seus bits R e M.
Classe
Classe
Classe
Classe

0
1
2
3

:
:
:
:

no referenciada, no modificada.
no referenciada, modificada.
referenciada, no modificada.
referenciada, modificada.

Prof. Dr. Mrcio Andrey Teixeira Sistemas Operacionais

Gerenciamento de Memria Memria Virtual

Troca de pgina no recentemente usada


Ainda que as pginas na classe 1 paream, primeira vista, impossveis de
existir, elas ocorrem quando as pginas da classe 3 tm seu bit R zerado pela
interrupo do relgio.
Interrupes de relgio no zeram o bit M porque esta informao necessria
para determinar se uma pgina ter que ser reescrita no disco ou no.
O algoritmo No Recentemente Usada (Not Recently Used, NRU), remove uma
pgina aleatria da classe no vazia de numerao mais baixa.
Implcito neste algoritmo que melhor remover uma pgina modificada que
no foi referenciada pelo menos no ltimo tick de relgio (tipicamente 20
mseg), que uma pgina no modificada mas muito usada.
As caractersticas principais do NRU que ele fcil de entender, eficiente de
se implementar, e gera um desempenho que, enquanto certamente no timo,
geralmente tido como adequado.

Prof. Dr. Mrcio Andrey Teixeira Sistemas Operacionais

Gerenciamento de Memria Memria Virtual

Troca de pgina FIFO


O algoritmo de paginao First-In-First-Out (FIFO) similar ao NRU. O sistema
operacional mantm uma lista de todas as pginas correntes na memria,
sendo a pgina da cabea da lista a mais velha e a pgina do fim a instalada
mais recentemente.
Em uma falta de pgina, a pgina da cabea removida e a nova pgina
acrescentada no fim da lista. Uma simples modificao no FIFO para evitar o
problema da retirada de uma pgina muito usada examinar os bits R e M da
pgina mais velha.
Se a pgina pertencer a classe 0 (no referenciada, no modificada), ela
retirada, seno a prxima pgina mais velha examinada, e assim por diante.
Se pginas da classe 0 no esto presentes na memria, ento o algoritmo
repetido procurando por pginas da classe 1, 2 e 3.

Prof. Dr. Mrcio Andrey Teixeira Sistemas Operacionais

Você também pode gostar