You are on page 1of 175

Sistemas Operacionais 2014

Gerncia de Memria
Alexandre Augusto Giron
ROTEIRO
Fundamentos
Endereamento Lgico x Fsico
Swapping
Alocao de Memria
Contgua
Paginao
Segmentao
Memria Virtual
Algoritmos de substituio de pgina
Consideraes


Gerncia de Memria
Programas devem estar, total ou
parcialmente na memria
SOs de propsito geral
Deve manter vrios processos na memria
Diversos esquemas de gerncia de
memria
Normalmente dependem do projeto de
hardware
Gerncia de Memria
Compartilhamento de memria
necessrio
Relembrando: Principais funes
Controlar unidades de memria (em uso ou
no)
Liberar unidades de memria
Swapping entre memria principal -
secundria

FUNDAMENTOS
Fundamentos
Memria Principal
Grande vetor de bytes, cada um com seu
respectivo endereo
Memria Virtual
Permite execuo de programas maiores
que a memria
Separao entre perspectiva: memria
lgica separada da memria fsica
Fluxo
Programas executveis no disco
Carregamento memria
Fila de entrada: processos no disco
esperando para serem carregados para
executar
Execuo
Acessa dados na memria
Finalizao
Liberao do espao
Fundamentos

Proteo de acesso
Registradores (base e limite)
definem proteo de espao entre os
processos
Endereamento Lgico x Fsico
Mapeamento de endereos da
memria
Endereo Lgico
Endereo gerado pela CPU
Endereo Fsico
Visto pela unidade fsica de memria
Endereo efetivo: carregado no registrador
de endereo da memria
Endereamento Lgico x Fsico
Um endereo lgico pode ser
mapeado para um endereo fsico
Mapeamento realizado pela MMU
(Memory-Management Unit)
Diversas abordagens de mapeamento

MMU Simples
Registrador de Relocao
Endereo fsico adicionado ao endereo
gerado
MMU Simples

End. Lgico + End. Relocao = End. Fsico

Endereamento Lgico x Fsico
Programa de usurio no v
endereos fsicos
Processo carregado inteiramente
memria


Carga dinmica
Mecanismo para melhorar a
utilizao do espao de memria
Uma rotina no carregada
At que seja chamada para execuo
Vantagem:
Uma rotina que no utilizada no ocupar
memria
Exemplos: rotinas de erro
Carga dinmica
1. Programa principal carregado
2. Quando uma rotina (A) do programa
precisa de outra (B)
1. Verificao: B est na memria?
2. Controle passado a B, aps o
carregamento

Bibliotecas compartilhadas
Outro mecanismo
Execuo linkada com a biblioteca
Processo dispe de recursos da biblioteca
Ligao dinmica ou esttica
Tempo de execuo ou combinados no
binrio do programa.
Swapping
Remoo temporria do processo
Aps um perodo, processo volta
execuo (trazido de volta
memria)

Swapping simples (2
processos)

Swapping
Armazenamento auxiliar grande
Troca pode ser custosa

Ex: Processo de 1 MB
Transferncia= P(1000K) / Taxa(5000K/s)
Transferncia = 1/5 s = 200 ms

Tempo proporcional quantidade de
memria trocada!
Tamanho de processos






Swapping Simples
Pouco utilizado
Verses de swapping modificadas
UNIX, Linux, Windows...
Variaes comuns:
1. Swapping habilitado apenas se o total de
memria livre esteja abaixo de um valor
limite
2. Swapping parcial: pores de processos so
trocadas para diminuir tempo da
transferncia
3. Em conjunto com memria virtual (Veremos
mais adiante!)




E nos sistemas embarcados?
Dispositivos Mobile: memria flash
Principal restrio:
Espao reduzido
Desenvolvedores devem utilizar memria
com cuidado especial
Em geral swapping no usado
iOS: pergunta aos processos para liberar
memria
Pode finalizar processos se no h memria
livre suficiente
Android atua de forma similar

ALOCAO DE MEMRIA
Mtodos de Alocao
Alocao contgua de memria
Paginao
Segmentao
Segmentao com paginao

Alocao Contgua
Normalmente a memria dividida
em parties
Memria baixa usada para o SO
Memria alta usada para os processos
recomendvel que a memria
abrigue vrios processos ao mesmo
tempo

