Вы находитесь на странице: 1из 63

Gerenciamento de

memria

Introduo
Na

memria principal residem os programas em


execuo.

Memria

secundria
so
mecanismos
de
armazenamento
permanente,
so
mais
abundantes e baratas.

Para

um programa ser executado deve ser


carregado na memria principal.

Gerenciamento

complexo
em
multiprogramveis
com
mltiplos
utilizando-a eficientemente.

sistemas
usurios

GERNCIA DE MEMRIA
memria

= vetor de palavras (ou bytes), cada uma com


endereo prprio

memria usada para armazenar os diversos


programas em execuo, bem como os dados sobre a
execuo dos programas

na

multiprogramao diversos processos so colocados na


memria ao mesmo tempo, para que o chaveamento
entre eles seja o mais rpido possvel

SO deve permitir que os processos compartilhem a


memria de forma segura e eficiente, usando os recursos
disponveis no hardware

Memria lgica
memria

lgica aquela que o processo


enxerga, ou seja, aquela que o processo capaz
de acessar
os endereos manipulados pelo programa so
lgicos
em geral capa processo possui uma memria
lgica independente da memria lgica dos
outros processos

Memria Fsica
memria

fsica aquela que efetivamente


acessada pelo circuito integrado de memria

dois processos podem ter espaos de


endereamento iguais que correspondem a reas
diferentes do espao de endereamento fsico

unidade de gerncia de memria (MMU):

prov

mecanismos de gerncia de memria para o

SO

converte/mapeia endereos lgicos em fsicos

Alocao Contgua Simples


Implementada

nos
primeiros
Sistemas
Operacionais e ainda existentes em alguns
sistemas monoprogramveis.

Memria

dividida em duas partes,


Operacional e programa do usurio.

Sistema

programador tem controle sobre toda a


memria principal, podendo acessar qualquer
posio da memria, inclusive onde est residente
o Sistema Operacional.

Um

mecanismo de proteo utilizado delimitar a


rea do Sistema Operacional que delimita a rea
do mesmo.

Alocao Contgua Simples

Fcil implementao e cdigo reduzido, porm


Ineficincia no uso do processador e da memria pois
apenas um usurio pode dispor desse recurso.

Programas limitados ao tamanho da memria disponvel.

Overlay (sobreposio) Soluo encontrada para dividir o


programa em partes (mdulos), de forma que pudessem
executar independentemente uma da outra, utilizando
uma mesma rea de memria.

A definio das reas de Overlay so de responsabilidade


do programador atravs de comandos especficos da
linguagem utilizada

Alocao Particionada
A

eficincia da multiprogramao exige que


vrios programas estejam na memria ao
mesmo tempo, vindo a necessidade de
organizao da memria.

Alocao Particionada Esttica:

Diviso da memria em tamanhos fixos (parties)


definidos na inicializao do Sistema em funo dos
programas que executariam no ambiente.

A alterao do tamanho de uma partio necessita a


inicializao do Sistema Operacional.

Os programas s podiam executar em uma das parties,


mesmo com outras disponveis.

Limitaes impostas pelos compiladores e montadores que


geravam apenas cdigos absolutos.

Alocao Particionada Esttica:

Posteriormente, evoluo dos compiladores, sendo que os


programas puderam ser carregados em qualquer partio
(alocao particionada esttica realocvel).

Surgimento da tabela de parties com informaes de


tamanho, uso e delimitaes.

Proteo da memria atravs de dois registradores, incio


e fim da partio.

Os programas no preenchiam totalmente as parties


onde eram carregados.

Problemas de fragmentao.

Fragmentao Interna
A

fragmentao interna ocorre quando


o tamanho do processo menor que a
rea alocada, ou seja,
uma lacuna com 6kb seja utilizada
para alocar um processo de 5kb
desperdiando memria.

Fragmentao Externa
Outra

maneira de fragmentao a externa


que ocorre devido a no existncia de uma
rea contgua na memria, ou seja,

um

processo qualquer precisa de 5kb porm


existem duas lacunas sendo uma de 2kb e
uma 3kb, porm em lugares separados

Exemplos de Fragmentao

mapa de bits
Quando

a
memria

alocada
dinamicamente, o sistema operacional deve
gerenci-la.

Em

termos gerais, existem duas maneiras


de fazer isso: com mapa de bits e lista de
disponveis.

mapa de bits

