Você está na página 1de 22

VII - Gerenciamento de Memria

emria o segundo recurso de maior importncia dentro da arquitetura de


um sistema computador. A disponibilidade e o gerenciamento deste recurso
vital para o desempenho do sistema. Assim, fatores como a quantidade de
memria disponvel, tempo de acesso e custo so capitais na sua especificao e aquisio.
Evidente que o desejado poder-se ter memria de maior capacidade, que seja bastante
rpida e cujo custo seja no mnimo compatvel com o dos demais componentes do computador. Como era de esperar, existe uma relao de compromisso (trade-off) entre estes trs fatores, na realidade o que ocorre que:
memrias mais rpidas apresentam maior custo por bit armazenado;
memrias de maior capacidade apresentam menor custo por bit; e
quanto maior a capacidade da memria mais lenta ela ser.
Estes fatos fazem com que os projetistas busquem solucionar o problema, dentro das
restries inerentes a tecnologia atualmente disponvel, adotando no uma mas sim um conjunto de memrias organizadas segundo uma hierarquia tal que possibilite adequar custo, capacidade de armazenamento e tempo de resposta.

VII.1 Nveis hierrquicos de Armazenamento


Seis nveis, conforme pode ser visto na figura VII.1 abaixo, formam uma estrutura de
memria que opera integrada e ordenada segundo a capacidade de armazenamento, a velocidade de acesso que proporcionam ao sistema e ao custo por bit.

registradores
Memria cache
Memria principal
Disco eletrnico

Disco magntico
Disco ptico
Fita magntica

Figura VII.1 - Nveis Hierrquicos de Armazenamento


Quanto mais elevado o nvel na pirmide, mais rpida, de menor capacidade e de custo
mais elevado o dispositivo de memria. O intercmbio de dados entre os diferentes dispositi-

Gerenciamento
13

de

Memria

vos que compem o sistema hierrquico de memria deve ser suportado pelo sistema operacional da forma mais transparente e segura possvel. Com esta estrutura possvel alcanar os
seguintes marcos:
1. decrscimo no custo global do sistema por bit armazenado;
2. aumento da capacidade global de armazenamento;
3. melhoria do desempenho (tempo de acesso);
4. reduo do nmero de acessos memria principal.
a) Registradores
Localizados no interior da UCP, servem de memria (buffer) para as operaes internas a UCP e so de acesso exclusivo ao processo corrente. Resumem-se a alguns poucos registradores, cujo nmero e tamanho depende da arquitetura interna de hardware da UCP. So
de tamanho fixo e normalmente idntico ao da palavra de memria.
b) Cache
uma memria RAM de tamanho reduzido e com velocidade de acesso bem mais elevada do que a da memria principal. utilizada com o objetivo de acelerar a execuo dos
processos possibilitando acesso mais rpido quelas palavras mais freqentemente referenciadas e, com isto, explorar o princpio da localidade de referncia dos dados e dos programas.
A cache geralmente localizada dentro da UCP, compartilhando da arquitetura interna
e dos barramentos desta. Funcionalmente, a cache se situa entre os registradores e a memria
principal e, assim, toda operao de leitura (ou escrita) na memria tem sua execuo, primeiramente, tentada na memria cache (fig. VII.2).

CPU

CACHE

MP
OU

Figura VII.2 - Esquema de Acesso com CACHE Presente


Se o dado estiver na cache, ocorrer um hit, e esta ento que fornece o dado UCP;
caso contrrio ocorrer um miss, e a memria principal fornecer o dado UCP e memria
cache. Os dados entre cache e UCP so transferidos com base na palavra (word) e entre a
memria principal e a cache a transferncia feita em blocos, como mostra a figura VII.3.

UCP

palavras

Cache

blocos

MP

Figura VII.3 - Unidade de transferncia para Cache e MP

14
VII

Antonio G. Thom

Cap.

O uso da cache otimiza o acesso memria principal, geralmente muito mais lenta, por
esta servir UCP em grande parte dos acessos e evitar assim, a ida at a MP. O tempo de
acesso nestes casos passa a ser dado pela seguinte expresso:

tma = tc + (1-hit) * tmp

onde,
tma
tc
tmp
hit

tempo mdio de acesso


tempo de acesso cache
tempo de acesso MP
probabilidade do dado estar na cache

Assim, se por exemplo, um computador possui memria principal com tempo de acesso
da ordem de 1.5s e memria cache com tempo de acesso da ordem de 0.1s. O tempo necessrio para ler 1000 bytes com taxas de hit respectivamente de 0%, ou seja, 100% de acesso
memria principal, e de 85%, ser:
a) tma1 = 1000 * (0.1 + 1.5) = 1.6ms e
b) tma2 = 1000 * (0.1+ 0.15 * 1.5) = 325s
Outras medidas de desempenho so eficincia de acesso (T1/Tma) e de custo (Cs). Em
outras palavras:
T1
=
Tma

1
hit + (1 hit )

T2
T1

onde,
Tma
T1
T2
hit

tempo mdio de acesso considerando-se 2 nveis de memria


tempo mdio de acesso da memria de mais alto nvel
tempo mdio de acesso da memria de mais baixo nvel
taxa de localizao do dado na memria de nvel mais elevado