Alocao Contgua
Com essas parties necessrio
proteger a memria baixa contra
acessos de usurio
E proteger os usurios uns dos outros
Proteo de memria
Registrador de Relocao
Registrador de limite
Proteo

Proteo
Registradores de limite
Faixa de endereos lgicos
Registradores de relocao
Utiliza o menor valor de endereo fsico
MMU mapeia o endereo lgico
dinamicamente
Cada endereo lgico deve ser
menor ou igual do que o reg. de
limite
Registrador de Relocao
Dinamicamente
Vantagem: pode redimensionar a memria
baixa: Flexibilidade
Exemplo: cdigo transiente
Drivers de dispositivo (ou outro servio do
SO)
No necessitam ficar na memria o tempo
todo

Alocao Contgua
Srie de parties
Cada partio pode conter um
processo
Grau de multiprogramao
Como alocar parties livres?
Na Alocao Contgua, cada processo
contido em uma nica partio
contgua (toca, junto a) para a partio
do prximo processo
Alocao Contgua
Fluxo:
1. Processo na fila de entrada
2. SO considera
1. Requisitos de memria do processo
2. Quantidade de memria disponvel
3. SO aloca o processo
1. Processo carregado na memria
4. Processo termina
1. Libera seu espao de memria



Alocao Contgua
E se no h parties disponveis?
Nenhuma partio grande o suficiente para
o processo?
SO pode esperar
At que uma partio seja liberada
SO pode tentar
Alocar outro processo da fila



Alocao Contgua

Problema de alocao de
memria dinmica
Como satisfazer uma requisio de
tamanho N de uma lista de parties
disponveis?
Tcnicas:
1. First-Fit
2. Best-Fit
3. Worst-Fit
First-Fit
Aloca primeira partio
Se for grande o suficiente
Busca na lista de parties livres:
Do incio
Ponto que parou a busca First-Fit anterior
First-Fit
Aloca primeira partio
Se for grande o suficiente
First-Fit
Aloca primeira partio
Se for grande o suficiente
Best-Fit
Aloca a menor partio disponvel
E compatvel com o processo
Busca ocorre na lista inteira
A menos que ela esteja ordenada por
tamanho

Best-Fit
Aloca a menor partio disponvel
E compatvel com o processo

Best-Fit
Aloca a menor partio disponvel
E compatvel com o processo

Worst-Fit
Aloca a maior partio
necessrio tambm a busca em
toda a lista
Pouco usada
Em geral, as tcnicas First-Fit e Best-Fit
so melhores, em termos de reduo de
tempo e utilizao de memria

Outros Problemas
Fragmentao Externa
H espao disponvel para alocao, mas
ele no contguo
First, Best e Worst-Fit sofrem desse
problema
Fragmentao Interna
Memria foi alocada, mas maior do que o
solicitado: parte interna, no efetivamente
usada, de uma partio
Fragmentao Externa
Uma soluo a compactao
Trocar as parties de lugar para reunir a
memria livre em um s bloco
Pode ser custoso
Outra soluo permitir que um
processo ocupe reas no-contguas
Paginao
Segmentao
Paginao
Permite que o endereamento seja
no-contguo
Memria fsica dividida em blocos
fixos chamados frames
Tamanho: potncia de 2
Memria lgica dividida em blocos
fixos chamadas pginas
Esquema utilizado em vrios SOs


Paginao
Tamanho das pginas/frames?
Definido pelo Hardware
Endereo gerado pela CPU
Nmero de pgina (p): usado como um
ndice em uma tabela, contendo o endereo
base para cada pgina
Deslocamento d (offset): utilizado com o
endereo base para definir o endereo
fsico na memria
Esquema de endereamento
Para um espao de endereo lgico
igual a 2
m
e um tamanho de pgina
igual a 2
n



m-n n


Esquema de endereamento
m n bits mais significativos de um
endereo designam o nmero de
pgina
n designa o deslocamento da pgina

Nmero de Pgina Deslocamento


m-n n



Hardware de Paginao

Modelo de Paginao Mtodo
Bsico
Pginas da memria lgica
mapeadas para frames da fsica

End.F = (ent*tam) + d

