Você está na página 1de 46

Sistemas Operacionais

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

 Todas as páginas lógicas são


carregadas na memória
Mecanismo básico de Paginação
 Tabela de páginas
 Há um bit de validação de cada página
 V = página válida = página carregada na memória
 I = página inválida = página não carregada na memória ou
fora do espaço de endereçamento do processo

 Ao acontecer um acesso à memória...


 Busca tabela de páginas
 Bit v  faz mapeamento para endereço físico
 Bit i  MMU gera interrupção de proteção ao SO
 No PCB há informação se
 a página está fora do espaço de endereçamento de um processo
(neste caso a operação é abortada)
 ou
 houve FALTA DE PÁGINA – Page Fault (página não carregada)
Page Fault – Falta de Página

 Ao ocorrer FALTA DE PÁGINA, o SO...


1. Suspende o processo e seu PCB vai para a “fila de
processos esperando por página lógica”
2. Uma página física livre deve ser alocada
3. A página lógica do processo deve ser localizada no
disco
4. Leitura no disco: endereço da página lógica e endereço
da página física alocada
5. Atualiza a TABELA DE PÁGINAS
6. Retira processo da fila de espera e aloca na fila de
prontos
7. Processo repete a instrução que causou a falta de
página
Paginação por Demanda
Processo 1
M. Lógica
Tabela Páginas M. Física
0 A Lógica Física Bit
0 D
1 B 0 1 v Disco
2 C 1 A
1 5 v A
3 D 2 X
2 i B
3 X
3 0 v C
4 X
D
5 B

Pager: parte do SO responsável por carregar uma página específica de


um processo do disco para a memória principal
Memória Virtual
Substituição de Páginas na
Memória
Substituição de Páginas na Memória
 Ao acontecer Page Fault (Falta de Página),
há necessidade de uma página livre na
memória física.

 Para tanto, o SO deve


 escolher uma página lógica (Página Vítima)
 copiar o conteúdo dessa página para o disco
 marcar a página como inválida, na tabela de
páginas
Substituição de Páginas na Memória -
Exemplo
Processo 1
M. Lógica
Tabela Páginas M. Física
0 A Lógica Física Bit
0 D
1 B 0 1 v Disco
2 C 1 A
1 5 v A
3 D 2 F
2 i B
3 E
3 0 v C
4 G
D
5 B
Processo 2 E
Algoritmo de
F
M. Lógica Substituição de
Tabela Páginas G
0 E Páginas
Lógica Física Bit H
1 F 0 3 v
SO escolhe PÁGINA VÍTIMA
2 G 1 2 v
3 H 2 4 v
3 i MMU - interrupção
Substituição de Páginas na Memória -
Exemplo
 Processo 2 tenta acessar sua página
lógica 3
 MMU gera interrupção de proteção 
Algoritmo de Substituição de Páginas 
escolhe a página
 Atualiza a tabela de páginas
 Copia o conteúdo da página para o disco
 Página física livre... continua o processo
normalmente
Substituição de Páginas
 Bits auxiliares são adicionados à tabela de página para
auxiliar a substituição:
Bit de Sujeira (dirty bit): indica quando a página foi alterada
durante a execução do processo (é zerado quando a página é
carregada; “ligado” quando acontece a escrita).

Bit de Referência (reference bit): indica quando a página foi


acessada pelo processo. É inicializado com ZERO quando a
página é carregada; recebe 1, quando a página é usada.

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

Objetivo é gerar a menor taxa de falta de páginas


Algoritmos de Substituição de Página
 Para determinar o número de faltas de
páginas:
 String de Referência
 Série de referências à memória
 Quadros
 Saber o número de quadros disponíveis
Algoritmo Ótimo
 Algoritmo Ótimo
 O algoritmo de substituição de página ótimo
é o que coloca a falta de página em um
futuro mais longe
 Menor taxa de falta de páginas

 Conhecido com OPT ou MIN


 Consiste em substituir a página que não será
usada pelo período mais longo
 Para tanto, é necessário conhecer as
próximas referências às páginas (difícil de
implementar)
FIFO
 FCFS (First Come, First Served) ou
FIFO (First In, First Out)

 A página escolhida para ser substituída (página


vítima) é a página que está há mais tempo na
memória

 A MMU deve ter uma lista com os números das


páginas lógicas. Quando uma página é carregada na
memória, seu número é colocado no final da lista.

 Desempenho ruim  não considera se a página foi


acessada

 Exemplo
 Rotina de Inicialização
 Rotinas de Bibliotecas
FIFO (Exemplo)

String de Referência às Páginas: 7 0 1 2 0 3 0 4 2

Páginas Físicas (quadros)


LRU
 LRU (Least Recently Used)
 Aproximação do Algoritmo Ótimo
 Escolhe a página que há mais tempo não é usada
(acessada)
 Considera que páginas acessadas recentemente por um
processo serão novamente acessadas por ele num
futuro próximo
 Exige suporte de hardware (registradores adicionais)
 alto custo para manter na tabela de páginas o momento