Observe que quanto mais T1/Tma se aproxima de 1, maior ser o grau de eficincia do
sistema.
e

C S + C2 S2
Cs = 1 1
S1 + S2

onde,
Cs
C1
C2
S1
S2

custo mdio por bit combinados dois nveis adjacentes de memria


custo mdio por bit da memria de nvel mais elevado
custo mdio por bit da memria de nvel mais baixo
tamanho da memria de nvel mais elevado (M1)
tamanho da memria de nvel mais baixo (M2)

Gerenciamento
15

de

Memria

A eficincia agora est direo da proximidade de Cs com C2, uma vez que C1 tende a
ser muito maior que C2. Isto geralmente requer que S1 seja muito menor que S2.
O projeto de uma memria cache envolve os seguintes aspectos:
1.
2.
3.
4.
5.

Tamanho da cache
Unidade de transferncia com a MP
Funo de alocao
Algoritmo de substituio
estratgia para operaes de escrita

MP

Cache
Tag

Bloco

Bloco de comprimento K

Bloco de
k palavras
palavra

Figura VII.4 - Organizao fsica da MP e da Cache


Mesmo um tamanho pequeno de cache introduz uma melhora sensvel no desempenho
do sistema. O tamanho do bloco, por outro lado, est ligado taxa de hit. Ao ser elevado tende a aumentar o hit porm, a partir de um certo tamanho passa a provocar um reflexo contrrio, em virtude da intensificao da troca de blocos por substituio.
A Funo de Alocao se refere ao processo de escolha dos possveis locais de armazenamento para um bloco a ser trazido da MP e o Algoritmo de Substituio se refere, em
caso de necessidade, estratgia de escolha, dentre os locais selecionados pela funo de alocao, daquele bloco de dados a ser retirado da cache para abrir espao para o novo que entra.
As operaes de escrita num sistema dotado de memria cache, precisam de uma ateno especial, com vistas a manter a coerncia do sistema (cache coherency). Num extremo temos a estratgia chamada write-through, onde tanto a cache como a MP so atualizadas a cada
operao de escrita corresponde e no outro a write-back, onde a MP somente atualizada ao
final de toda uma seqncia de operaes ou quando o dado alterado precisar deixar a cache
em virtude do algoritmo de substituio.
Na tcnica write-through, caso a memria cache retorne um hit ou um miss a ao do
sistema ser a seguinte:
no caso de um hit (ou seja, o dado se encontra na cache)

16
VII

Antonio G. Thom

Cap.

1. escreve o novo valor do dado na cache, e


2. escreve o novo valor do dado tambm na MP (fig VII.5).

CACHE

CPU

MP

write

Figura VII.5 - Esquema de write-through com hit


no caso de um miss (o dado no se encontra na cache)
1. l o dado na MP e o grava na cache,
2. escreve o novo valor do dado na cache, e
3. escreve o novo valor do dado tambm na MP (fig VII.6)

CPU

CACHE

read
write

MP

Figura VII.2b - Esquema de write-through com miss


Na tcnica write-back, caso a memria cache retorne um hit a ao do sistema ser a
seguinte:
1. escreve o novo valor do dado apenas na cache tantas vezes quanto puder, e
CACHE

CPU

MP

write

2. l da cache e escreve o valor na MP somente quando precisar remover o


dado da cache por falta de espao ou no final do processamento do programa (fig VII.7).

CACHE

CPU

read

MP

write

Figura VII.7 - Esquema de write-back com hit, (a) escreve apenas na CACHE tantas vezes
quantas necessrias, (b) escreve (copia) o dado na MP uma nica vez ao final do processamento ou quando necessrio para abrir espao na Cache

Gerenciamento
17

de

Memria

No caso de um miss (o dado no se encontra na cache)


escreve o novo valor do dado apenas na MP (fig. VII.8).

CPU

CACHE

MP

write

Figura VII.8 - Esquema de write-back com miss


c) Memria Principal
constituda por um determinado nmero de clulas, cada uma podendo armazenar
uma quantidade fixa de informao e sendo individualizada por um endereo nico. A clula
representa a unidade de acesso memria, isto , a menor quantidade de bits que pode ser individualmente endereada e acessada. O tamanho (quantidade de bits) de cada clula depende
da arquitetura fsica do computador. A clula de memria muitas vezes referenciada como
byte por geralmente coincidir com o tamanho deste. Na figura VII.9 abaixo so apresentados
os tamanhos de clula para alguns computadores conhecidos.
ex.
Mquina
Borroughs B1700
IBM PC
PDP8
IBM 1130
XDS 940
XDS Sigma 9
CDC 3600
CDC Cyber

bits/clula
1
8
12
16
24
32
48
60

Figura VII.8 - Tamanhos de Clulas para alguns computadores conhecidos


d) Memria Virtual
uma estratgia de utilizao combinada da memria principal com a memria secundria (disco magntico) tal que, de forma transparente ao usurio, d a este e aos processos a
impresso de estarem fazendo uso de uma memria principal muito maior do que a real.
Requer a existncia de componentes especficos no sistema operacional, como ser
visto mais a frente, para prover e gerenciar o uso da memria virtual de maneira transparente
aos demais componentes do prprio sistema operacional, dos aplicativos, dos programas elaborados pelo usurio e do prprio usurio. Pela importncia deste tpico ele ser visto em
maiores detalhes mais a frente ainda neste captulo.