ent: valor/entrada,
contido na Tabela de
Pgina
tam: tamanho
(bytes) prdefinido
Exemplo de Paginao
Considere:
Tamanho de pgina: 4 bytes
Memria fsica: 32 bytes (8
pginas)

Verifica-se que a pgina 0
est indexada na tabela, para
o frame 5
Exemplo de Paginao
Qual o mapeamento para
endereo lgico 0?


Exemplo de Paginao
Qual o mapeamento para
endereo lgico 0?

En. lgico 0 ->
En. Fsico 20

En.F. = (5 * 4 ) + 0

Detalhando:
5: entrada p/ pgina n 0
4: tamanho de pgina
0: deslocamento

Exemplo de Paginao
Qual o mapeamento para
endereo lgico 3?
(0,3)


Exemplo de Paginao
Qual o mapeamento para
endereo lgico 3?
(0,3)

En. lgico 3 ->
En. Fsico 23

En.F. = (5 * 4 ) + 3

Detalhando:
5: entrada p/ pgina n 0
4: tamanho de pgina
3: deslocamento

Exemplo de Paginao
Qual o mapeamento para
endereo lgico 4?
(1,0)



Exemplo de Paginao
Qual o mapeamento para
endereo lgico 4?
(1,0)

En. lgico 4 ->
En. Fsico 24

En.F. = (6 * 4 ) + 0


Paginao
Note que no h fragmentao
externa
Qualquer frame livre pode ser alocado
quando o processo precisa
Mas pode sofrer fragmentao
interna
Exemplo: Pginas de 2048 bytes
Processo necessita 2049 bytes
Processo recebe 2 frames
Desperdcio quase total do 2 quadro

Paginao
Pginas do processo so carregadas
de onde?
Esquema utiliza o armazenamento
auxiliar dividido em blocos
Mesmo tamanho dos frames da memria

Paginao
Esquema deve guardar informaes dos
blocos livres
Um programa de N pginas
Necessita N frames
A primeira pgina carregada em um
dos frames alocados
E o n do frame colocado na tabela de
pginas
Prxima pgina carregada em outro
quadro
E assim sucessivamente...

Paginao
Antes da alocao Depois da Alocao
Paginao
Note tambm o papel do SO
Quais quadros esto disponveis? Alocados?
Total?
Mapeamento dos endereos
Manter cpia de tabela de pgina para cada
processo

Estrutura da tabela de pgina
Consulta na tabela de pginas
Tabela mantida na memria
Dois acessos memria: um para acessar
a tabela; outro para acessar o
dado/instruo
Diminui o tempo de acesso pela
metade
E nem sempre apenas um acesso tabela
(veremos mais adiante!)
Estrutura da tabela de pgina
Registradores dedicados:
Registrador de base da tabela de pgina e
registrador de tamanho da tabela
Soluo para melhorar os acessos
memria
Translation look-aside buffers (TLBs)

Estrutura da tabela de pgina
TLB na paginao
Grupo de registradores associativos
Chave x Valor
Contem poucas entradas
Se uma pgina encontrada
diretamente no TLB
O n do frame imediatamente recuperado
Estrutura da tabela de pgina
E se a pgina no estiver no TLB?
TLB miss: dever ser feita um acesso
tabela de pginas
Polticas de substituio de pginas
na TLB podem ser usadas
ltima recentemente usada, RR, aleatria
Estrutura da tabela de pgina
Sincronismo TLB <-> Tabela de
pgina
Flush TLB: apagar informaes da TLB a
cada troca de contexto ou nova tabela de
processo
ASIDS: suporte para indexar os processos
Proteo do espao de endereamento


Paginao com TLB

Exemplo: Paginao com TLB
Considere
Tamanho de pgina: 4 bytes
Memria Fsica: 64 bytes (16 frames)
Deslocamento sempre 0
Exemplo: Paginao com TLB
1.Qual o
mapeamento
para pgina 0?
2. Qual o
mapeamento para
a pgina 1?
3. Quantos acessos
foram realizados
para a pgina 0 e
para a 1?
4. Qual a taxa de
acerto no TLB,
neste caso?
Exemplo: Paginao com TLB