exato do último acesso
 Raramente encontrado  existem aproximações

 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)

 Com o histórico, pode-se saber quais são


as páginas que foram recentemente
acessadas:
 Páginas que possuem um número inteiro maior
 É escolhida como PÁGINA VÍTIMA a que
possuir o menor inteiro
Histórico de Bits de Referência (exemplo)

P3 P1 P3 P1 P2 P0 P1 P2 P2 P0

Amostra 1 Amostra 2 Amostra 3 Amostra 4 Tempo

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

 Quando há necessidade de substituição de página, é


examinada a classe a qual pertence a página.
 Substitui-se a primeira página encontrada na menor classe
não-vazia
 Preferência por manter na memória páginas que foram
modificadas.
 Usado no Machintosh
Substituição baseada em contagem
 Manter um contador do número de
referências feitas em cada página

 Não são comumente encontrados

 Implementação cara

 Não são aproximações para o ótimo.


Memória Virtual
Buffer de Páginas
Buffer de Páginas
 Usado em conjunto com um algoritmo de
substituição de páginas

 Pode ser usado mesmo quando a MMU não


implementa o bit de referência

 Há um apontador que percorre a lista circular de


páginas

 A gerência da memória mantém um conjunto de


quadros livres (pool), quando há necessidade de
substituição, remove um desses quadros livres
Buffer de Páginas
 A página indicada pelo apontador é marcada
como inválida, atualizada no disco e incluída no
conjunto de páginas livres, porém seu conteúdo
não é alterado
 Se for acessada em seguida, há falta de página,
porém não é necessário acesso ao disco (oferece uma
segunda chance de permanecer na memória e evitar
acesso a disco)  outra página deve ser escolhida
como vítima
 Sempre que uma página é escolhida como
vítima e é gravada no disco, ela passa a fazer
parte do pool de quadros livres.
Memória Virtual
Alocação de Quadros (Páginas Físicas)
Frame-Allocation Algorithm
Alocação de Quadros
 Quadros = Páginas físicas

 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á?

 Definido pela arquitetura do computador


e a quantidade máxima pela quantidade
de memória disponível
Alocação de Quadros (2)
 Algoritmos de Alocação de Quadros

 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

 Quando um processo possui um número


muito pequeno de páginas físicas para
executar e sua taxa de falta de páginas
aumenta, o processo para de realizar
qualquer trabalho útil, pois se ocupa em
tratar as faltas de páginas.

 Está ocorrendo thrashing.


Thrashing
 Um processo está em estado de thrashing
quando a maior parte do seu tempo é usada
para paginação ao invés de execução.

 Thrashing
 problemas de desempenho

 O tratamento da falta de páginas é mais lento que o acesso


normal à memória

 Quando um processo tem um número pequeno de quadros,


há muita falta de página  processo pára e espera pela
página  Thrashing
Thrashing
 A consequência do thrashing é a queda global de
desempenho do sistema

 Em uma situação de thrashing, o SO “conclui”


erradamente que estão faltando processos na fila de
prontos, pois o uso da CPU está baixo

 Então, insere novos processos na fila de prontos


(escalonador de curto prazo)

 Faz com que diminua a quantidade de quadros por


processo  agravando a situação  thrashing
Thrashing
 Causa do Thrashing
Utilização de CPU

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.

 A gerencia de memória realiza um revezamento


entre os processos suspensos e aqueles
executando.

 O swapping não é algo desejável, pois aumenta


o tempo de resposta dos processos.

 A gerencia de memória deve observar...


Thrashing
 ...quando o thrashing irá acontecer para
usar swapping (não utilizado sempre):
 usa a TAXA MÍNIMA ACEITÁVEL de faltas de
páginas
ou
 HISTÓRICO DE BITS DE REFERÊNCIA

 O SO deve trabalhar de forma pró-ativa,


evitando o thrashing
Thrashing
 Para evitar: procura designar ao processo
o número de quadros necessários

 Como saber quantos quadros um processo


precisa?
 Estratégia do conjunto de trabalho (working-
set)
 Usa o Modelo de Localidade
 Quantos quadros um processo está realmente
utilizando?
 Quais quadros estão sendo utilizados?
Thrashing
 Modelo de Localidade
 Localidade = conjunto de páginas usadas conjuntamente
 Programa pode ter várias localidades
 Conforme a estrutura do programa e sua estrutura de dados

 Conjunto de trabalho = é o conjunto de páginas nas


 referências de páginas mais recentes

 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 

 Para calcular a Demanda total de quadros (D) deve-


se fazer o somatório do conjunto de trabalho
(Working-Set Size - WSS) de cada processo:
D = WSSi

 Se D > nº de quadros, ocorrerá thrashing


Thrashing
 Assim, o SO aloca para cada processo o número
de quadros correspondente ao seu WS

 Se o D exceder o número total de quadros, o SO


deve suspender um processo  Evita o thrashing

 Dificuldade da técnica do Working-Set:


 O conjunto de trabalho é dinâmico, sendo difícil defini-lo

 Mas é uma técnica que pode ser empregada pelo


sistema

Você também pode gostar