18
VII

Antonio G. Thom

Cap.

e) Memria Secundria
Prov flexibilidade (memria virtual), segurana (backup) e maior capacidade de armazenamento ao sistema. Inclui os seguintes dispositivos:
discos magnticos fitas magnticas discos pticos -

fixos (HDs) e removveis (disquetes);


cartucho, cassete e rolo;
apenas para leitura (CDROMs) e para leitura
e gravao (WORMs e magneto-pticos).

VII.2 Alocao de Espao na Memria Principal


Consiste nos procedimentos do sistema operacional quanto a proteo e a alocao de
espaos em memria principal para execuo dos diferentes processos que compartilham no
tempo o uso da UCP. Com a evoluo do hardware e dos sistemas, vrios mtodos de alocao foram surgindo e sendo adotados pelos sistemas operacionais das respectivas pocas.
Dentre eles temos:
alocao contgua simples,
parties estticas,
parties estticas relocveis, e
parties dinmicas
a) Alocao Contgua Simples
Adotada nos sistemas operacionais mais antigos do tipo monoprogramveis, consiste
na alocao contnua dos endereos de memria, onde os mais baixos so utilizados pelo SO e
o restantes so disponibilizados para o usurio (fig. VII.9).

Registrador Fence

SO

limite de acesso p/ o usurio

Processo do
usurio
Espao
livre

Figura VII.9 - Memria com Alocao Contgua Simples


Neste esquema no h proteo, ou seja, o usurio tem controle total sobre todo o espao de memria, podendo acessar qualquer posio, inclusive alterar e destruir o sistema operacional. Para proteo alguns sistemas incluem um registrador, chamado registrador fence,
para delimitar as reas do SO e do usurio.
Embora de implementao simples e cdigo reduzido, a alocao contgua simples no
permite uma utilizao eficiente do processador e da memria, pois apenas um usurio pode

Gerenciamento
19

de

Memria

usar os recursos existentes. Os problemas de proteo e de realocao so resolvidos da seguinte maneira:

registrador fence

add fence

PROCESSO

S
MEMO

address
N
Address
Violation

Figura VII.10 - Esquema de Proteo


a. proteo - a cada tentativa de acesso do usurio memria, o SO realiza um teste
com o registrador fence, permitindo ou no o acesso.
b. realocao - da forma como est configurada a MP (fig. VII.9), se o SO precisar
crescer ser necessrio deslocar o registrador fence e, por via de conseqncia, recompilar todos os programas, uma vez que os endereos so absolutos. Uma primeira soluo para este
problema surgiu com a adoo do endereamento decrescente para o processo, isto a partir
do final da MP (fig. VII.11).

SO
Registrador Fence
rea livre

Usurio

Figura VII.11 - Alocao com Endereamento Decrescente


Desta forma, tanto o SO como o processo do usurio podem crescer at o limite fsico
da memria, sem que um gere problemas, overhead, para o outro.
Os programas do usurio nesta poca sofriam fortemente da limitao fsica do espao
de memria que, por fora da tecnologia existente, j era reduzido por natureza. A soluo
encontrada na poca foi a de dividir o programa em mdulos independentes, que pudessem ser
executados separadamente reutilizando, de forma sucessiva, uma mesma rea de memria.
Esta tcnica chamada de overlay, e nela cabe ao programador a identificao dos trechos do
programa que podem ser colocados em diferentes mdulos.
Na figura VII.12 abaixo exemplificado um caso de overlay onde um programa de
940K subdividido em trs partes (mdulos), um principal de 510K, que permanece em memria durante todo o perodo de execuo e chama, de forma alternada, as outras duas rotinas,
uma de 200K e outra de 230K.

20
VII

Antonio G. Thom

Cap.

Observe que o espao de memria disponvel para o usurio de aproximadamente


750K e que o maior comprimento do programa em execuo ser de 740K, quando as rotinas
principal e B estiverem juntas na memria.

total do programa: 940K

SO
255K
Mod.
Principal

Usurio

510K
1M

Mod.
A
200K

Mod.
B
230K

Figura VII.12 - Tcnica de Overlay


b) Mltiplas Parties
Para a multiprogramao ser possvel, necessrio que vrios programas estejam na
memria ao mesmo tempo para que possam se revezar rapidamente no uso e controle da UCP,
da a necessidade de uma nova forma de organizao da memria.
b.1) Alocao Particionada Esttica
Nos primeiros sistemas operacionais multiprogramados, a MP foi dividida em pedaos
de tamanho fixo, chamados parties. O tamanho das parties era varivel e estabelecido na
fase de boot do sistema, sendo definido pelo operador em funo do tamanho dos programas a
serem executados.
A proteo das parties era garantida atravs dos registradores de limite superior e
inferior (fence). A princpio, os programas eram previamente alocados e s podiam ser executados em uma das parties, mesmo que outras estivessem disponveis. Essa limitao se devia
aos compiladores que eram capazes apenas de gerar endereamento absoluto.
Os processos para execuo eram selecionados e organizados pelo operador formando
uma fila para cada partio (fig. VII.13).