Taxa de acerto no TLB
Taxa de acerto igual a 80% significa
Que o n de pgina foi encontrado no TLB
em 80% das vezes
Comparando:
Considere 100 ns para acesso memria
TLB hit: 100 ns
TLB miss: 200 ns (tabela + mem.)

Taxa de acerto no TLB
Comparando:
Considere 100 ns para acesso memria
TLB hit: 100 ns
TLB miss: 200 ns (tabela + mem.)

T
efetivo de acesso
= 0,8 * 100 + 0,2 *200
T
efetivo de acesso
= 120 ns

Taxa de acerto no TLB
Comparando:
Considere 100 ns para acesso memria
TLB hit: 100 ns
TLB miss: 200 ns (tabela + mem.)

T
efetivo de acesso
= 0,8 * 100 + 0,2 *200
(80%) (20%)

Taxa de acerto no TLB
Comparando:
Considere 100 ns para acesso memria
TLB hit: 100 ns
TLB miss: 200 ns (tabela + mem.)

T
acesso
= 0,99 * 100 + 0,01 *200
(99%) (1%)
= 101 ns

1% de atraso no tempo de
acesso
Por que TLB funciona?
Princpio da Localidade
Tendncia do processador referenciar
dados e instrues localizadas em
endereos prximos
Como??
Blocos de cdigo sequencial
Loops/Estruturas de repetio
Dados acessados frequentemente
Proteo de Memria
Implementao simples
Associar bit de proteo para cada frame
Bit Vlido/Invlido para cada entrada
na tabela de pginas
Vlido: indica que a pgina est no espao
de endereamento lgico do processo
Invlido: pgina fora do endereamento
lgico do processo
Interrupo!
Proteo de Memria
Exemplo
Sistema com 14 bits de endereamento
(2
14
=0 a 16.383)
Tamanho de pgina: 2048 bytes
Considere que um processo necessita usar
endereos de 0 a 10.468 = 6 pginas
Quantidade mxima de pginas: 8


Proteo de memria

Compartilhamento de pginas
Outra vantagem da paginao:
Compartilhar pginas entre processos
Uma dados compartilhados somente
leitura
Cdigo reentrante: no muda
Dois processos podem executar o mesmo
cdigo
Editores de texto, compiladores

Compartilhamento de pginas
Cdigo compartilhado deve aparecer
no espao lgico de todos os
processos
Cdigo privado:
Cada processo possui partes separadas de
cdigo e dados

Compartilhamento de pginas

Compartilhamento de pginas

Paginao
Faixa de endereos lgicos pode ser
grande:
1 milho de entradas
Tabela de pginas se torna grande
Paginao
Soluo dividir a tabela em
pedaos menores (nveis)
Paginao Multinvel (Hierrquica)
Paginao de dois nveis
Tabela de pginas invertida
Hash de tabela de pginas
Paginao
Soluo dividir a tabela em
pedaos menores (nveis)
Paginao Multinvel (Hierrquica)
Paginao de dois nveis
Tabela de pginas invertida
Hash de tabela de pginas
Paginao em dois nveis
Paginao da Paginao
Tabela de pginas tambm
paginada
Paginao em dois nveis
Exemplo:
Endereo lgico: 32 bits
Tamanho de pginas: 4 KB

Paginao em dois nveis
Exemplo:
Endereo lgico: 32 bits
Tamanho de pginas: 4 KB

Paginao em dois nveis
Pi um ndice na tabela de pginas
externa
P2 o deslocamento na pgina da tabela
externa

Paginao em dois nveis
Esquema de traduo
Tabela de pginas invertida
nica tabela de pgina
Uma entrada na tabela
Para cada frame de memria
Cada entrada possui
Endereo lgico
Processo proprietrio
Tabela de pginas invertida
Para cada pgina, tem-se
<PID, N de pgina, deslocamento>
1. Quando h uma referncia, parte do
endereo lgico (PID,N pg)
utilizado para a busca na tabela
invertida
2. Se encontrado, o frame i , de
endereo fsico (i, deslocamento)
gerado pela MMU
Tabela de pginas invertida:
traduo