Com um mapa de bits, a memria dividida em unidades de alocao, que


podem conter apenas poucas palavras ou ter vrios quilobytes.

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 estiver
ocupada (ou vice-versa)

lista encadeada
Pode-se

manter uma lista encadeada de


segmentos de memria alocados e de segmentos
de memria disponveis.

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

Normalmente a lista ordenada por endereo

Lista encadeada

Alocao Particionada Dinmica


Aumento

do grau de compartilhamento
diminuindo o problema da fragmentao.

Parties

sem tamanho fixo, onde cada


programa utiliza o espao que necessita.

Existe

ainda o problema de fragmentao,


conforme os programas vo terminando e
deixando espaos cada vez menores.

Alocao Particionada Dinmica


Solues

para resolver o problema de


fragmentao:
Primeira

Reunir os espaos adjacentes,


produzindo um nico espao de tamanho maior.

Segunda

Realocao de todas as parties


ocupadas, eliminando todos os espaos entre
elas (alocao dinmica com realocao),
porm, aumentando a complexibilidade do
algoritmo e consumindo mais recursos do
sistema

Estratgias para Escolha da Partio


Funo

para determinar em qual partio


livre um programa ser carregado para
execuo.

Funo

de evitar, ou diminuir, o problema


da fragmentao antes que ele ocorra.

tamanho do programa o fator mais


importante para a adoo da melhor
estratgia

Alocao Particionada Dinmica

as parties so ajustadas dinamicamente s necessidades


dos processos

o tamanho e o nmero de parties varivel

o SO mantm uma lista de reas livres de memria

quando for necessrio alocar memria, percorre-se a lista


usando uma das seguintes tcnicas:

first-fit

best-fit

worst-fit: circular-fit(ou next-fit)

last-fit

First fit
Escolhe

a primeira partio livre de tamanho


suficiente para carregar o programa

Grande

chance de se obter uma grande partio


livre nos endereos de memrias mais altos.

Mais

rpida e consome menos recursos do sistema.

first-fit
Exemplo:
Existem

os seguintes espaos livres: 11k, 3k, 19k,


18k, 7k, 8k, 13k, 15k.
Se oFirst-Fitfor utilizado, as solicitaes 5k, 12k,
6k, ocupariam os espaos 11k e 19k.
5k -> 11k = 6k
12k -> 19k = 7k
6k -> 7k(resto do 19k)

obs:

a solicitao de 6k no pode utilizar o resto da


partio de memria de 6k restante dos 11k pois a
alocao deve ser sempre em um espao maior,
nunca menor ou igual.

First-Fit

Obs: oFirst-Fitreinicia sua realocao apos encontrar o


espao livre para seu primeiro processo.
ex. Existem os seguintes espaos livres: 11k, 3k, 19k, 18k,
7k, 8k, 13k, 15k.
Se oFirst-Fitfor utilizado, as solicitaes 19k, 8k, 3k,
ocupariam os espaos 11k e 19k.
eles ocupariam:
19k -> 19k
8k -> 8k
3k -> 3k

best-fit
Escolhe

a melhor partio, ou seja, aquela


que o programa deixa o menor espao sem
utilizao.

Lista

de reas livres alocada por tamanho,


diminuindo o tempo de busca

Desvantagem

de deixar pequenas reas no


contguas, aumentando o problema da
fragmentao

worst-fit
O

algoritmoworst-fitaloca o programa na pior


partio, ou seja, aquela que deixa o maior
espao livre.

Est

tcnica, apesar de aproveitar primeiro as


parties maiores, acaba deixando espaos livres
grandes o suficiente para que outros programas
utilizem da memria, diminuindo ou retardando a
fragmentao.

next-fit
Algoritmo

para partio dinmica que inicia a


busca a partir da posio da ltima alocao at
encontrar o primeiro bloco, mais frequentemente
so alocados blocos de tamanho grande.

Grandes

blocos so particionados em blocos


menores e existe a necessidade de compactao
quando no houver mais memria disponvel.

Quick- fit

Quando temos duas listas separadas, outro algoritmo


possvel. o Quick Fit (ajuste rpido), que consiste em
manter listas separadas para alguns dos tamanhos mais
comuns especificados (ex. uma fila para 2k, outra para 4k,
outra para 8k etc).

Neste caso, a busca de um buraco com o tamanho