SO

processos em fila para execuo

Partio #1

lower bound limit partio #2


X

Partio #2

upper bound limit partio #2


Z

Partio #3

Figura VII.13 - Alocao Particionada Esttica

Gerenciamento
21

de

Memria

b.2) Alocao Particionada Esttica Relocvel


Com a evoluo dos compiladores, linkers e loaders, foi possvel a gerao de cdigos
relocveis a nvel de execuo, isto , os endereos dentro de um programa eram relativos ao
incio do mesmo e, assim, se tornando independente da posio absoluta de carga do mesmo
na memria.
No esquema de endereamento relocvel, o endereo absoluto de cada instruo do
programa passa a ser calculado atravs do seu endereo relativo (gerado pelo compilador) e o
endereo de carga na memria (fornecido pelo carregador - loader, e armazenado num registrador especial chamado registrador base).
Na partio relocvel uma nica fila de processos formada, e o carregador (loader)
escolhe a partio a ser usada dentre as disponveis no momento da carga de cada processo
(fig. VII.14).
SO
Part #1 2Kb
X

C
ou

6Kb

1.5Kb

Part #2 8 Kb

3Kb
Part #3 5Kb

Figura VII.14 - Alocao Particionada Relocvel


Este tipo de partio tem o potencial de gerar fragmentao interna de memria, i.e.
memria alocada e no utilizada pelo programa. Este tipo de fragmentao ocorre sempre que
o programa no utilizar toda a memria disponvel na partio para a qual foi alocado.
A fila nica tambm gerava problemas, uma vez que processos com partio disponvel
poderiam ter que ficar aguardando na fila o atendimento de outros processos que estivessem
na frente e que necessitassem alguma partio de tamanho no disponvel.
b.3) Alocao Particionada Dinmica
A soluo anterior, particionada esttica relocvel, deixou claro a necessidade de se
implementar uma nova forma de organizao da MP que reduzisse o problema de fragmentao e aumentasse o grau de compartilhamento da mesma.
Eliminou-se ento, o conceito de parties de tamanho fixo definidas no momento do
boot. O tamanho da partio passou a ser dinmico e definido automaticamente pelo prprio
SO, de acordo com cada programa a ser executado.
A princpio o problema da fragmentao parecia resolvido porm, observou-se que a
mesma passaria agora a ocorrer na medida que os programas fossem terminando e deixando
fragmentos, chamados de fragmentos externos, cada vez menores e dispersos pela memria.
Fenmeno este vulgarmente conhecido como colcha-de-retalhos. Desta forma, como exempli-

22
VII

Antonio G. Thom

Cap.

ficado na figura VII.15 abaixo, os espaos iam se tornando cada vez menores e, por no serem
contguos, no podiam ser reagrupados para execuo de novos processos.
O tratamento deste problema veio com a introduo da tcnica de compactao. Porm com a restrio de um custo computacional mais elevado.
SO
4Kb

D
5Kb

Proc A

fragmentos

Proc B
2Kb
Proc C

Figura VII.15 - Alocao Particionada Dinmica


10) Compactao Simples
Consistia em reunir espaos adjacentes no utilizados produzindo um nico espao de
tamanho maior (fig. VII.16).
SO

SO

4Kb

sada de B

4Kb
Proc A (3K)

Proc A (3K)
Proc B (5K)

6 Kb

1Kb

Proc C (7K)

Proc C (7K)

Figura VII.16 - Compactao Simples


20) Compactao com Relocao

SO

SO

4Kb
sada de B
Proc A (3K)

10Kb

Proc B (5K)
1Kb
Proc C (7K)

Proc A (3K)
Proc C (7K)

Figura VII.17 - Compactao com Relocao

Gerenciamento
23

de

Memria

Envolve a relocao de todas as parties ocupadas, eliminando assim todos os espaos vazios entre elas e criando uma nica rea livre e contgua de memria. Esta soluo reduz
o problema da fragmentao, porm a complexidade do seu algoritmo e o custo computacional
para sua operacionalizao podem torn-lo invivel (fig. VII.17).
b.3.1) Estratgias para Escolha da Partio
A escolha da partio pelo SO merece cuidado especial uma vez que reflete no nvel de
fragmentao gerado e no desempenho global do sistema. Trs estratgias bsicas so comumente adotadas: best-fit; worst-fit e first-fit. O SO mantm uma lista de reas livres, com o endereo e o tamanho de cada uma.
Best-fit - alocada a partio que deixa a menor rea livre (fragmentao). A tendncia da memria ficar cada vez mais com pequenas reas no contguas, tornando mais crtico o problema da fragmentao.
Worst-fit - alocada a partio que deixa a maior rea livre. Tem a tendncia de
deixar espaos livres maiores e no provocar fragmentaes to pequenas como no
caso do best-fit.
First-fit - alocada a partio de endereo mais baixo. Apresenta grandes chances
de permitir a existncia de parties maiores nos endereos mais elevados.

