BC1518-Sistemas Operacionais
Memória Virtual
(aula 9)
Prof. Marcelo Z. do Nascimento
[email protected]
Roteiro
Memória Virtual
Paginação sob demanda
Cópia na escrita
Algoritmos de Substituição de Página
Thrashing
Arquivos mapeados na memória
Leituras Sugeridas
Exercícios
06/04/09
2
Memória Virtual
Há muitos anos os programas maiores que a memória
eram divididos em módulos menores (overlays) =>
Programador;
◦ Overlays => eram mantidos
dinamicamente na memória;
em
disco
e
carregados
Responsável: sistema operacional;
◦ Desvantagem: Trabalho lento/alto custo computacional;
Memória Virtual (MV)
◦ Idéia básica: tamanho total de um programa pode
exceder a quantidade de memória física disponível
para ele.
06/04/09
3
Memória Virtual
Características:
◦ Técnica que combina memória principal (RAM) e
secundária (Disco rígido);
◦ Fundamentação: não vincular o endereçamento
feito pelos programadas aos endereços físicos
da memória principal;
◦ Maximiza o número de processos na memória;
◦ Busca reduzir a fragmentação;
◦ Permite trabalhar com estruturas de dados
maiores que o tamanho da memória física
disponível;
06/04/09
4
Memória Virtual
◦ Espaço de endereçamento da memória principal
(RAM) e memória secundária => blocos do mesmo
tamanho:
As páginas no espaço virtual => denominados páginas
virtuais;
As páginas no espaço real
(quadro);
=> páginas reais ou frames
◦ Há uma tabela de páginas: responsável por mapear
páginas virtuais em quadros de páginas para cada
processo;
Memória virtual pode ser implementada por:
Paginação por Demanda;
Segmentação por Demanda.
06/04/09
5
Espaço de Endereçamento
Virtual
• Mapeamento – permite que um programa não precise
estar necessariamente em endereços contíguos na
memória principal para ser executado;
Memória Virtual
.
.
.
.
.
.
Memória Principal
Mapeamento
06/04/09
6
Memória Virtual
⇒
Memória Virtual pode ser maior do que a memória física
7
Memória Virtual
Processo:
Visão -> endereço lógico e existe em
trechos contíguos na memória;
Na verdade a MMU faz associação das
páginas lógicas aos quadros de página
físicos;
O grande espaço vázio (espaços de
endereços esparsos) faz parte do espaço
de endereços virtuais, mas exigirá páginas
físicas apenas se a pilha ou heap crescer;
Também permite vincular bibliotecas de
forma dinâmica durante a execução do
programa
06/04/09
8
Paginação por Demanda
Essa técnica busca trabalhar com memória virtual
da seguinte forma:
◦ Uma página é carregada para memória apenas quando
necessária.
Mas, qual o motivo?
◦ Necessário menos E/S;
◦ Resposta mais rápida, porque é carregado apenas as
primeiras páginas;
◦ Menos espaço de memória para cada processo;
◦ Então, mais processos pode ser admitidos no sistema.
Como isso acontece?
◦ Processo gera o endereço lógico (virtual) o qual é
mapeado para endereço físico;
◦ Se a página solicitada não está na memória => SO carrega
9
do disco (memória secundária).
Então, como descobrir onde
está uma página na memória?
Cada entrada na tabela de página
tem um bit valid–invalid:
◦ v ⇒ na memória;
◦ i ⇒ não está na memória;
◦ Inicial: configurado com I em
todas entradas.
Durante a tradução de endereço,
se o bit valid–invalid esta i, pode
ser:
◦ Referência ilegal (espaço de
endereçamento fora da área do
processo) ⇒ aborta processo;
◦ Referência Legal mas não está na
memória ⇒ page fault
(carrega a página do disco).
Frame #
valid-invalid bit
v
v
v
v
i
….
i
i
page table
10
Interceptação por Falha de
Página
O que ocorre se uma página não foi trazida para a
memória?
O acesso a uma página marcada como inválida causa uma
interceptação por falha de página (page fault).
Essa trap é repassada para o SO e o procedimento
para tratá-la deve decidir:
◦ Referência inválida abortar Processo;
◦ Não está na memória carregar página:
Encontra um quadro livre;
Troca página do disco para o quadro (Operação de
E/S);
Modifica tabela, configurando como bit válido= v;
Reinicia a instrução que causou page fault.
11
Interceptação por Falha de
Página
12
Desempenho de Páginação por
Demanda
Probabilidade de uma falha de Página 0 ≤ p ≤ 1.0
◦ Se p = 0 significa que não houve falha de página
◦ Se p = 1 significa que toda referência é uma falha
Tempo de Acesso Efetivo (TAE):
TAE = (1 – p) * tempo de acesso a memória (10 a 200
nanossegundos) + p * tempo de falha de página.
◦ Tempo e falha de página = serviço de interrupção de falha
de página (~microsegundos) + Leitura da página requerida
(~milissegundos) + reinicio do processo (~microsegundos).
◦
Lembre-se: Leitura na página requerida pode solicitar
escrita de outra página para o disco se não houver
quadro livre.
13
Cópia na escrita
Como MV permite criar processos rápidos e
eficiente?
◦ Emprega uma técnica Cópia na Escrita (CNE).
A técnica CNE permite ambos os processos, pai e
filho, compartilhar inicialmente as mesmas páginas
na memória (durante o fork( )):
◦ Minimiza o número de novas páginas a ser alocadas ao
processo recém-criado.
◦ Fork -> cria uma cópia do espaço de endereços do pai para
o filho.
Se usar a técnica CNE => Se algum processo
modificar uma página compartilhada, a página é
copiada.
14
Cópia na escrita
Quando PI
modifica a
página C
Cópia de C
•Somente as páginas modificadas são copiadas;
•Sistemas atuais: Windows XP, Linux;
•Local de memória livre é alocado;
•SO pode prover um banco de páginas livres para tais requisitos;
•Podem ser alocadas quando pilha ou heap precisa crescer.
15
Substituição de Página
Ocorre falha de página necessário carregar a
página requerida do disco para memória:
◦ Encontrar a localização da página requerida no disco
◦ Encontrar uma página livre:
Se há um quadro livre é só usá-lo;
Senão use o algoritmo de substituição de página para
selecionar uma página vítima residente na memória.
◦ Carregue a página requerida para o quadro livre;
◦ Atualize a tabela de página e a lista de quadro livre;
◦ Reinicie o processo.
16
Substituição de Página
Pode-se resolver o
problema de
sobrecarga se a
página vítima não
foi modificada
reduz operação de
E/S.
Associa-se um bit
de modificação com
cada página para
indicar se a página
foi modificada
Se necessário, como escolher a página vítima?
17
Substituição de Página
Objetivo: minimizar taxa de falha de página
Avaliação de Algoritmo
◦ Retira um conjunto de referência da memória denomiando
string de referência e calcula o número de falha de
página na string.
A string de referência é dada:
1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5
Lembre-se
◦ Usa-se o número de página
◦ O endereço em sequência pode ter ser: 100, 250, 270,
300, … Assumindo uma página de tamanho = 100 bytes.
◦ As referências 250 e 270 estão na mesma página (2),
apenas a primeira referência pode causar uma falha de
página.
18
Substituição de Página
O número de falha de página decai quando o número
de quadros livres alocados ao processo aumenta
19
Algoritmo Primeiro a Chegar, Primeiro a
Sair (FIFO)
String de Referência: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5
3 Quadros (3 páginas pode estar na memória a qualquer
momento);
Trabalha:
Em toda falha de página: verifica o conteúdo da memória;
Vantagem:
Fácil de entender e implementar.
Desvantagem:
Desempenho pode não ser tão bom:
• Pode ser uma página usada constantemente (ex. Uma
variável acessada constantemente);
• Pode ocorrer a anomalia de Belady.
20
Algoritmo Primeiro a Chegar,
Primeiro a Sair (FIFO)
Exemplo:
Temos a seguinte string de referência:
◦ 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5
Se há 3 quadros, quantas falhas de páginas pode
ocorrer?
◦ 9 falhas de páginas (3 primeiros causam falha)
Se há 4 quadros, quantas falhas de páginas?
◦ 10 falhas de páginas
Mais quadros pode ser considerado oposto em
falha de página.
◦ Anomalia Belady: mais quadros ⇒ mais falha de
página
21
Algoritmo Primeiro a Chegar,
Primeiro a Sair (FIFO)
1
1
4
5
2
2
1
3
3
3
2
4
9 falhas de página
22
FIFO: Anomalia Belady
23
Algoritmo Ótimo
Você pode querer um algoritmo de substituição
ótimo?
◦ Troca de página não irá usar o mais longo periodo de
tempo como FIFO.
Exemplo: 4-quadros: 1, 2, 3, 4, 1, 2, 5, 1, 2,
3, 4, 5
1
1
1
1
1
4
2
2
2
2
2
3
3
3
5
4
5
5
6 falhas de página
Como prever o futuro? Não é possível
24
Algoritmo Least Recently
Used (LRU)
Tentativa de uma aproximação a política ótima: “olhe
no passado para decidir o futuro”.
◦ LRU: Troca a página que não tem sido utilizada por o mais
longo período;
◦ Relação: esta página pode não ser necessária (exemplo:
páginas de inicialização de módulo)
Exemplo 4-quadros: 1,
3, 4, 5
1
2,
3,
4, 1, 2, 5, 1, 2,
1
1
1
1
1
1
5
2
2
2
2
2
2
2
3
3
5
5
4
4
4
4
3
3
3
8 falhas de página (FIFO 10)
25
Implementação LRU (1):
Contador
Toda entrada na tabela de páginas tem um campo
de tempo de uso (contador);
Quando a página é referenciada, cópia o clock da
CPU para esse campo
◦ O clock da CPU é mantido em um registrador e
incrementado com todo acesso a memória
Necessário trocar uma página, busca a página com o
tempo mais antigo
Desvantagem:
◦ Busca o tempo, atualiza o campo tempo de uso (escreve
na memória)
Necessário suporte de hardware
26
Implementação LRU (2):
Pilha
Mantém uma pilha do
número de páginas em um
lista duplamente
encadeada
Se uma página é
referênciada, move para o
topo
A página menos
recentemente usada vai
para parte inferior
Após
Via hardware ocorre a
atualização da pilha
27
Implementação LRU (3):
Bit de referência
Pode
ser implementado por: Hardware
Campos extras para armazenar o valor do contador na
tabela de páginas;
Após cada referência à memória, o valor do contador é
armazenado nesse campo adicional da tabela de páginas;
Quando ocorre falta de página S.O. => examina todos os
campos dos contadores da tabela de página a fim de
encontrar o menor dele;
Qual a ordem desses bits ativos? Qual será
removido?
06/04/09
28
Implementação LRU (4):
Byte
Solução: Contadores em software associado a páginas e utilizar o
algoritmo aging (página com menor contador é removida);
Bits R para páginas 0-5
clock tick 0
101011
Contadores
clock tick 1
110010
clock tick 2
110101
clock tick 3
100010
clock tick 4
011000
0 10000000
11000000
11100000
11110000
01111000
1 00000000
10000000
11000000
01100000
10110000
2 10000000
01000000
00100000
00100000
10001000
3 00000000
00000000
10000000
01000000
00100000
4 10000000
11000000
01100000
10110000
01011000
5 10000000
a)
01000000
b)
10100000
c)
01010000
d)
00101000
e)
06/04/09
29
Algoritmo da segunda
Chance
Uma aproximação de LRU:
◦ Cada página tem um bit de referência (ref_bit),
inicialmente = 0;
◦ Quando a página é referenciada, ref_bit =1 (pelo
hardware)
Mantém um ponteiro para próxima vítima (candidato);
◦ Quando escolhe uma página para substituir, verifica
ref_bit da vítima:
Se ref_bit == 0, troca
Senão configura ref_bit = 0
Deixa a página na memória (segunda chance),
Move o ponteiro para próxima página,
Repete até encontrar uma vítima.
30
Algoritmo da segunda
Chance
31
Algoritmo da segunda
Chance
Segunda chance melhorado
◦ Considere os bits R e M como um par ordenado;
◦ S.O. inspeciona todas as páginas e as separa em 4
categorias, com base nos valores dos bits R e M:
Classe 0 => não referenciada, não modificada;
Classe 1 => não referenciada, modificada;
Classe 2 => referenciada, não modificada;
Classe 3 => referenciada, modificada;
◦ Examina a classe à qual pertende e substitui a
primeira página encontrada na classe não vazia
mais baixa.
06/04/09
32
Algoritmo baseado em
contagem
Guarda um contador de número de referência que
tem ocorrido em cada página
Algoritmo LFU (Least Frequently Used): retira
página com menor contador
◦ Página com menor contador não é usada frequentemente
◦ Problema: alguma página for usada muito frequentemente
no início do processo, mas não for mais usada permanece
na memória. Exemplo: Matriz
Algoritmo MFU (Most Frequently Used): retira a
página com mais alto contador
◦ Baseada no argumento de que a página com menor
contagem provavelmente acabou de ser trazida para
memória e ainda não está sendo usada.
◦ Problema: código de um módulo ou subrotina usado
raramente, a MFU considera um bom candidato a não ser
eliminado.
33
Alocação de Quadros
Alocação igual: Todos os processo tem o mesmo
número de quadros
◦ m quadros e n processos cada processo tem
m/n quadros
Alocação proporcional: Aloca de acordo com o
tamanho do processo
S = tamanho do processo
M= número total de quadros
Prioridade: Usa alocação proporcional para relação
do tamanho
34
Alocação de Quadros: Global
Se uma falha de página ocorre e não há quadro livre,
há necessidade de obter um espaço livre:
Substituição Global
◦ Processo seleciona um quadro a ser substituído de um
conjunto de todos os quadros;
◦ Um proceso pode tirar um quadro de outros processos;
◦ Normalmente usado em SO.
Vantagem:
◦ Melhor throughput (processo pode usar qualquer quadro
avaliado)
Desvantagem:
◦ Um processo não pode controlar sua própria taxa de pagefault.
35
Alocação de Quadros: Local
Substituição Local
◦ Cada processo seleciona um quadro de seu
conjunto de quadros alocados;
Vantagem
◦ Cada processo tem seu próprio
compartilhamento de quadros, não interfere no
desempenho de outros processos.
Desvantagem
◦ processo pode sofrer de altas taxas de pagefault embora há quadros livres disponíveis para
outros processos
36
Thrashing
O que ocorre se um processo não tem quadros
suficientes para manter seu conjunto de páginas
ativas na memória?
A Taxa Page-fault é muito alta:
◦ Baixo uso de CPU, o qual
◦ Faz o SO pensar que precisa aumentar o grau de
multiprogramação, então
◦ O SO admite outros processo ao sistema
(piorando a situação)
Thrashing ≡ um processo esta realizando thrashing
se estiver gastando mais tempo paginando do que
executando
37
Thrashing
38
Thrashing
Para previnir o thrashing, deve-se fornecer a cada
processo o número de quadros necessários
Mas como saber quantos quadros um processo
precisa?
◦ Um programa é composto por várias funções ou módulos
◦ Quando executa uma função, as referências a memória
são feitas para instruções e variáveis locais da função e
algumas variáveis globais
◦ Então, pode ser necessário guardar em memória alguma
página necessária para executar a função
◦ Após finalizar a função, pode-se executar outra. Então,
traz a página necessária para a nova função.
◦ Isso é conhecido como modelo de localidade
39
Modelo de Localidade
O estado do modelo de localidade
◦ Quando um processo executa =>move de uma localidade para
outra, onde uma localidade é um conjunto de páginas que são
ativamente usada em conjunto.
Lembre-se
◦ Localidade não é restrito a módulos e funções, é mais geral.
◦ Pode ser um segmento de código em uma função => exemplo,
instruções em várias páginas
◦ Localidade de um programa pode sobrepor
◦ Localidade é a maior razão do sucesso de paginação sobre
demanda
Como podemos saber o tamanho de uma localidade?
Usando o modelo de conjunto de trabalho
40
Modelo Conjunto de
Trabalho
O conjunto de páginas mais recentemente
referênciada na memória ∆ => janela do conjunto
de trabalho (working set – WS)
◦ Em cada referência, uma nova referência é
adicionada no conjunto, senão for mais usada
sai do conjunto;
Exemplo: ∆ = 10
Tamanho de WS em T1 é 5 páginas,
Em T2 é 2 páginas
41
Modelo Conjunto de
Trabalho
A precisão do modelo WS depende da escolha de ∆
◦ Se ∆ é muito pequeno, não abrangerá a localidade
inteira;
◦ Se ∆ é muito grande, poderá sobrepor várias localidades;
◦ Se ∆ = ∞ ⇒ um conjunto com todas as páginas
referenciadas durante a execução.
Usando modelo WS
◦ O SO monitora o WS de cada processo;
◦ Ele aloca um número de quadros suficiente para
fornecer o tamanho do seu conjunto de trabalho;
◦ Se houver quadros extras suficiente, outro processo
poderá ser iniciado.
42
Modelo Conjunto de
Trabalho
Manter uma janela do conjunto de trabalho inteira
é custoso
Solução:
◦ Approximação com um intervalo de tempo e um
bit de referência (ref_bit é configurado com 1
quando a página é referenciada):
Exemplo: ∆ = 10.000 referências a memória
43
Modelo Conjunto de
Trabalho
Exemplo: ∆ = 10.000 referências a memória
◦ Interrupção do temporizado a cada 5000 referências
◦ Quarda na memória 2 bits para cada página
◦ Quando um interrupção ocorre, copia o ref_bit na memória e
reinicia o ref_bit;
◦ Quando ocorre page fault, verifica os 3 bits (ref_bit, 2 na
memória)
Se qualquer um deles for 1 ⇒ a página foi usada nas
ultimas 10.000 a 15.000 referências coloca a página no
conjunto de trabalho
44
Modelo Conjunto de
Trabalho
Mais importante é o seu tamanho
WSSi ≡ o tamanho do conjunto de trabalho de um processo Pi
◦ O número de páginas referenciadas mais recente ∆
m ≡ tamanho da memória em quadros
D = Σ WSSi ≡ total de quadros demandados
Se D > m ⇒ Thrashing
Política: Se D > m, então suspende um dos
processos
◦ Manter o WS é custoso.
Mas existe alguma forma de controlar o thrashing?
45
Modelo Conjunto de
Trabalho
Monitorar a taxa de page-fault e
aumentar/decrementar alocação de acordo com:
◦ Determine um intervalo aceitável da taxa page-fault
◦ Se a taxa atual ultrapassar o limite, aloca outros quadros,
◦ Se ficar abaixo remove quadro
46
Alocação do Kernel na
Memória
Tratado diferentemente da memória de usuário:
◦ O Kernel solicita memória para estruturas de
tamanho variado
Descritores do processo(PCB), semáforo,
descritores de arquivos, etc.
Pode ser menor que uma página
◦ Algumas regiões da memória para kernel precisa
ser contígua
Alguns dispositivos interage diretamente com a
memória física sem usar memória virtual
47
Kernel: Sistema Buddy
Aloca a memória de tamanho de segmento fixo ,
consistindo em páginas fisicamente contíguas;
Memória alocada usando um alocador de potência
de tamanho 2 (4KB, 8KB, 16 KB)
◦ Satisfaz requisições em unidade de tamanho de potência
de 2
◦ Requer arredondamento
Ex. 17 KB requesitado será arredondado para 32 KB
(fragmentação)
◦ Quando alocação é menor precisa então ser avaliada,
criando 2 buddies de potência de 2
Continua até apropriado tamanho satisfazer a requisição
◦ Os buddies pode ser combinados para formar segmentos
maiores (união)
48
Kernel: Sistema Buddy
49
Kernel: alocação Slab
Alocação
◦ Cria caches =>cada consistindo de um ou mais slabs
◦ Slab é uma ou mais páginas contiguas fisicamente
Uma simples cache para cada estrutura de dados do
kernel
◦ Cada cache é preenchida com objetos – instanciações da
estrutura de dados
◦ Objetos são inicialmente marcados como livre
◦ Quando armazena estrutura, objeto é marcado como
usado
◦ Benefícios
Rápida alocação, não há fragmentação
50
Kernel: alocação Slab
http://www.ibm.com/developerworks/linux/library/l-linux-slab-allocator/
51
Memória Virtual e
Mapeamento de Arquivos
A MV permite mapear um arquivo para endereço de
espaço de memória de um processo
Como isso ocorre?
◦ Uma parte do arquivo do tamanho de uma página é lida do
sistema de arquivos para a página física Subsequentes
leitura/escrita ao arquivo são tratadas como acesso à
memória
◦ Ex: mmap() do sistema Unix
Porque?
◦ Operações de E/S no arquivo são tratadas como acesso a
memória Simplifica
◦ Eficiente: acesso a memória é menos custoso que uma
chamada de E/S
◦ Uma forma de implementar compartilhamento de memória
para comunicação interprocessos
52
Memória Virtual e
Mapeamento de Arquivos
Arquivo mapeado na
memória permite que
vários processos mapeie
o mesmo arquivo;
Permite que páginas na
memória sejam
compartilhadas;
O Win XP implementa
compartilhamento de
memória usando essa
técnica ;
O Unix e Linux utiliza o
mmap ( ) para
mapeamento e a chamada
shmget ( ) e shmat ( )
para a memória
compartilhada
53
Considerações
Impacto na seleção do tamanho da página
◦ Fragmentação
◦ Tamanho da tabela de página
◦ Overhead E/S
Pré-paginação
◦ Trazer para memória de uma só vez todas as
páginas necessárias:
Reduz o número de page faults nos processos iniciados
Mas pode acontecer de muitas páginas trazidas para
memória não serem usadas
Ex. Solaris (apenas para arquivos pequenos)
54
MV:
Estrutura de Programa
Programa em Java
◦ int data [128][128];
◦ Cada linha é armazenada em uma página;
quadros alocados <128
◦ Quantas page faults acontece em cada
programa?
◦ Programa 1
for (j = 0; j < 128; j++)
for (i = 0; i < 128; i++)
data[i][j] = 0;
#page faults: 128 x 128 = 16.384
55
MV:
Estrutura de Programa
Programa em Java
◦ int data [128][128];
◦ Programa 2
for (i = 0; i < 128; i++)
for (j = 0; j < 128; j++)
data[i][j] = 0;
#page faults: 128
◦ Todas as palavras são zeradas antes de iniciar
a próxima página.
56
Exemplo: Windows XP
Usa paginação por demanda com clustering
◦ O clustering trata não só a página que falhou
mas várias páginas após essa
Processo criado
◦ Recebe o working set mínimo: garantia na
memória (~50 páginas)
◦ working set máximo: máximo na memória (345
páginas)
Automático do Working set
◦ Memória livre no sistema falha permite um
limiar, remove páginas de um processo que mais
que seu mínimo no working set
57
Sumário
Memória virtual: mapea um maior espaço de
endereço lógico dentro de um espaço menor na
memória física:
Page fault: ocorre quando uma página referenciada
não está na memória
Algoritmos de substituição: FIFO, OPT, LRU,
Segunda chance
Alocação de quadros: global e local
Thrashing: pouco uso de CPU
Modelo working-sets
Memória para Kernel memory
58
Simulação – Atividade 4
1. O SOsim é um software educacional utilizada para
simulação de alguns algoritmos empregados pelo
Sistema Operacional para controlar os recursos
computacionais.
• O
download
pode
ser
http://www.training.com.br/aso/
feito
em
• Utilize esse simulador para realizar a atividade 4
disponível no Col.
• Essa atividade deve ser entregue pelo email:
[email protected] até o dia 04/08
06/04/09
59
Exercícios
1. Quais os benefícios oferecidos pela técnica de memória
virtual? Como este conceito permite que um programa e
seus dados ultrapassem os limites da memória principal?
2. Diferencie página virtual de uma página física.
3. Descreva como ocorre a fragmentação interna em um
sistema que implementa paginação.
4. Um sistema com gerência de memória virtual por paginação
possui tamanho de página com 512 posições, espaço de
endereçamento virtual com 512 páginas endereçadas de 0 à
511 e memória real com 10 páginas numeradas de 0 à 9. O
conteúdo atual da memória real contém apenas
informações de um único processo e é descrito
resumidamente na tabela abaixo:
06/04/09
60
Exercícios
a)Considere que a entrada da tabela de páginas contém, além
do endereço do frame, também o número da página. Mostre
o conteúdo da tabela de páginas deste processo.
b)Mostre o conteúdo da tabela de páginas após a página
virtual 9 ser carregada na memória a partir do endereço
real 0 e a página virtual 34 ser substituída pela página
virtual 12.
c)Qual endereço físico está associado ao endereço virtual
4613?
06/04/09
61
Exercícios
5. Descrever como funcionam dos seguintes algoritmos de troca
de páginas:
a) Not Recently Used Page Replacement-NRU;
b) Aging;
c) Segunda Chance;
06/04/09
62
Exercícios - Solução
a) NPV Quadro
9
4
10 9
34 3
65 7
b) NPV Frame
10
9
9
0
12
3
65
7
c)
• O endereço virtual 4613 encontra-se na página virtual 9
(4613/512), que inicia no endereço virtual 4608.
• Como o deslocamento dentro do endereço virtual é 5, o endereço
físico é a soma deste mesmo deslocamento ao endereço inicial do
frame 2048 (tabela), ou seja, 2053.
06/04/09
63
Download

ufabc_SO_Aula09_Gerenciamento da memoria virtual