Tabela de pginas invertida
Vantagens
Diminuio na quantidade de memria
ocupada: tabela nica
Desvantagens
Busca na tabela pode ser demorada
Busca (pid,p) em toda a tabela
Dificuldade de implementao em sistemas
com memria compartilhada
Segmentao
Viso de usurio
Com paginao, o endereo lgico
particionado pelo hardware
Invisvel ao programador
Segmentao oferece suporte para a
viso diferenciada
Usurio especifica parmetros da entrada

Segmentao
Com segmentao, um programa
uma coleo de segmentos
Main
Procedimentos
Funes
Mtodos
Objetos
Variveis locais e globais
Pilha
Vetores
...
Segmentao Viso do
Usurio
Subrotina
Pilha
Programa
Principal
Objeto
Segmentao Mtodo Bsico
Endereos lgicos consistem de
<n de segmento, deslocamento>
O usurio especifica cada endereo
com n e deslocamento
Normalmente os compiladores criam
os segmentos que compem o
programa
Segmentao
Tabela de segmentos
Base: contm os valores de incio para os
endereos fsicos dos segmentos
Limite: especifica o tamanho do segmento
Registradores tambm so usados
Base de tabela de segmento (STBR)
Indica a posio da tabela na memria
Tamanho de tabela de segmento (STLR)
Indica o n de segmentos usados por um
programa



Segmentao
Um n de segmento vlido se
S < STLR
Segmentao tambm fornece
proteo
Bit de validao: associados s entradas na
tabela
Privilgios: read/write/execute




Esquema de Segmentao -
Hardware

Exemplo de segmentao
Memria
Fsica
Exemplo de segmentao
Qual o mapeamento para o
endereo lgico 0?
Considerar d = 100 (0,100)





Exemplo de segmentao
Qual o mapeamento para o
endereo lgico 0?
Considerar d = 100
End. Fsico = base + d
Tamanho (bytes) = limite

Segmento 0 inicia em 1400
1400 + 100
1500
Segmento 0 possui 1000 bytes



Exemplo de segmentao
Qual o mapeamento para
o endereo lgico 3?
Considerar d = 100 (3,100)



Exemplo de segmentao
Qual o mapeamento para
o endereo lgico 3?
Considerar d = 100
End. Fsico = base + d
Tamanho (bytes) = limite

Segmento 3 inicia em 3200
3200 + 100
3300
Segmento 3 possui 1100 bytes



Exemplo de segmentao

Exemplo de segmentao
Qual o mapeamento para
o segmento 1?
Considerar d = 500



Exemplo de segmentao
Qual o mapeamento para
o segmento 1?
Considerar d = 500

D < Limite? No!

Erro de endereamento!




Segmentao
Como os segmentos so variveis
Como satisfazer uma requisio de
tamanho N de uma lista de parties
disponveis?
Best-Fit ou First-Fit!
Dessa forma, a segmentao
(mtodo bsico) sofre de
fragmentao externa
Segmentao
Compactao uma soluo
Realocar segmentos
Outra soluo
Diminuir o tamanho mdio dos segmentos:
diminui a fragmentao
Segmentao com paginao
Segmentao com paginao
Duas unidades lgicas compem a
MMU
Segmentao e Paginao



Arranjo encontrado em
processadores Intel 32 bits
Exerccio - Segmentao
Faa o mapeamento dos seguintes
segmentos aos seus endereos
fsicos:
(0,100)
(1, 1100)
(3, 500)
(4, 100)
(2,600)
MEMRIA VIRTUAL
Memria Virtual
Tcnica para permitir a execuo de
processos que no estejam
inteiramente na memria
Ameniza a limitao do espao de
memria fsica
Memria Virtual permite a separao
da memria lgica da memria fsica

Memria Virtual
Vantagem
Programas podem ser maiores que a
memria fsica
Permite processos compartilharem arquivos
mais facilmente
Pode aumentar desempenho
Maior quantidade de programas (pedaos)
na memria: aumenta a utilizao de CPU
Porm, a implementao complexa
Pode diminuir desempenho se usada de
forma errada
Memria Virtual
Requer algoritmo de Alocao
Algoritmo de Substituio
FIFO, LRU...

Memria Virtual
Carga dinmica?
Tambm permite pedaos do programas
sendo carregados por demanda
Mas exige esforo extra do programador
Memria Virtual maior que a Fsica
Memria Virtual