VII.3 Swapping
A tcnica de swapping veio para tentar minorar o problema da insuficincia de memria
para a execuo dos processos em ambiente multiprogramado. Consiste na transferncia automtica de todo um processo da MP para o disco (swap out) e vice-versa, do disco para a MP
(swap in), conforme exemplificado na figura VII.18 abaixo.
Memria
Disco

Swap out

B
X

Z
Swap in

Figura VII.18 - Esquema de Swapping


Um dos problemas gerados pelo swapping a relocao dos programas. No caso de
um programa que saia e volte muitas vezes para a memria, necessrio que a relocao do
mesmo seja realizada automaticamente pelo loader a cada operao de carregamento.
A melhor soluo para esta relocao a realizada atravs do registrador base ou registrador de relocao. Toda vez que um programa carregado na memria, o seu registrador
base carregado com o endereo inicial da regio de memria onde o programa ser carregado.

24
VII

Antonio G. Thom

Cap.

O conceito de swapping permitiu um maior compartilhamento da MP e, consequentemente, um maior throughput. Seu maior problema o elevado custo das operaes de E/S
(swap in/out).
instruo

reg. base
cod

end inicial partio

endereo

+
end. memria

Figura VII.19 - Clculo do Endereo Absoluto de Memria

VII.4 Memria Virtual


uma tcnica sofisticada e eficiente de gerenciamento de memria, incorporada aos
SOs mais recentes. Ela combina, de forma transparente aos usurios e ao restante do prprio
sistema operacional, as memrias principal e secundria (disco) afim de proporcionar a iluso
de existir uma memria principal muito maior do que a real.
O conceito de memria virtual se baseia na separao entre o endereamento usado
pelo programa e os endereos fsicos da memria principal. Agora, o espao que um programa
pode enderear chamado de espao virtual, que pode ser bem maior do que o espao fsico
existente na memria principal.
O Endereamento Virtual possui as seguintes caractersticas:
o conjunto de endereos que podem ser utilizados pelos processos em execuo.
o espao virtual pode ser muito maior do que o espao fsico.
o compilador se encarrega de implementar automaticamente o endereamento virtual.
um programa, em um ambiente de memria virtual, no faz referncia a endereos
fsicos, apenas a endereos virtuais. O software de gerenciamento da memria virtual se encarrega de mapear cada endereo virtual para um endereo fsico, de forma
automtica e transparente ao processo e ao usurio.
o sistema operacional faz uso da memria secundria como extenso da memria
principal, de forma transparente.
quando um programa executado, apenas uma parte do cdigo executvel fica na
memria principal, o restante permanece em memria secundria e s carregado
quando referenciado para uso.
cada processo tem a seu dispor o mesmo espao de endereamento virtual, como se
toda a memria virtual lhe pertencesse. Cabe ao software de gerenciamento controlar e impedir qualquer violao de acesso entre dois ou mais processos concorrentes.
a) Mapeamento
Nos sistemas atuais, para agilizar o processo, o mapeamento executado por um hardware especfico que trabalha junto com o sistema operacional. Para garantir segurana, o me-

Gerenciamento
25

de

Memria

canismo de mapeamento se encarrega de manter tabelas de mapeamento exclusivas para cada


processo (page tables).

Espao Virtual
Espao Real

Mapeamento

Figura VII.20 - Mapeamento do Endereo Virtual x Real


Caso a granularidade do mapeamento fosse o byte, o espao fsico requerido pelas tabelas de mapeamento seria to grande quanto o espao virtual, o que inviabilizaria o uso e a
implementao do mecanismo de memria virtual. Em virtude disto, as tabelas mapeiam blocos de informaes chamadas pginas ou segmentos. Observe que quanto maior o tamanho do
bloco, menor a tabela de mapeamento, porm maior o tempo de transferncia do mesmo de /
ou para a MP (fig. VII.20).
obs: Com a introduo do mapeamento, os programas deixaram de ter, necessariamente, de
ocupar um espao contgo na memria fsica.
b) Paginao
a tcnica virtual que faz uso de blocos de tamanho fixo tanto no espao virtual (pginas) como no espao real (frames). Nesta tcnica, o endereo virtual formado pelo nmero
da pgina virtual e pelo deslocamento dentro desta mesma pgina. O nmero (endereo) da
pgina virtual nico dentro da page table.
O endereo fsico calculado (mapeado) pela composio do endereo do frame fornecido pela page table com o deslocamento fornecido pela instruo virtual, conforme pode
ser visto na figura VII.21 a seguir.
Alm da informao sobre a localizao fsica da pgina virtual (frame), a page table
possui outras informaes como o nvel de proteo da pgina, o bit de validade (validity bit),
que indica se a pgina est na memria fsica ou no, e o bit de modificao (modified bit), que
indica se a pgina na memria fsica foi modificada ou no. Esta informao importante pois
se o sistema precisar remover a pgina da memria fsica por uma razo de necessidade de espao, ter ou no que salv-la em disco antes de alterar o bit de validade na page table.
Toda vez que uma pgina referenciada e no est na memria fsica ocorre um page
fault, que dispara um processo de alocao de memria fsica, que pode, por sua vez, requerer a retirada de uma pgina que esteja residindo na memria fsica antes de realizar a carga da
pgina referenciada.

26
VII

Antonio G. Thom

Cap.

