O documento discute técnicas de gerenciamento de memória virtual, incluindo paginação sob demanda, substituição de páginas usando algoritmos como FIFO e LRU, e como a memória virtual permite que programas sejam executados parcialmente na memória principal.
2. Introdução
Paginação sob Demanda
Substituição de Páginas
Algoritmos de Substituição de Páginas
Procedimentos de Armazenamento de Páginas
Política de Alocação Local versus Alocação Global
Thrashing
Working Set (Conjunto de Trabalho)
Freqüência de Interrupção de Página Ausente
Tamanho da Página
Tamanho da TLB
Bloqueio de Páginas na Memória
Estrutura de Programas
Exemplos de Sistemas Operacionais
Eduardo Nicola F. Zagari
2
Memória Virtual
3. Todas as estratégias de gerência até agora mantêm processos
inteiros na memória
Em muitos casos, não é necessário o programa inteiro estar em
memória:
código de tratamento de erro
vetores, listas e tabelas geralmente alocam mais memória do que
usam
certas opções e características de programas raramente são
usadas
Vantagens de executar programas parcialmente em memória:
programa não é limitado pelo tamanho da memória
um maior número de processos podem ser carregados ao mesmo
tempo aumentando a utilização da CPU
menor necessidade E/S para carregar ou fazer swapp de processos
Eduardo Nicola F. Zagari
3
Memória Virtual
4. Técnica de Memória Virtual: separação da memória lógica de
usuário e memória física
Somente parte dos programas precisam estar carregados na
memória para execução
Espaço de endereçamento lógico pode, portanto, ser muito maior
que o espaço de endereçamento físico
Permite que espaços de endereçamento sejam compartilhados por
vários processos
Possibilita criação de processos de forma mais eficiente
Memória virtual pode ser implementada via:
Paginação por demanda
Segmentação por demanda
Eduardo Nicola F. Zagari
4
Memória Virtual
5. Memória Virtual
Página 0 MAIOR que
Página 1 Memória Física
Página 2
Memória Física
Mapa da Memória
Página n
Memória Virtual
Memória Secundária
Eduardo Nicola F. Zagari
5
Memória Virtual
6. Similar ao sistema de swapping, mas aplicado somente à página
requisitada e não a todo o processo
Traz uma página para a memória somente quando ela é requisitada
Menor necessidade de I/O
Menor necessidade de memória
Respostas mais rápidas
Maior número de usuários
Página requisitada ⇒ referência para ela
Referência inválida ⇒ aborta
Ausente da memória ⇒ traz para memória
Suporte de hardware : bit de presença/ausência (ou válido/inválido)
Page-fault (trap) : interrupção por falta de página
Eduardo Nicola F. Zagari
6
Memória Virtual
7. Um bit de presença/ausência é associado com cada entrada da tabela
de página: (0 ⇒ ausente da memória , 1 ⇒ presente na memória)
Inicialmente o bit é ajustado para 0 em todas as entradas
Exemplo: # Bloco
Bit de presença/ausência
1
1
1
1
0
…
0
0
Tabela de Páginas
Durante uma tradução de endereço, se o bit de presença/ausência na
entrada da tabela de página estiver igual a 0 ⇒ FALTA DE PÁGINA
(page fault).
Eduardo Nicola F. Zagari
7
Memória Virtual
8. bloco bit presença/ausência
0
1
0 Página A 0 4 p 2
1 Página B 1 a 3
2 Página C
3 Página D
2 6 p 4 Página A
4 Página E 3 a 5
5 Página F 4 a 6 Página C
6 Página G 7
7 Página H
5 9 p
8
6 a
Memória Virtual
A B 9 Página F
7 a Memória Física
Tabela de Páginas
C D E
F G H
Memória Secundária
Eduardo Nicola F. Zagari
8
Memória Virtual
9. 3
S.O.
2
1
Vá para X
a
6
Bloco Livre
Tabela de Páginas 4
5
Memória Física
Eduardo Nicola F. Zagari
9
Memória Virtual
10. 1 Referência: verifica na tabela do processo se referência é válida
2 Trap: se a referência for inválida ERRO; se for válida, mas a página
não está na memória, gera interrupção de falta de página
3 Página na memória secundária: localiza um bloco livre
4 Carrega página: realiza uma operação no disco (E/S) para ler a
pág. desejada e carregá-la p/ o bloco livre
5 Modifica tabela de páginas: terminada a op. de E/S, atualiza a
tabela p/ indicar que a pág. está na memória
6 Reinicia execução da interrupção: como o estado do processo foi
salvo, reinicia a interrupção que causou a falta de página (endereço
de pág inexistente na mem.)
Eduardo Nicola F. Zagari
10
Memória Virtual
11. Paginação por demanda pura:
não levar nenhuma página para memória até que ela seja
requisitada
Queda de desempenho?
Padrão de localidade de referência
Número da página
Tempo de execução
Eduardo Nicola F. Zagari
11
Memória Virtual
12. bloco bit presença/ausência
PC
3 p
0 H p
4 0 S.O.
1 Carregar M
2 J 5 p 1
3 M a 2 D
Memória Lógica
Tabela de Páginas 3 H B
do usuário 1 do usuário 1 4 Carregar M
0 A 6 p 5 J M
1 B 6 A
2 D
a E
7
3 E 2 p
Memória Física
Memória Lógica 7 p
do usuário 2
Tabela de Páginas
Eduardo Nicola F. Zagari
do usuário 2 12
Memória Virtual
13. Substituição de página: quando ocorre uma falta de página e não
existe nenhum bloco disponível, um bloco que não está sendo
usado no momento é selecionado e liberado. A rotina de
tratamento de uma page-fault:
1. Localizar a página desejada no disco
2. Localizar um bloco livre:
se existir um bloco livre, usá-lo
caso contrário, usar um algoritmo de substituição de página para
selecionar a que será substituída
Salvar a página a ser substituída no disco e atualizar as tabelas
de blocos e páginas de acordo
3. Ler a página desejada no “novo” bloco e atualizar as tabelas
4. Reiniciar o processo do usuário
Eduardo Nicola F. Zagari
13
Memória Virtual
14. Se não existe nenhum bloco livre note que são necessárias 2
transferências de página
para reduzir esta sobrecarga, usa-se um bit de modificação
ele é ativado pelo hardware sempre que qualquer palavra ou
byte desta página é alterado, de forma a indicar que a página
foi modificada
se a página é selecionada para ser substituída:
– bit de modificação ativado deve ser gravada no disco
– bit de modificação não ativado não é necessário ser
regravada no disco (o bloco é sobreposto)
Eduardo Nicola F. Zagari
14
Memória Virtual
15. Menor taxa de falta de página
Ex: seqüência de referências a endereços de memória
0100, 0432, 0101, 0612, 0102, 0103, 0104, 0101, 0611, 0102, 0103,
0104, 0101, 0610, 0102, 0103, 0104, 0101, 0609, 0102, 0105
Se cada página tiver 100 bytes, os acessos serão às pags.:
1, 4, 1, 6, 1, 6, 1, 6, 1, 6, 1
Número de interrupções
de páginas ausentes
Número de blocos
Eduardo Nicola F. Zagari
15
Memória Virtual
16. Algoritmo FIFO (First-In, First-Out) ou PCPS (Primeiro a Chegar,
Primeiro a Sair)
Algoritmo Ótimo
Algoritmo NRU (Not Recently Used)
Algoritmo LRU (Least Recently Used)
NFU (Not Frequently Used)
Aging
Algoritmo da Segunda Chance
Algoritmo do Relógio
Algoritmo MFU
Eduardo Nicola F. Zagari
16
Memória Virtual
17. A página que foi primeiro utilizada (first-in) será a primeira a ser
retirada (first-out)
Fila (lista encadeada) de páginas
Início: Página mais velha
Fim: Página mais nova
Falta de página
Retira página do início
Insere página nova no fim
Simples
A princípio: razoável que a página há mais tempo no working set
deva ser retirada 1o mas isto nem sempre é verdade...
Eduardo Nicola F. Zagari
17
Memória Virtual
19. 0 1 2 3 0 1 4 0 1 2 3 4
0 1 2 3 0 1 4 4 4 2 3 3
3
blocos 0 1 2 3 0 1 1 1 4 2 2
0 1 2 3 0 0 0 1 4 4
F F F F F F F F F = 9 fault pages
0 1 2 3 0 1 4 0 1 2 3 4
0 1 2 3 3 3 4 0 1 2 3 4
4 0 1 2 2 2 3 4 0 1 2 3
blocos 0 1 1 1 2 3 4 0 1 2
0 0 0 1 2 3 4 0 1
F F F F F F F F F F = 10 fault pages
Eduardo Nicola F. Zagari
19
Memória Virtual
20. Trocar a página que não será usada no período mais longo
Desempenho – deseja-se um algoritmo que resulte em um
número mínimo de faltas de páginas (page faults).
7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1
17 7 7 2 2 2 2 2 7
2 0 0 0 0 4 0 0 0
3 1 1 3 3 3 1 1
9 faltas de páginas
Eduardo Nicola F. Zagari
20
Memória Virtual
21. Problema: saber quando cada página será referenciada
Impossível de se implementar
Utilidade: Comparação com relação aos demais algoritmos
Eduardo Nicola F. Zagari
21
Memória Virtual
22. Hardware: 2 bits de estado associados a cada página
Bit R (referência): ativado quando a página é referenciada
Bit M (modificação): ativado quando ela é modificada
bits de proteção
bit de modificação bit presença/ausência
bit de referência bloco
entrada da tabela de páginas
Bits ativados por hardware e desativados por software
Eduardo Nicola F. Zagari
22
Memória Virtual
23. Se o hardware não dispõe dos bits R e M:
Simulados por software
Processo iniciado Ausente na memória (tabela de páginas
zerada)
Referência a uma página falta de página
SO ativa bit R (tabela interna), atualiza tabela de páginas, seta
proteção para “Somente Leitura” e retoma instrução
Se instrução de escrita nova falta de página
SO ativa bit M e muda modo da página para “Leitura/Escrita”
Eduardo Nicola F. Zagari
23
Memória Virtual
24. Escolhe a página que não foi recentemente utilizada
Algoritmo:
Processo iniciado bits de página (R e M) iguais a zero
Periodicamente, bit R é zerado
Falta de página SO inspeciona páginas e as classifica:
Classe 0: não referenciadas, não modificadas
Atenção
Classe 1: não referenciadas, modificadas
Classe 2: referenciadas, não modificadas
Classe 3: referenciadas, modificadas
NRU remove página aleatória da classe não vazia de numeração
mais baixa
Eduardo Nicola F. Zagari
24
Memória Virtual
25. Seleciona a página usada há mais tempo, isto é, o objetivo é
retirar aquela que está há mais tempo sem ser referenciada
Realizável alto custo
Início: Página usada mais recentemente
Manter lista
Fim: Página usada menos recentemente
dificuldade: atualizar a cada referência à memória
Eduardo Nicola F. Zagari
25
Memória Virtual
27. Implementação por hardware: 2 maneiras
Contador: um contador é adicionado à CPU e incrementado
automaticamente a cada referência à memória. Toda vez que é feita
uma referência à página, o conteúdo do contador é copiado para o
campo instante-de-uso na entrada da tabela de páginas referente à
página acessada.
seleciona-se a página com o menor contador
Matriz nxn (onde n é o número de blocos): toda vez que a página k é
referenciada
colocam-se todos os bits da linha k em 1
depois, zeram-se todos os bits da coluna k
em cada instante, a página LRU corresponde à linha com o
menor valor binário armazenado
Eduardo Nicola F. Zagari
27
Memória Virtual
29. Implementação por Pilha – mantém uma pilha do número das
páginas em uma lista duplamente encadeada da seguinte forma:
Página referenciada:
Mova-a para o topo
Requer que 6 ponteiros sejam atualizados
Não há a necessidade de busca para substituição
Eduardo Nicola F. Zagari
29
Memória Virtual
31. requer um contador em software associado a cada página
a cada interrupção de tempo, SO faz
Cont ← Cont + bit R
Falta de página SO escolhe página com menor Cont
Problema: nunca esquece referências anteriores
Eduardo Nicola F. Zagari
31
Memória Virtual
32. Algoritmo Aging (Envelhecimento): modificação do NFU
Contadores são sempre deslocados um bit antes de serem
somados com o bit R
Bit R é adicionado ao bit mais à esquerda do contador, ao invés de
ser somado ao mais à direita
Falta de página SO escolhe página com menor Cont
Eduardo Nicola F. Zagari
32
Memória Virtual
33. Bits R Bits R Bits R Bits R Bits R
das páginas das páginas das páginas das páginas das páginas
101011 110010 110101 100010 011000
Cont 0
10000000 11000000 11100000 11110000 01111000
Cont 1
00000000 10000000 11000000 01100000 10110000
Cont 2
10000000 01000000 00100000 00010000 10001000
Cont 3
00000000 00000000 10000000 01000000 00100000
Cont 4
10000000 11000000 01100000 10110000 01011000
Cont 5
10000000 01000000 10100000 01010000 00101000
Eduardo Nicola F. Zagari
33
Memória Virtual
34. É um algoritmo FIFO modificado
Possui um bit de referência (bit R) que indica se página foi
referenciada
Se página mais antiga possui R = 0 (não foi referenciada)
ela é escolhida
Caso contrário,
R é feito zero (R ← 0) e ela vai para o final da fila
A busca continua
Eduardo Nicola F. Zagari
34
Memória Virtual
35. Instante: 0 3 7 8 12 14 15 18
Falta de Página
A B C D E F G H no instante t = 20
Bit R = 1
3 7 8 12 14 15 18 20
B C D E F G H A
Bit R = 0
Retira página velha não referenciada no último intervalo de
tempo
Problema: Se todas as páginas foram referenciadas, então
algoritmo degenera para um FIFO puro
Eduardo Nicola F. Zagari
35
Memória Virtual
36. Semelhante ao da Segunda Chance, mas mais eficiente
Falta de Página inspeciona página para a qual o ponteiro está
apontando:
Se bit R = 0 retire a página
Se bit R = 1 faça R ← 0 e avance o ponteiro
A
H B
G C
F D
E
Eduardo Nicola F. Zagari
36
Memória Virtual
37. Escolhe a página mais freqüentemente usada
Argumento: uma página com contador de valor baixo, foi,
provavelmente, trazida para a memória recentemente e ainda
será usada
Eduardo Nicola F. Zagari
37
Memória Virtual
38. Reserva de blocos
não é necessário esperar que a página selecionada seja transferida
para o disco
Lista de páginas modificadas
automação através do dispositivo de transferência de páginas
minimiza probabilidade da página selecionada não estar atualizada
no disco
Manter registros de qual página está no conjunto de blocos
reservados
pode-se evitar E/S, aproveitando-se a antiga página contida na
reserva de blocos
Eduardo Nicola F. Zagari
38
Memória Virtual
39. Substituição Global:
permite alocar para um determinado processo qualquer bloco da
memória, mesmo que já esteja alocado a outro processo
Desempenho do processo depende do comportamento dos demais
Substituição Local:
o bloco alocado a um processo deve pertencer ao conjunto de
blocos reservado para este processo
Poucos blocos: pode provocar queda de desempenho, mesmo
havendo blocos livres ou usados com menos freqüência
Muitos blocos: pode provocar desperdício
Na prática os algoritmos globais funcionam melhor
Eduardo Nicola F. Zagari
39
Memória Virtual
41. Considere que o sistema monitore a utilização da CPU
Se for baixa aumenta o grau de multiprogramação
Considere também que é usado um algoritmo de trocas de páginas
global
Agora suponha que um processo entre em uma nova fase, que
precise de mais páginas
Ele “rouba” blocos dos outros processos, aumentando a taxa de falta
de páginas, conseqüentemente, diminuindo a utilização da CPU
realimentando o ciclo
Dizemos que há thrashing (paginação excessiva) qdo ele está
consumindo mais tempo em substituição de páginas do que na
execução do seu código
Eduardo Nicola F. Zagari
41
Memória Virtual
42. Paginação Excessiva
Utilização da CPU
Grau de Multiprogramação
Eduardo Nicola F. Zagari
42
Memória Virtual
43. Por que a Paginação funciona?
Princípio (Modelo) da Localidade
Processo migra de uma localidade para outra.
Localidades podem se sobrepor.
Inicialização de um processo
Paginação sob Demanda
Funciona devido à localidade de referências
Por que então ocorreria thrashing ?
Σ tamanhos das localidades > tamanho total da memória
Eduardo Nicola F. Zagari
43
Memória Virtual
45. Para prevenir thrashing deve-se fornecer aos processos o número
de blocos que ele precisa
Mas o que fazer quando um processo sofre swap in?
Conjunto de Trabalho
É o conjunto de páginas referenciadas por um processo durante um
determinado intervalo de tempo
É o conjunto de páginas constantemente referenciadas pelo processo
e que deve permanecer na memória para que ele execute de forma
eficiente
Eduardo Nicola F. Zagari
45
Memória Virtual
46. Modelo do Conjunto de Trabalho:
SO mantém controle sobre o conjunto de trabalho dos processos
SO carrega antes as páginas do CT de um processo, ao colocá-lo
em execução, reduzindo o no de falta de páginas (pré-paginação)
Quais páginas devem fazer parte do CT de um processo?
Uma forma de implementação é através do algoritmo aging:
qualquer página contendo um bit 1 entre os n bits mais significativos
do contador será considerada membro do CT do processo à qual
ela pertence
Eduardo Nicola F. Zagari
46
Memória Virtual
48. SO monitora a quantidade de páginas (Di) nos conjuntos de
trabalho de todos os processos
Se Σi (CTi) for maior que o no de blocos livres thrashing
Neste caso, SO seleciona um processo para sofrer swapping
Working Set grande
Menor taxa de falta de página
Menor número de processos na memória
Alocação local: número de páginas iguais ou número de
páginas proporcionais (nem considera thrashing)
Alocação global: tamanho do CT pode variar muito mais
rápido do que os bits de envelhecimento
Problema de thrashing persiste...
Eduardo Nicola F. Zagari
48
Memória Virtual
49. Para evitar o thrashing: Alg. PFF (Page Fault Frequency)
Controla diretamente a taxa de interrupções por F.P.
F.P. muito alta processo necessita de mais blocos
F.P. muito baixa processo está com blocos em excesso
Estipula-se um limite máximo e um limite mínimo para a taxa de
interrupções por F.P.
Processos acima do máx recebem mais blocos
Processos abaixo do mín removem-se blocos
Se a taxa de interrupções cresce e não há blocos disponíveis
seleciona-se um processo e o suspende blocos liberados são
redistribuídos ou colocados à disposição
Swapping usado para redução de demanda potencial por memória
Eduardo Nicola F. Zagari
49
Memória Virtual
50. Aumentar
Taxa de interrupções
número de blocos
de página ausente
Limite Máximo
Limite Mínimo
Número de blocos Diminuir
número de blocos
Eduardo Nicola F. Zagari
50
Memória Virtual
51. Tamanho é sempre potência de 2 (29 - 214 bytes)
SO pode escolher tamanho:
hardware projetado para pags. de 512 bytes
SO enxerga pag. 0 e 1, 2 e 3, ... como páginas de 1k, alocando
sempre 2 blocos consecutivos na memória para elas
Tamanho ótimo:
Páginas pequenas:
Menor desperdício: em média 1/2 página é perdida com
fragmentação interna no fim de um segmento
Reduz a possibilidade de espaços inativos dentro de uma
página
Eduardo Nicola F. Zagari
51
Memória Virtual
52. Páginas grandes:
Menor número de páginas menor tabela de páginas
Transferir páginas pequenas toma quase tanto tempo quanto
transferir páginas grandes para o disco (movimento da cabeça
e latência rotacional)
Menor a taxa de falta de páginas
Tamanho ótimo: 1448 bytes (valor teórico)
A maioria dos computadores comerciais têm páginas de 512 a
8k bytes
Historicamente, este valor tem aumentado...
Eduardo Nicola F. Zagari
52
Memória Virtual
53. Alcance da TLB - A quantidade de memória acessível a partir
da TLP.
Alcance da TLB = (Tamanho da TLB) X (Tamanho da Página)
Idealmente, o Conjunto de Trabalho de cada processo deveria
ser armazenado inteiramente na TLB.
Eduardo Nicola F. Zagari
53
Memória Virtual
54. Considere o exemplo:
Processo emite chamada de sistema de E/S
Processo é suspenso
Novo processo gera falta de página
Se alocação global existe chance da página escolhida para ser
removida ser a página contendo o buffer de E/S
Como o DMA (acesso direto) não tem como identificar em que
página está escrevendo inconsistência
Primeira Solução:
Operações de E/S usarem um buffer dentro do kernel a cópia
pode resultar em uma sobrecarga inaceitável
Eduardo Nicola F. Zagari
54
Memória Virtual
56. Segunda Solução:
Bloquear páginas envolvidas em E/S, não permitindo que sejam
removidas durante a operação de E/S bit de bloqueio
Outro uso do bit de bloqueio:
Processo provoca interrupção por falta de página
Página é carregada
Processo volta para a fila de pronto
Outro processo (de maior prioridade) ganha a CPU e provoca falta
de página
Escolhe página não referenciada e nem modificada: A candidata
perfeita a própria página do processo de baixa prioridade
Eduardo Nicola F. Zagari
56
Memória Virtual
57. Paginação por demanda foi projetada para ser transparente aos
programas de usuário, mas...
Considere páginas de 1024 bytes. Para iniciar com ʻaʼ cada
elemento de uma matriz de 1024 x 1024:
char A[1024][1024];
for (j=0; j<1024; j++) {
char A[1024][1024];
for (i=0; i<1024; i++) {
A[i][j] = ‘a’; for (i=0; i<1024; i++) {
} for (j=0; j<1024; j++) {
} A[i][j] = ‘a’;
}
}
Eduardo Nicola F. Zagari
57
Memória Virtual
58. A matriz é armazenada por linhas: A[0][0], A[0][1], A[0][2], ... ,
A[0][1024], A[1][0], A[1][1], ... , A[1024][1024]
Se a página tem tamanho 1024 bytes cada linha ocupa uma
página
Taxa de faltas =
128 linhas X 128 colunas Taxa de faltas =
16.384 faltas 128 colunas
128 faltas
Eduardo Nicola F. Zagari
58
Memória Virtual
59. Windows NT
Solaris 2
Eduardo Nicola F. Zagari
59
Memória Virtual
60. Usa paginação sob demanda com clustering. Clustering traz
para memória páginas “ao redor” da página faltante.
São atribuídos aos processos um Conjunto de Trabalho
Mínimo e um Conjunto de Trabalho Máximo.
Conjunto de Trabalho Mínimo é o menor número de páginas que
o processo tem garantido possuir em memória.
Conjunto de Trabalho Máximo é o maior número de páginas que
ele poderia possuir em memória ao mesmo tempo.
Quando a quantidade de memória livre no sistema cai abaixo de
um limiar (threshold), o módulo chamado automatic working
set trimming é executado para restabelecer a quantidade de
memória livre.
Working set trimming remove páginas dos processos que têm
páginas acima do seu Conjunto de Trabalho Mínimo (em
excesso).
Eduardo Nicola F. Zagari
60
Memória Virtual
61. Mantém uma lista de páginas livres para atribuir aos processos
em falta.
Lotsfree – parâmetro limiar para começar a paginação.
Paginação é executada pelo processo pageout.
Pageout busca páginas usando o algoritmo do relógio
modificado.
Scanrate é a taxa na qual as páginas são buscadas. Ela varia
de slowscan para fastscan.
Pageout é chamado mais ou menos freqüentemente
dependendo da quantidade de memória livre disponível.
Eduardo Nicola F. Zagari
61
Memória Virtual