requerido, extremamente rpido, entretanto, quando
um processo termina, a liberao de seu espao
complicada, devido necessidade de reagrupar os buracos
e modific-los de fila.

Parties variveis

A rea necessria alocada e o restante continua livre

Quando um processo termina, a memria que ele


ocupava liberada reas livres adjacentes devem ser
agrupadas

a alocao pode ser:

exata: no ocorre fragmentao interna podem surgir


reas de memria pequenas, difceis de serem alocadas
em pargrafos (ou blocos): h uma pequena
fragmentao interna facilita o alinhamento de variveis
na memria so necessrios menos bits para enderear
uma rea de memria

Exerccio
Considere

um sistema cuja gerncia de memria


feita atravs de parties variveis. Nesse
momento, existem as seguintes lacunas (reas
livres): 10K, 4K, 20K, 18K, 7K, 9K, 12K e 13K,
nessa ordem.

Quais

espaos sero ocupados pelas solicitaes:


5K, 10K e 6K, nessa ordem, se:

first-fit for utilizado?

best-fit for utilizado?

worst-fit for utilizado?

next-fit for utilizado?

Resposta do Exerccio 1

exerccios

Swapping
Tenta

resolver o problema de insuficincia da


memria para todos os usurios.

Aloca

espao para programas que esperam por


memria livre para serem processados.

sistema escolhe um programa residente, que


levado da memria para o disco (swap out),
retornando posteriormente para a memria
principal (swap in) como se nada tivesse ocorrido.

Swapping

Problema da realocao dos programas. O loader


realocvel permite que um programa seja colocado em
qualquer posio da memria, porm a realocao
realizada no momento do carregamento.

Mecanismo ineficiente em funo do tempo gasto para


carregamento.

Uma alternativa esperar que a regio de memria usada


pelo programa na ocasio do seu primeiro carregamento
esteja disponvel.

Swapping - Realocao Dinmica:

a melhor soluo, uma implementao no hardware


dos computadores, permitindo que a realocao seja
realizada durante a execuo do programa.

Realizada

atravs de um registrador
denominado registrador de alocao, que
endereo inicial da regio da memria que o
ir ocupar no momento do carregamento do
na memria.

Toda

especial
recebe o
programa
programa

vez que ocorrer uma referncia a algum


endereo, o endereo contido na instruo ser somado
ao contedo do registrador, gerando assim, o endereo
fsico.

Swapping - Realocao Dinmica:

Essencial para a
multiprogramvel.

implementao

de

um

sistema

Permitiu um maior throughput atravs de um maior


compartilhamento da memria.

Mais eficiente para programas onde existiam poucos


usurios competindo por memria e em ambientes que
trabalhavam com aplicaes pequenas.

Seu maior problema o elevado custo das operaes de


entrada/sada (swapped in/out).

Memria Virtual
Combina

memria principal e secundria;

Impresso

da memria ser muito maior do

que ;
Desvinculao

do endereamento feito pelo


programa dos endereos fsicos da memria
principal;

Procura

minimizar
o
fragmentao da memria

problema

de

Espao de Endereamento Virtual


Conceito

prximo a vetores em linguagens


de alto nvel;

Referncia

a um componente do vetor sem


preocupao com a posio da memria
onde o dado est;

Programa

no ambiente de memria virtual


no faz referncia a endereos fsicos de
memria (endereos reais), mas apenas a
endereos virtuais;

Espao de Endereamento Virtual

Mapeamento a traduo do endereo virtual para o


fsico;

Espao de endereamento virtual o conjunto de


endereos virtuais que os processos podem enderear.

Espao de endereamento real o conjunto de


endereos reais.

Apenas parte do programa pode estar residente na


memria em um determinado instante;

O Sistema Operacional utiliza a memria secundria como


uma extenso da memria principal.

Mapeamento

Mecanismo que transforma os endereos virtuais em


endereos reais;

Todo programa precisa estar no espaos de


endereamento real para poder ser referenciado ou
executado;

Atualmente, o mapeamento realizado via hardware


junto com o Sistema Operacional, de forma a no
comprometer seu desempenho e torn-lo transparente aos
usurios e suas aplicaes;

A maioria das aplicaes tende a fazer referncia a um


reduzido nmero de pginas, logo, somente uma pequena
frao da tabela de pginas necessria.

Mapeamento

Memria associativa ou Translation Lookside Buffer


Hardware especial para mapear endereos virtuais para
endereos fsicos sem a necessidade de acesso tabelas
de pginas;