Memria Virtual
Espao de endereamento virtual
Se refere a viso lgica de como um
processo alocado na memria
Normalmente implementada com
paginao sob demanda
Memria Virtual
Paginao sob demanda
Pginas so carregadas apenas quando a
execuo do programa for requerida
Pgina invlida: exceo
Pgina no est na memria fsica: falha
de pgina
A pgina carregada do disco (memria
secundria)
Processo similar com swapping
Memria Virtual
Exemplo para um disco com alocao
contgua de
blocos
Memria Virtual
Paginador carrega as pginas do
processo para a memria
Pginas que so necessrias; No o
processo todo
Requisitos
Tabela de pgina
Memria secundria: mantm as pginas,
disponibiliza um espao de troca (swap)

Memria Virtual Mtodo
Bsico
Bit Vlido/Invlido
Vlido: pgina est na memria e vlida
(dentro do espao do processo)
Invlido: falha de pgina ou a pgina est
fora do espao de endereamento
Execuo normal enquanto h
pginas residentes na memria
Falha de pgina demanda uma
interrupo
Memria Virtual Exemplo de
Falha de pginas

Memria Virtual Exemplo de
Falha de pginas

Falha de pgina - Tratamento
1. SO verifica se uma falha ou endereo
invlido
1. Endereo invlido: aborta o processo
2. No caso de falha de pgina, busca no
disco a pgina do processo
3. Busca de um frame livre na memria
4. Operao de leitura no disco
5. Atualizao da tabela
6. Reincio da instruo que causou a
falha


Falha de pgina - Tratamento
Tratamento inclui tambm
Salvar contexto (registradores, estado..) do
processo
Tempo de busca/latncia do disco
Enquanto processo espera pelo tratamento
da falha de pgina, outro processo pode
receber a CPU
Restaurao do contexto

Desempenho da paginao sob
demanda
Paginao sob demanda
Impacto no desempenho do sistema
Desempenho
Tempo de acesso memria (T
acesso
):
normalmente varia de 10 a 200 ns
Se no h falha:
T
efetivo
= T
acesso

Para tratamento de falha de pgina: tempo
mdio 8 ms [1]


Desempenho da paginao sob
demanda
Probabilidade de falha
p = 0 : sem falha
p = 1 : toda referncia gera uma falha
Tempo efetivo de acesso
T
efetivo
= (1-p) * T
acesso
+ p * T
falha



Desempenho da paginao sob
demanda
Exemplo: Probabilidade 1:1000
Tempo efetivo de acesso
T
efetivo
= (1-p) * T
acesso
+ p * T
falha


T
efetivo
=(1-p) * 200 + p*8 000 000

T
efetivo
=200 + 7 999 800 p
p = 0,01
T
efetivo
= 8199,9 ns ou 8,2 s

Aumento por um fator de 40

Desempenho da paginao sob
demanda
importante deixar a probabilidade
de falhas em um valor baixo
Impacto no desempenho dos processos:
tempo de execuo maior
Falha pode requerer substituio
Se no h frames livres na memria
Algoritmos de substituio de pgina

Algoritmos de Substituio
Mesma pgina pode ser trazida
memria vrias vezes
Algoritmo deve resultar em um n de falhas de
pginas diminudo
Tratamento de falhas de pginas
Agora inclui a substituio de pginas
Bit de modificao: indica que houve
modificao na pgina
Se houve modificao, ela deve ser persistida no
disco
Pginas somente leitura no podem
ser modificadas, podendo ser
substitudas
Algoritmos de Substituio
Substituio de pginas
complementa a paginao sob
demanda
Se houver um processo com 20
pginas
Pode-se executar mesmo que haja apenas
10 frames na memria fsica
Se uma pgina no estiver na memria,
ocorre a falha e ela substituir outra pgina
no usada, se no houver frame
livre


Algoritmos de Substituio
Algoritmos:
FIFO
timo
LRU
Segunda chance
Segunda chance melhorado
Algoritmos de Substituio
Como avaliar um algoritmo?
Menor taxa de falha de pginas
Executar sobre traces
Determinada sequncia de referncias de
memria
FIFO
Algoritmo mais simples
First-In, First-Out
Substituio considera pgina mais
antiga
Substitui a pgina que estiver no incio da
fila FIFO
A nova pgina entra no final da fila