Observe que neste esquema de memria virtual, cada referncia a memria se converte,
na melhor das hipteses, em dois acessos a memria principal, um para leitura da page table e
outra para acesso ao dado propriamente dito. Na ocorrncia de um page fault, alm dos acessos acima referenciados, tem-se o acesso ao disco para carga dos dados e, antes disso, se necessrio, o salvamento de algum dado em memria para abertura de espao.

nr. da pgina
virtual

deslocamento

Endereo Virtual

Page Table
infos. gerais
a nvel proc
end do frame

Valid e modified
bits
endereo fsico

end do frame

deslocamento

memria principal
frame

frame
byte

Figura VII.21 - Esquema de Mapeamento com Paginao


Quando a pgina no est na memria principal, a page table contm o endereo da
mesma no disco magntico. Abaixo v-se alguns conceitos relacionados com esta estratgia de
gerenciamento:
Demand Paging - a transferncia sob demanda para a memria principal, ou seja
apenas quando a pgina referenciada;
Antecipatory Paging - tenta antecipar a demanda por uma pgina carregando-a na
MP antes dela ser referenciada;
Working Set - o espao de memria (nmero de pginas) que permitido a um
processo manter simultaneamente na MP;
Page Size - o tamanho adotado para as pgina, normalmente entre 512 e 4Kb (512
o mais comum);

Gerenciamento
27

de

Memria

Fragmentao - o espao de MP alocado a um processo e no utilizado pelo


mesmo que, no caso de paginao, interna a cada pgina e bem mais reduzida doque nos demais casos j visto at aqui;
Swapping - tambm vlido para memria virtual (neste caso a page table do processo transferida da MP para a MS e, portanto, precisa ser carregada para MP antes de ser iniciado o processo de mapeamento do endereo virtual;
Thrashing - definido como a excessiva transferncia de dados entre MP e MS (paginao ou segmentao). As causas mais provveis so:
a) a nvel do prprio processo - mau dimensionamento do working set, ou no
observao do princpio da localidade pelo programador;
b) a nvel do sistema - pouca memria ou nmero excessivo de processos concorrentes.
c) Working Set
O conceito de working set surgiu da observao e anlise da taxa de paginao dos vrios processos em execuo. Percebeu-se a ocorrncia de uma elevada taxa de paginao durante a fase inicial de execuo (carga) do processo e, geralmente, uma estabilizao desta taxa
no decorrer do restante do processamento. Este comportamento deve-se ao fato de que antes
de iniciada a execuo o processo reside como um todo na memria secundria (MS), sendo
ento necessrio carregar para a memria as pginas a medida que estas vo sendo referenciadas pela primeira vez, mas depois de um certo tempo de processamento a demanda por novas
pginas tende a reduzir (princpio da localidade) e a taxa de paginao se estabiliza.
O tamanho do working set definido pelo gerente do sistema (system manager), e de
fundamental importncia para garantir um fluxo adequado de execuo dos processos (throughput). Um working set muito grande reduz o nmero de processos que podem compartilhar
simultneamente a memria, alm de geralmente ser sub-utilizado pela maioria dos processos
existentes. Alguns sistemas operacionais adotam a estratgia de estabelecimento de um
working set dinmico, observado um tamanho mximo e mnimo pr-definidos.
d) Relocao de Pginas
Um dos maiores problemas na implementao de um software de gerenciamento para
paginao o tratamento dos page faults, pois isto demanda a escolha de uma estratgia para
selecionar as pginas a serem removidas da MP, afim de que seja aberto espao para o carregamento de pginas residentes na MS.
Qualquer que seja a estratgia adotada de projeto, ela deve sempre considerar o bit de
modificao (modified bit) para determinar se a pgina a ser retirada da MP sofreu ou no alguma alterao durante sua estada na memria. Caso positivo a pgina precisa ser salva na MS
antes que a outra seja carregada, caso contrrio basta carregar a outra por cima.
A melhor estratgia possvel a adotar seria a de relocar a pgina que no viesse a ser
referenciada em futuro prximo. Isto seria o ideal, porm impraticvel pois o sistema operacional (SO) no possui bola de cristal e, portanto, no tem como adivinhar o futuro. As estratgias mais conhecidas so:
escolha aleatria (raramente adotada);
FIFO (first_in_first_out, simples de ser implementada);

28
VII

Antonio G. Thom

Cap.

LRU (least_recently_used, gera um overhead razovel);


NUR (not_used_recently, usa um flag inicializado com 0);
LFU (least_frequently_used, mantm um contador de referncias p/ cada pgina).
Escolha Aleatria
No faz uso de qualquer critrio para a seleo. Todas as pginas do working set tm a
mesma chance de ser selecionada. Embora seja a estratgia mais simples de ser implementada e
consumir poucos recursos de processamento, raramente utilizada pela sua baixa eficincia.
FIFO
Remove a pgina carregada menos recentemente, independente de quando a pgina foi
referenciada pela ltima vez. Sua implementao bastante simples, por exemplo, atravs de
uma fila FIFO para cada working set.
LRU
Remove a pgina utilizada menos recentemente, isto , aquela que no referenciada
h mais tempo. Sua implementao mais complexa que a dos algoritmos anteriores e, embora
o algoritmo funcione razoavelmente bem, existe algumas situaes em que ele falha grosseiramente, como no caso extremo de um loop que referencia em seqncia um nmero de pginas
que exceda em um o tamanho mximo do working set.
Uma possvel forma de implementao deste algoritmo realizada atravs do uso de
uma matriz quadrada conforme mostra a figura VII.22. A matriz tem dimenso igual ao nmero de pginas do working set. Cada linha e coluna de mesma ordem se referencia a uma mesma
pgina. Ao ser carregada a pgina, a linha correspondente da matriz zerada. Quando a pgina
referenciada, a linha correspondente da matriz carregada com "1s" e a coluna correspondente com "0s". A qualquer instante, a pgina menos recentemente referenciada aquela cuja
linha apresenta o menor somatrio.