Quando um programa est em execuo, existe uma


tabela de mapeamento do processo no qual o programa
executa. Se outro programa for executado no contexto de
outro processo, o sistema deve passar a referenciar a
tabela do novo processo. Toda vez que h mudana de
contexto, o registrador atualizado com o endereo da
nova tabela.

Paginao
Tcnica

de gerncia de memria onde o espao de


endereamento
virtual
e
o
espao
de
endereamento real so divididos em blocos do
mesmo tamanho (pginas);

Pginas

virtuais no espao virtual e pginas reais


ou frames (molduras) no espao real;

Todo

mapeamento realizado a nvel de pgina,


atravs de tabelas de pginas, em que cada
pgina virtual do processo possui uma entrada na
tabela ETP;

Paginao
Paginao

por demanda quando as pginas dos


processos so transferidas da memria secundria
para a principal apenas quando so referenciadas.

Paginao

Antecipada o carregamento de
pginas na memria antecipadamente, sendo que
o sistema tenta prever as pginas que sero
necessrias execuo do programa.

Algoritmos

diferentes.

Working Set
Problemas:
Paginao

exigem operaes de E/S (que deve ser


evitado) quando um processo faz referncia a uma
pgina que no se encontra na memria;

Sistema Operacional deve se preocupar em ter um


certo nmero de pginas na memria que reduza ao
mximo a taxa de paginao dos processos e no
prejudique os demais processos que desejam acesso a
memria.

paginao
Observaes:
Quando

um programa comea a ser executado,


percebe-se uma elevada taxa de page faults (pginas
que no se encontram na memria), que se estabiliza
com o decorrer de sua execuo.

Localidade

a tendncia que existe em um programa


de fazer referncias a posies de memria de forma
quase uniforme, ou seja, instrues prximas.

partir da observao da localidade Denning formulou


o modelo de working set.

paginao

Working Set de um processo o conjunto de pginas


referenciadas por ele durante determinado intervalo de
tempo, ou, segundo Denning, o conjunto de pginas
constantemente referenciadas pelo processo, devendo
permanecer na memria principal para que execute de
forma eficiente, evitando a elevada taxa de paginao
(thrashing).

Sempre que um processo criado, todas as suas pginas


esto na memria secundria.

O Working Set deve Ter um limite mximo de pginas


permitidas.

Realocao de Pginas

Problema em decidir quais pginas remover da memria


principal.

O Sistema Operacional deve considerar se uma pgina foi


ou no modificada antes de liber-la para outro processo,
caso contrrio, possveis dados armazenados na pgina
sero perdidos.

Sempre que uma pgina alterada, um bit de modificao


alterado de 0 para 1, informando que a pgina foi
alterada.

Melhor estratgia de realocao escolher uma pgina


que no ser referenciada num futuro prximo. Tarefa
difcil para o Sistema Operacional.

Tamanho da Pgina

Paginao leva a uma menor fragmentao, pois apenas


poder haver fragmentao na ltima pgina.

A fragmentao consequncia do tamanho da pgina.

Pginas pequenas, tabelas de mapeamento maiores, maior


taxa de paginao e aumento do nmero de acesso
memria secundria, porm, menor fragmentao.

Tamanho da pgina associado ao hardware e varia de


sistema para sistema, norlamente entre 512 bytes e 64 kb

Segmentao

Tcnica de gerncia de memria, onde os programas so


divididos logicamente e em sub-rotinas e estruturas de
dados e colocados em blocos de informaes na memria

Segmentos blocos de tamanhos diferentes com seu


prprio espao de endereamento.

Segmentao X Paginao Paginao com partes de


tamanho fixo e segmentos com blocos de tamanhos
variados e permite uma relao entre a lgica do
programa e sua diviso na memria.

Segmentao

Cada entrada na tabela de segmentos possu o endereo do segmento


na memria fsica, informaes sobre o tamanho do segmento, sua
proteo e se ele est na memria ou no.

O Sistema Operacional mantm uma tabela com as reas livres e


ocupadas da memria.

A escolha da rea livre a ser ocupada por um processo a ser carregado


na memria pode ser a mesma utilizada no item Alocao
Particionada Dinmica (best-fit, worst-fit ou first-fit).

segmentao
Apenas

os
segmentos
referenciados
transferidos para a memria real.

so

Os