FIFO
Considere o seguinte trace:
1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5
Considere uma memria de
capacidade de 3 quadros



1
2
3
FIFO: 1, 2, 3, 4, 1, 2, 5, 1, 2,
3, 4, 5
Memria com 3 frames
0 1 2 3 4



5 6 7 8 9 10


1
2
3
4
1
2
2
3
4
3
4
1
1
2
5
2
5
3
1
2
5
5
3
4
5
3
4
1
2
5
FIFO: 1, 2, 3, 4, 1, 2, 5, 1, 2,
3, 4, 5
Memria com 3 frames
0 1 2 3 4



5 6 7 8 9 10


1
2
3
4
1
2
2
3
4
3
4
1
1
2
5
2
5
3
1
2
5
5
3
4
5
3
4
1
2
5
9 Falhas de Pginas
(Vermelho)
FIFO: 1, 2, 3, 4, 1, 2, 5, 1, 2,
3, 4, 5
E com 4 Frames?


0 1 2 3 4



5 6 7 8 9


1
2
3
4
2
3
4
5
1
2
3
4
1
2
3
4
3
4
5
1
1
2
3
4
4
5
1
2
2
3
4
5
5
1
2
3
FIFO
10 Falhas de pginas
Anomalia de Belady
Aumento
no nmero
de frames
causou um
aumento
no nmero
de falhas
Algoritmo timo
Menor taxa de falha de pginas
Substituir a pgina que no ser
usada pelo perodo mais longo
No usado na prtica
Requer conhecimento futuro das
referncias de memria
Usado apenas para fins
comparativos/pesquisa


Algoritmo timo
Ex:




Pgina 2 ocupar pgina que no
ser usada (que no aparece no
trace) pelo maior perodo




Algoritmo timo





Quantidade de falhas: 9
FIFO: 15
Algoritmo LRU
Least-Recently Used (LRU)
Associa cada pgina com a data do ltimo
uso
A substituio feita na pgina que no foi
usada pelo maior perodo de tempo
Verso inversa do algoritmo timo
Olhar para trs ao invs de olhar para
frente
LRU
Dificuldade de implementao
LRU requer apoio do hardware
Como implementar?
Contadores: contador incrementado a cada
referncia, e associa um campo de tempo
de uso a cada entrada na tabela de pginas
Pilha: manter uma pilha de n de pginas,
e a cada referncia, a pgina removida e
colocada no topo da pilha. A Base a
pgina que no foi usada pelo
maior perodo de tempo

LRU
LRU
Poucos sistemas fornecem suporte
de hardware necessrio para o LRU
Alguns sistemas fornecem apenas
um bit de referncia associado
Aproximaes do LRU
Algoritmo Segunda Chance
Segunda chance melhorado

Algoritmo Segunda Chance
Segunda Chance um algoritmo
FIFO
Diferena a inspeo no bit de
referncia
Se bit = 0 : substituio
Se bit = 1 : pgina recebe uma segunda
chance e a prxima pgina (FIFO)
substituda
Bit passa a valer 0
Algoritmo Segunda Chance
Algoritmo Segunda Chance
Se todos os bits estiverem em 1, o
Segunda Chance atua como um
algoritmo FIFO
Algoritmo Segunda Chance
Melhorado
Modificao para o Segunda Chance
Adio de um bit
Bit de modificao
Inspeo com base no par ordenado
(0,0) No foi usada nem modificada
recentemente
(0,1) No foi usada recentemente mas foi
modificada
(1,0) Recentemente usada mas no foi
modificada
(1,1) Recentemente usada e modificada
Algoritmo Segunda Chance
Melhorado
Inspeo com base no par ordenado
(0,0) No foi usada nem modificada
recentemente Melhor para substituir
(0,1) No foi usada recentemente mas foi
modificada No to boa para substituir, pois
ela deve ser gravada no disco antes da
substituio
(1,0) Recentemente usada mas no foi
modificada Provavelmente ser usada
novamente
(1,1) Recentemente usada e modificada
Provavelmente ser usada e precisar ser
gravada
Algoritmo Segunda Chance
Melhorado
Verifica-se a classe que a pgina
pertence
Menores classes sero substitudas
primeiro