A
B
C
D

A
0
1
0
0

(a)
B C
0 0
0 1
0 0
0 0

D
0
1
0
0

A
0
1
0
1

(b)
B C
0 0
0 1
0 0
1 1

D
0
0
0
0

A
0
0
0
0

(c)
B C
1 1
0 1
0 0
1 1

D
1
0
0
0

A
0
1
0
0

(d)
B C
0 1
0 1
0 0
0 1

D
1
1
0
0

2
3
1

Figura VII.22 - Implementao do esquema LRU para a referncia de pginas: B, D, A, B.


Observe que a qualquer instante a linha de maior valor corresponde a pgina mais recentemente referenciada, e assim por diante
NRU
Escolhe a pgina que no tenha sido recentemente referenciada. O algoritmo faz uso de
um bit extra: flag "R", para registrar a utilizao da pgina. O bit setado para "1" quando a
pgina referenciada e, em perodos de tempo pr-determinados, so todos ressetados para
"0". Toda vez que ocorrer um page fault e uma relocao de pgina for necessria, o algoritmo

Gerenciamento
29

de

Memria

analisa os bist "R" e "M" (modified bit) de todas as pginas do working set e as classifica em
04 grupos:
classe 1:
classe 2:
classe 3:
classe 4:

no referenciadas (R = 0) e no modificadas (M = 0),


no referenciadas (R = 0) e modificadas (M = 1),
referenciadas (R = 1) e no modificadas (M = 0), e
referenciadas (R = 1) e modificadas (M = 1).

O algoritmo remove uma pgina qualquer, escolhida aleatoriamente, de uma classe no


vazia a partir da classe 1. Observe que o algoritmo d preferncia para remover uma pgina
que tenha sido modificada porm no recentemente referenciada, a uma pgina no modificada
mas recentemente referenciada.
LFU
Nesta estratgia o algoritmo remove a pgina que tenha sido menos referenciada. Para
isto ele precisa manter um contador para cada pgina, que zerado por ocasio da carga da
pgina e acrescido de uma unidade cada vez que a mesma referenciada. O problema desta
estratgia que pginas mais recentemente carregadas tendem a ter menores valores nos seus
contadores e pginas fortemente utilizadas durante um perodo do processamento tendem a se
perpetuar na memria, mesmo no sendo mais referenciadas.
e) Segmentao
a tcnica de gerenciamento que possibilita os programas serem subdivididos logicamente em blocos distintos como, por exemplo, rea de cdigo e rea de dados, e o carregamento de cada um destes blocos em uma rea (segmento) distinto da MP. Os blocos, diferentemente das pginas, podem ter tamanhos distintos e so chamados segmentos, cada um possuindo seu espao de endereamento prprio.
A grande diferena entre paginao e segmentao est no fato de que a primeira divide o programa em partes iguais e de tamanho fixo, sem qualquer relao lgica com a estrutura do mesmo, e a segunda, no fazendo uso de blocos de tamanho fixo, permite a adoo de
uma relao entre os blocos e a lgica do programa. Na paginao tem-se um esquema de
memria virtual unidimensional, ao passo que na segmentao pode-se adotar um esquema
multidimensional. Este fato pode facilitar ao programador sua tarefa de otimizar o desempenho
operacional do programa.
Por exemplo, um compilador precisa lidar com muitas tabelas dinmicas que so construdas, expandidas e encolhidas a medida que a compilao procede, incluindo:
1. Texto Fonte, que vai sendo salvo para a impresso da listagem;
2. Tabela de smbolos, contendo os nomes e atributos das variveis;
3. Tabela de Constantes, contendo todas as constantes inteiras e de ponto-flutuante
utilizadas;
4. rvore de parsing, contendo a anlise sinttica do programa; e
5. Pilha, usada para chamadas de procedimentos dentro do compilador.
As quatro primeiras tabelas crescem continuamente a medida que a compilao procede, j a ltima pode crescer e diminuir de forma imprevisvel.

30
VII

Antonio G. Thom

Cap.

Num esquema unidimensional as tabelas precisariam ser alocadas em pores contguas


do espao de endereamento virtual, como pode ser visto na figura VII.23 abaixo, e, mesmo
com a previso de espao livre para crescimento, problemas podem ocorrer. Num esquema
multidimensional por outro lado, os espaos so separados, independentes e no necessariamente contguos.
O mecanismo de mapeamento muito semelhante ao da paginao. Uma segment table
faz agora as vezes da page table, sendo que neste caso cada entrada na tabela possui tambm a
informao sobre o tamanho do segmento. O endereo virtual formado por um nmero de
segmento e um deslocamento (offset) dentro do segmento.