programas devem ser bem modularizados para


uma maior eficincia.

Existe

tambm o problema da fragmentao e o


problema da complexibilidade.

Segmentao com Paginao


Permite

a diviso lgica dos programas e


segmentos e, cada segmento dividido
fisicamente em pginas.

Um

endereo formado pelo nmero do


segmento, pelo nmero de pgina, contida nesse
segmento, e pelo deslocamento dentro dessa
pgina.

endereo fsico obtido somando-se a posio


inicial do frame e o deslocamento.

Proteo

Necessria para impedir que um processo, ao acessar uma


pgina/segmento do sistema, a modifique ou mesmo
tenha acesso a ela.

No esquema de memria virtual, cada processo tem sua


prpria tabela de mapeamento e a traduo dos
endereos realizada pelo sistema, impedindo assim, que
um processo tenha acesso a reas de memria de outros
processos, a no ser que tenham compartilhamento
explcito.

A proteo deve ser realizada em nvel de cada


pgina/segmento na memria, utilizando-se as entradas
da tabela de mapeamento, com alguns bits especificando
permisses a cada uma das pginas/segmentos.

Compartilhamento de Memria
Bastante

til

para

programas

de

cdigo

reentrante.
Bastante

simples
implementao
do
compartilhamento de cdigo e dados entre vrios
processos, bastando que as entradas das tabelas
de pginas/segmentos apontem para as mesmas
pginas/segmentos na memria principal.

Reduz

o nmero de programas na memria


principal e aumenta o nmero de usurios
compartilhando o mesmo recurso.

Segmentao X Paginao

Segmentao X Paginao em relao ao


compartilhamento:

O compartilhamento de segmentos mais simples que o de


pginas, pois as tabelas de segmentos mapeiam estruturas lgicas,
como sub-rotinas e estruturas de dados.

Enquanto o mapeamento de um vetor necessita de vrias entradas


na tabela de pginas, na tabela de segmentos necessria apenas
uma nica entrada.

O segmento pode variar seu tamanho durante a execuo com o


crescimento de um vetor, por exemplo, na paginao, isso implica
na alocao de novas pginas.

Swapping em Memria Virtual


Quando

existem novos processos que desejam ser


processados e no existe memria real suficiente,
o sistema seleciona um ou mais processos que
devero sair da memria para ceder espao aos
novos processos.

Os

critrios mais utilizados para a escolha so a


prioridade, escolhendo processos de melhor
prioridade, e o estado do processo, selecionando
os processos que esto no estado de espera.

Thrashing

a excessiva transferncia de pginas/segmentos entre a


memria principal e a memria secundria.

Problema existente
segmentao.

Na paginao:

tanto

em

paginao

quanto

A nvel de processo:

o working set de um processo pode ser pequeno demais para


acomodar as pginas constantemente acomodadas referenciadas por
ele, a soluo aumentar o tamanho do working set.

O thrashing tambm pode ocorrer pela no obedincia do conceito da


localidade, ou seja, o programa faz referncia a comandos/dados
localizados em pginas fora do working set do processo e a soluo
para isso reescrever a aplicao.

Thrashing
A

nvel de sistema:

trashing ocorre quando existem mais processos competindo


por memria que espao disponvel.

primeiro passo a reduo do tamanho dos working set dos


processos, mas isso pode levar o thrashing a nvel de processo.

Na

segmentao:

Em

nvel de processo, quando a trasferncia de


segmentos excessiva devido a modularizao extrema
do programa no seguindo o conceito da modularidade.

Em

nvel de sistema semelhante ao caso da


paginao.

Thrashing
Em

qualquer caso, se existem mais processos para


serem executados que a memria real disponvel,
a nica soluo expandir a memria principal.

Este

problema ocorre em todos os sistemas que


possuem um mecanismo de gerncia de memria

exerccios

Qual a funo da MMU na gerncia de memria?

O que o TLB?

Explique a importncia do TLB no desempenho da MMU

Qual o tipo de fragmentao apresentado pelos mtodos de


gerncia de memria baseados em parties fixas e por
parties variveis?

Qual a diferena entre endereo fsico e virtual?

Explique o que a atividade de swapping e diga como ela pode


prejudicar o desempenho do sistema computacional.

Quando mais interessante utilizarmos o algoritmo best-fit? E o


worst-fit?

Pesquise e explique pelo menos 3 algoritmos de substituio de


pginas.