Outros algoritmos
Baseados em contadores: Menos
Frequentemente Usada e Mais
Frequentemente Usada
Least Frequently Used (LFU): Pginas muito
usadas podem ter contador alto, e assim o
algoritmo substitui a pgina com menor
contador
Most Frequently Used (MFU): supe que a
pgina com menor contagem provavelmente
acabou de chegar e portanto deve ser usada
novamente
No so muito utilizados
Dvidas nos algoritmos de
substituio??
Talvez um applet pode ajudar
http://www.cs.uiuc.edu/class/sp06/cs241/
Animations/PageReplace/replacement.html
FIFO, LRU e timo

Outras Consideraes
Thrashing
Modelo Working-Set
Pr-paginao
Estrutura de programas
Thrashing
Thrashing: situao na qual um
processo no possui pginas
suficientes
Em outras palavras, a taxa de falhas
muito alta: o processo perde mais tempo
paginando do que executando

Thrashing

Thrashing
Pouca utilizao de CPU
SO pode pensar que deve aumentar a
quantidade de processos na memria!
Thrashing leva a uma alta atividade
de paginao
Para evitar o thrashing, necessrio
fornecer a um processo a quantidade
de frames que ele precisa
Como? Working-Set
Modelo Working-Set
Estratgia baseada no princpio da
localidade
Utiliza um valor delta () para
montar um conjunto de pginas
prximas
Otimiza a utilizao de CPU
Evita o thrashing e consequentemente
permite o aumento no grau de
multiprogramao
Modelo Working-Set
Exemplo
: tamanho do conjunto
WS: conjunto de trabalho (Working-Set)
T
i
: instante
Pr-Paginao
Quando um processo iniciado, na
paginao sob demanda
Grande nmero de falhas de pgina
E quando um processo retomado, mesma
situao
Pr-paginao visa a diminuir a
quantidade de falhas no incio
Utiliza o working set do processo
Carregamento do conjunto inteiro
Estrutura de Programas
Paginao sob demanda fornece
transparncia
Porm, em alguns casos o
desempenho pode ser melhorado
com aes do usurio (ou
compilador)

Estrutura de Programas
Por exemplo, o cdigo





Matrizes so armazenadas em linha
Data[0][0], Data[0][1]...
Estrutura de Programas
Supondo pginas de 128 bytes
Cada linha corresponde a uma
pgina
Se menos de 128 frames forem
alocados ao processo
O fluxo do cdigo ser dado por linha!
128*128 = 16.384 falhas de pginas!
Estrutura de Programas
Se o cdigo for modificado




No mesmo cenrio, o nmero de
falhas de pginas diminui
128 falhas de pginas

RESUMO
Gerncia de memria importante
fator de desempenho do sistema
Endereo Lgico
Gerado pela CPU
Espao de usurio
Endereo Fsico
Endereo efetivo na memria principal
RESUMO
Mtodos de alocao de memria
incluem
Alocao contgua
Paginao
Segmentao
Fragmentao Externa
Fragmentos de memria livre no permitem
alocao total
Fragmentao Interna
Espao alocado (partio) no totalmente
usado
RESUMO
Memria Virtual visa a diminuir a
limitao da memria fsica
Implementao com paginao sob
demanda
Pginas carregadas de acordo com a
necessidade
RESUMO
Algoritmos de substituio incluem
FIFO
LRU
timo
Segunda Chance e Segunda Chance
melhorado
Algoritmos avaliados com a taxa de
falhas de pginas
Ocorre quando a pgina no est na
memria e deve ser carregada
Para casa
Leitura da parte III (Captulos 9 e
10) [1]
Lista de exerccios 3 (Gerncia de
Memria)

Bibliografia
1. SILBERSHATZ, A. et al. Operating
systems Concepts. John Wiley & Sons,
New York, 5 edio. 1997.
2. STALLINGS, W. Operating system
concepts. Prentice Hall, New Jersey, 3
edio, 1997.
3. TANENBAUM, A. et al. Operating
systems: design and implementation.
Prentice Hall, New Jersey, 1997.
4. TANENBAUM, A. et. al. Modern
Operating Systems. Prentice Hall,
New Jersey, 1992.

You might also like