Escolar Documentos
Profissional Documentos
Cultura Documentos
Memória Virtual
Sumário
Conceitos iniciais
Mecanismo básico de paginação
Page fault
Paginação por demanda
Substituição de páginas na memória
Algoritmos de substituição de páginas
Buffer de páginas
Alocação de quadros
Thrashing
Memória Virtual
Permite a execução de programas que não
são carregados completamente na
memória física
Exemplos
Programa com funções raramente utilizadas
Rotinas de tratamento de exceções ou acesso
a arquivos
Programas que para execução exigem maior
espaço de memória
Memória Virtual
Tanto a Paginação quanto a Segmentação
podem ser estendidas para o uso de
Memória Virtual
Foco:
Paginação por Demanda ~ mecanismo básico
de paginação
Bit de Tranca (lock bit): é usado para trancar uma página lógica
na memória física (a página bloqueada não pode ser escolhida
como vítima).
Tabela de Páginas
Pág. Pág. Bit Bit Bit Bit
Lógica Física v/i sujeira referência tranca
Algoritmos de Substituição de Página
ou Page-Replacement Algorithm
Algoritmo Ótimo
FCFS ou FIFO
LRU
Aproximações do LRU
Histórico de Bits de Referência ou Bits de Referência
Adicionais
Segunda Chance ou Algoritmo do Relógio (clock
algorithm)
Segunda Chance melhorado
Substituição baseada em contagem
Exemplo
Rotina de Inicialização
Rotinas de Bibliotecas
FIFO (Exemplo)
Exemplo:
Aproximações do LRU
Histórico de Bits de Referência
Segunda Chance
Segunda Chance melhorado
Histórico de Bits de Referência
Histórico de Bits de Referência ou
Bits de Referência Adicionais
Cada página possui um bit de referência
associado
A MMU
liga esse bit de referência cada vez que a página é
acessada; esses bits são zerados quando copiados
para o histórico
implementa um histórico (amostra periódica dos
bits de referência)
Histórico de Bits de Referência (2)
Histórico tem tamanho limitado (no
exemplo a seguir, 3 bits)
P3 P1 P3 P1 P2 P0 P1 P2 P2 P0
P0 0 P0 0 1 0 P0 1 0 1
P0 1 0
P1 1 P1 1 1 1 P1 0 1 1
P1 1 1
P2 1 1 0 P2 1 1 1
P2 0 P2 1 0
P3 0 1 1 P3 0 0 1
P3 1 P3 1 1
P4 0 0 0 P4 0 0 0
P4 0 0
P4 0
Segunda Chance
Segunda Chance ou
Algoritmo do Relógio (clock algorithm)
É também baseado em bits de referência
Todas as páginas da memória formam uma lista circular
Um apontador percorre a lista e indica qual a próxima
página a ser usada como vítima
Quando uma página é necessária, a MMU verifica o
bit de referência da página apontada
Desligado (0) página é escolhida como vítima
Ligado (1) desliga (recebe uma chance) e avança uma
posição na lista circular, continuando a verificação...
No Pior Caso: faz a volta completa na lista
(analogia com os ponteiros do relógio)
Segunda Chance melhorado
Usa o bit de referência e o bit de sujeira (modificação)
(0,0): não referenciada, não modificada
(0,1): não referenciada recentemente, porém modificada
(1,0): recentemente referenciada, mas não modificada
(1,1): recentemente referenciada, modificada
Implementação cara
Questão:
Quantas páginas lógicas de cada processo
devem ficar na memória física em cada
momento?
Quantos quadros cada processo obterá?
ALOCAÇÃO IGUAL
m número de quadros
p processos
Exemplo:
m = 93; p = 5; cada processo receberá 18 quadros;
os 3 restantes farão parte do buffer
ALOCAÇÃO PROPORCIONAL
Reconhecer diferentes quantidades de memória por
processo
Alocação de Quadros (3)
ALOCAÇÃO PROPORCIONAL – cont.
Processos são tratados da mesma forma,
independente da prioridade
A quantidade de quadros é alocada conforme a
proporção ocupada de memória virtual
Processo Pi tem Si de memória virtual
S = Si
m número de quadros
ai número de quadros ao Pi
ai = Si / S * m
Alocação de Quadros (4)
ALOCAÇÃO PROPORCIONAL – exemplo
m = 62
P1, S1 = 10 páginas
P2, S2 = 127 páginas
S = 10 + 127 = 137
a1 = 10 / 137 * 62 4
a2 = 127 / 137 * 62 57
Alocação de Quadros (5)
Ainda sobre a alocação de quadros, há
duas formas de acontecer a substituição
na falta de página:
ALOCAÇÃO LOCAL
Acontece entre as páginas do próprio processo que
gerou a falta
ALOCAÇÃO GLOBAL
Acontece entre as páginas de todos os processos
(processos de prioridade mais baixa acabam
perdendo para os processos de prioridade mais
alta)
Memória Virtual
Thrashing
Thrashing
O tratamento da falta de página é mais
lento que o acesso normal à memória
Thrashing
problemas de desempenho
Grau de Multiprogramação
Thrashing
Para os usuários, o thrashing se apresenta
como:
Congelamento do sistema
Com alocação local: este congelamento pode ser
apenas com alguns processos
Com alocação global: o congelamento pode ser de
todo o sistema!
Para retirar o sistema do estado de
Thrashing é necessário suspender
temporariamente alguns processos
Swapping
Thrashing
Com swapping é possível manter na memória
principal apenas um número de processos que
conseguem executar de forma satisfatória.
Exemplo:
Referência às páginas
...2 6 1 5 7 7 7 7 5 1 ... 3 4 4 4 3 4 3 4 4 4
WS(t1) = {1, 2, 5, 6, 7} WS(t2) = {3,4}
Thrashing
A exatidão do conjunto de trabalho depende de