Tabela de Smbolos

Texto Fonte
(a)
Esquema unidimensional
de endereamento virtual

Tabela de Constantes

rvore de Anlise Sinttica

Pilha de Chamadas

( b ) Esquema multidimensional
seg. 0

seg.
1

Tab.
Smbo

Fonte

seg.
2
Tab.
Ctes.

seg.
3

seg.
4

rvo
re

Pilha

los

Figura VII.23 - Espao uni e multidimensional de endereamento da memria virtual

A tcnica de segmentao elimina a fragmentao interna caracterstica da tcnica de


paginao, porm volta a introduzir a possibilidade de ocorrncia de segmentao externa, isto
, entre segmentos.

Gerenciamento
31

de

nr. do segmento
virtual

deslocamento

Memria

Endereo Virtual

Segment Table
infos. gerais
a nvel proc
end do seg.

Valid e modified
bits
end do seg.

endereo
fsico

deslocamento

memria principal
Segmento

segmento
byte

Figura VII.24 - Esquema de Mapeamento com Segmentao

f) Segmentao_com_Paginao
Conceitualmente a reunio das tcnicas de segmentao e de paginao. O processo
logicamente segmentado (como na tcnica de segmentao) e agora, dentro de cada segmento
ele subdividido em pginas de tamanho fixo.
O endereo virtual agora formado por um nmero de segmento, um nmero de pgina e um deslocamento (offset) dentro da pgina. O mapeamento requer uma etapa a mais do
que o necessrio para as duas tcnicas anteriores, conforme pode ser visto na figura VII.25 a
seguir.
Fazendo-se uma anlise das 3 estratgias de organizao do esquema virtual, pode-se
constatar que:

32
VII

Antonio G. Thom

Cap.

a) na paginao a memria plana e contnua (unidimensional) e pode ocorrer o problema da


segmentao interna, ou seja, o processo no utilizar completamente a ltima pgina a ele
alocada;
b) na segmentao a memria pode ser alocada por partes e no contnua (multidimensional) e
desaparece o problema da fragmentao interna, mas volta a aparecer o da segmentao
externa;
c) na segmentao com paginao tem-se a forma de alocao segmentada e a fragmentao
interna, bem emnor e mais simples de ser gerenciada.

segmento

page

offset

endereo virtual

page table
page table

end. frame

segment table

endereo fsico

frame

offset

Figura VII.25- Esquema de Segmentao com Paginao


g) Proteo
realizada a nvel de pgina ou segmento (dependendo da tcnica adotada) e vem especificada nos primeiros bits de cada entrada na page ou segment table.
exemplo:
R
0
1
1

W
0
0
1

descrio
sem acesso
apenas leitura
leitura e gravao

h) Compartilhamento de Memria (cdigo reentrante)


O cdigo executvel de alguns programas, principalmente utilitrios e programas de
sistema, podem ser compartilhados afim de evitar o consumo desnecessrio de MP. Para que
isto ocorra o programa reentrante precisa ser especificamente caracterizado como tal pelo gerente do sistema e, assim, automaticamente, o sistema operacional se encarrega de fazer com
que os processos que estiverem usando um determinado programa reentrante estejam com as
entradas das suas respectivas page ou segment tables apontando para os mesmos frames na
MP (frames estes ocupados pelo cdigo executvel do programa reentrante). Na figura VII.26
abaixo pode ser observado o caso em que dois processos A e B, compartilham o mesmo cdigo de um terceiro processo, reentrante, que reside em MP.

Gerenciamento
33

de

Memria

A utilizao de cdigo reentrante no s otimiza a ocupao da MP, uma vez que evita
a coexistncia de cpias idnticas de um mesmo trecho de programa na memria, mas tambm
melhora o desempenho dos programas, uma vez que reduz a paginao ou segmentao destes
pelo fato do programa reentrante permanecer residente em memria.

Processo A
Memria Principal

frame reentrante
Pgina do
Processo
Reentrante

Page Table A

Processo B
frame reentrante

Page Table B

Figura VII.26 - Processo Reentrante

VII.5 Referncias Bibliogrficas


Davis, William S., Sistemas Operacionais - Uma Viso Sistemtica, Ed. Campus, 1990.
Machado, Francis B. e Maia, Luiz P., Introduo Arquitetura de Sistemas Operacionais,
Ed. LTC, 1994.
Silberschatz, Abraham e Galvin, Peter B., Operating System Concepts, 4a edio, Ed. Addison-Wesley Publishing Company, 1994.
Stallings, William, Operating Systems, Ed. Macmillan Publishing Company, 1992.
Tanenbaum, Andrew S., Organizao Estruturada de Computadores, Ed. Prentice-Hall do
Brasil, 1990.
Tanenbaum, Andrew S., Sistemas Operacionais - Projeto e Implementao, Ed. PrenticeHall do Brasil, 1987.
Tanenbaum, Andrew S., Sistemas Operacionais Modernos, Ed. Campus, 1995.

Você também pode gostar