Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Prévia do material em texto

TEMA 9: GERÊNCIA DE MEMÓRIA (Parte 2) - MEMÓRIA VIRTUAL 
DISCIPLINA: SISTEMAS OPERACIONAIS MODERNOS 
PROFESSOR: MARIO A MONTEIRO 
 
APRESENTAÇÃO: 
Memória Virtual é uma técnica elaborada para gerencia de memória, onde parte da 
memória secundária é utilizada para expandir o espaço de endereçamento dos 
processos. Ou seja, combina-se as memórias principal e secundária, passando ao usuário 
a impressão de uma memória principal muito maior que ela efetivamente é. 
O princípio básico de funcionamento da memória virtual (MV) é baseado no fato de que 
os processos não utilizam os endereços reais de memória principal e sim endereços 
virtuais na memória secundária. Com isso, pode-se ter uma quantidade maior de 
processos em execução. 
Neste texto, serão apresentadas algumas características que definem a memória virtual, 
bem como seu funcionamento nos sistemas de computação. 
Bons estudos! 
 
Ao final deste Conteúdo, você deve apresentar os seguintes aprendizados: 
 Reconhecer o conceito de memória virtual e sua relação coma memória principal 
real; 
 Identificar os elementos básicos da estrutura da memória virtual; 
 Compreender o funcionamento do acesso aos processos em execução com o uso 
de memória virtual. 
 
DESCRIÇÃO DE ASPECTOS RELEVANTES DO ASSUNTO. 
Parte A: 
Todos aqueles que trabalham com computação sabem que a memória de um 
computador tem uma enorme importância para o desempenho do sistema de 
computação. Sabem também, que a MP é a única acessada diretamente pelo 
processador (exceto, naturalmente, os registradores que são manipulados diretamente 
durante a execução do ciclo de cada instrução); em todo acesso a uma instrução ou 
dado, o processador gera o endereço da MP. 
 
Por essa razão, a capacidade desta memória (tamanho ou quantidade de endereços) 
tem sido um fator crucial para o desempenho dos sistemas, principalmente com o 
desenvolvimento da multiprogramação, por acarretar necessidade de mais espaço de 
endereçamento principal ou real. 
 
Em alguns dos textos anteriores, especialmente o imediatamente anterior (Tema 9), 
tratou-se justamente desse problema de alocação de espaço da MP para acomodar os 
programas em execução e foram apresentadas algumas iniciativas técnicas para tentar 
 
TEMA 9: GERÊNCIA DE MEMÓRIA (Parte 2) - MEMÓRIA VIRTUAL 
melhorar o uso da escassa MP em face de múltiplos programas requerendo espaço para 
seu armazenamento. 
 
Sem repetir o que já foi mostrado antes, mas apenas um lembrete sobre as referidas 
técnicas, pode-se observar que: 
 
1. A primeira tentativa de usar mais espaço do que a da MP ocorreu ainda com 
sistemas monoprogramados, por meio da técnica de Overlay (texto 9). 
 
2. Mais tarde, com alocação particionada, para atender múltiplos programas sendo 
executados de forma concorrente, surgiram diversas inovações, como relocação 
e particionamento dinâmico, mas expansão de espaço de endereçamento além 
da MP, como overlay, surgiu com a técnica de swapping, ao se usar a MS para 
estender o uso da MP além de seu limite. 
 
De qualquer forma, todas essas tentativas ainda visavam o uso das MP para armazenar 
o programa inteiro, sempre usando seu espaço contíguo de endereçamento. 
 
Mas foi o desenvolvimento de uma técnica conhecida como Memória Virtual que se 
realmente inovou em termos de ampliar o espaço de endereçamento para programas 
em execução, além dos limites da MP. 
O conceito de Memória Virtual (MV) emprega a MS (usualmente um espaço no HD do 
usuário, alocado e gerenciado pelo SO, como MV) para ampliar o espaço de 
endereçamento a ser disponibilizado aos programas. 
 
Desse modo, quando o processador gera um endereço de acesso a uma instrução ou 
dado (conforme já observamos diversas vezes), este endereço deve ser o da MP 
9endereço real e físico). No entanto, com o uso de MV, o endereço inicialmente gerado 
pelo processador passa a ser um endereço virtual, que pode ser bem maior do que os 
endereços disponíveis no espaço da MP e sem ter relação direta com a MP. 
 
Então, com o uso da MV, o espaço de endereço disponível aos processos é superior ao 
espaço da MP, pois se usa um espaço no HD (MS) para ampliar a disponibilidade de 
endereçamento aos processos, conforme se pode observar, de forma simples na figura 
1. 
 
 
Figura 1- Exemplo de uso de MV (espaço no HD mais espaço da MP 
 
TEMA 9: GERÊNCIA DE MEMÓRIA (Parte 2) - MEMÓRIA VIRTUAL 
Com este conceito, não há vínculo do endereçamento nos programas com o 
endereçamento real (físico) das memórias. Isto é, um endereço virtual (EV) xxxx não 
corresponde diretamente a um endereço real (ER-MP). A correspondência entre eles 
ocorre por meio de um método chamado Mapeamento, conforme será descrito adiante. 
 
Para evitar perda de tempo em cada acesso, a interpretação do EV e o mapeamento ao 
endereço real é realizada diretamente por hardware, por uma unidade localizada no 
chip do processador é denominada MMU-memory Managment Unit ou Unidade de 
Gerenciamento de Memória. 
 
O que efetivamente acontece durante o referido acesso do processador a um endereço 
físico, real da MP. 
 
a) O processador gera um endereço de acesso VIRTUAL (e não mais real como 
acontece sem uso da MV). 
b) O MMU, então, identifica se o bloco que contém o endereço desejado encontra-
se também na MP. Se tiver, um Acerto ou HIT, o MMU “traduz” o endereço 
virtual para endereço real (mapeamento). 
c) Em seguida, o endereço real (agora o efetivo endereço da MP) é colocado no BE 
(barramento de endereço) e o processo segue o de uma operação de leitura 
normal. 
d) Se, o MMU não encontrar o bloco desejado na MP (isso pode acontecer, pois o 
espaço virtual é sempre maior que o espaço real (há mais blocos na MV que 
blocos na MP), acontece um “page fault” ou Falta de página (está sendo 
considerado que o método usado é do tipo Paginação, o que será descrito 
adiante). E, nesse caso, ocorre uma Exceção (exception ou Exceção-ver Texto do 
Tema 3) e, é necessário trazer o bloco da MV para MP, mapear o endereço virtual 
para real e prosseguir no ciclo de leitura. 
 
Este método é bastante vantajoso (mapeamento) porque, assim, NÃO É PRECISO que: 
 
 O programa esteja inteiro na MP (pode estar parte dele o resto na MV-no HD; 
 Mesmo a parte do programa que está na MP Não precisa estar em endereços 
contíguos (só os endereços de um bloco, mas os blocos do programa que estão 
residentes na MP podem estar em locais diferentes 
 
Dependendo do SO usado, a técnica de MV poder implementada das seguintes 
formas: 
 
 PAGINAÇÃO 
 SEGMENTAÇÃO 
 HÍBRIDA (Paginação e Segmentação) 
 
Memória Virtual por Paginação 
 
Este é o método usado pela maioria dos SO, como Windows, Linux, MAC-OS e os de 
telefonia móvel. 
 
TEMA 9: GERÊNCIA DE MEMÓRIA (Parte 2) - MEMÓRIA VIRTUAL 
Por este método, tanto a MV quanto a MP (real) são organizadas em blocos de 
tamanho fixo, chamados páginas (MV e MP, embora nesta também se use o termo 
Frame ou quadro, para o bloco da MP). O tamanho do bloco varia de 4K até 64KB, 
podendo ser maior em versões de maior capacidade dos SOs. Um bloco com 4 KB 
(4096) de largura, indica que há dados (ou instruções) com endereços de byte de 0 
até 4095, o que se chama de deslocamento. 
 
Cada processo possui seu próprio espaço de endereçamento virtual, mas só há UM 
espaço de endereçamento real (na MP). Os blocos da MV (páginas) são mapeados 
para páginas/frames da MP pelo MMU. 
 
A figura 2 mostra um dos aspectos mais importantes e interessantes da técnica de 
MV. Não há relação de endereçamento entre MV e MP (a não ser na ocasião de 
acesso com o mapeamento. E, especialmente, as páginas de um processo na MP n 
ficam contíguas, conforme mostrado na figura. 
 
 
Figura 2- mapeamento de endereços MV e MP 
 
As figuras 3 e 4 mostram um outro exemplo do mapeamento, onde, na figura 3, se 
observa dois processos, cada um com seu espaço de armazenamento virtual e sua 
tabela de páginas, ambos compartilhando o espaço único da MP (algumas páginas 
virtuais do processo A emframes da MP e outras páginas, do processo B, em outros 
frames da MP. E na figura 4 observa-se algo semelhante. 
 
A identificação e localização entre eles é da competência do MMU. 
 
 
TEMA 9: GERÊNCIA DE MEMÓRIA (Parte 2) - MEMÓRIA VIRTUAL 
 
 
Figura 4- Exemplo de mapeamento em MV por paginação 
 
Para compreender ainda melhor o modo de mapeamento, observe que, cada 
processo, tem seu espaço de endereçamento virtual (lembre-se do contexto de 
processos (Texto 6), com contexto de HW, de SW e espaço de endereçamento – 
neste caso, o espaço é de endereçamento virtual). 
 
E possui uma tabela para realização do mapeamento, chamada tabela de páginas, a 
qual possui uma linha para cada página/bloco virtual, com indicações: se tem cópia 
dele na MP e qual frame (se tem cópia) da MP ele está (há outras indicações, que 
ajudam substituição de páginas, etc.). Estas tabelas são manipuladas pelo MMU, 
conforme já mencionado anteriormente. 
 
Conforme já mencionado anteriormente, o MMU funciona no interior do 
processador, isto é, diretamente por hardware, para ser mais rápido. 
 
A figura 5 mostra a identificação básica de um byte na MV, onde o endereço contém 
duas partes, o número da página virtual (NPV) e o valor do deslocamento (o 
endereço do byte dentro da página). No caso do endereço real (na MP) o formato é 
semelhante, com os bits mais à esquerda indicando endereço do frame e o restante 
o mesmo deslocamento, já que as páginas virtual e real têm mesmo tamanho. 
 
 
Figura 5 – Formato do endereço virtual 
 
TEMA 9: GERÊNCIA DE MEMÓRIA (Parte 2) - MEMÓRIA VIRTUAL 
Assim, por exemplo, um processo que tenha uma tabela de páginas com 256 entradas 
(possui 256 páginas virtuais) tem NPV de 8 bits (256 = 28) e se a MV for constituída de 
blocos com 4K de tamanho, os endereços dos bytes (deslocamento) têm 12 bits (4K = 
212). Ou seja, o espaço virtual do processo é de 1 MB (256 x 4K) e cada endereço de byte 
virtual tem 20 bits (8 do NPV + 12 do deslocamento) e 1M = 220. 
Vamos observar um exemplo mais detalhado do método de mapeamento e 
funcionalidade do MMU, mostrado nas figuras 6 e 7 a seguir (este exemplo foi extraído 
do livro de SO-A Tanembaum). 
 
Figura 6 - Exemplo do mapeamento endereço virtual para endereço real pelo MMU. 
 
Na figura 6 observa-se os dois espaços de endereçamento, Virtual (MV) e Real (MP). 
Considera-se neste exemplo a existência de apenas um processo para facilitar a 
explicação. O espaço virtual (à esquerda) compreende 64KB divididos em 16 páginas 
de 4 K cada uma (endereços internos de cada página-deslocamento- de 0 a 4095). 
Como são 16 páginas, cada endereço de página é um número com 4 bits (16 = 24) e 
cada deslocamento – endereço interno do byte na página tem 12 bits). Endereço 
virtual total de cada byte tem 16 bits (4 + 12) e, realmente tem-se que, 216 =64K (total 
do espaço virtual como já mostrado). 
 
E a memória principal (MP) ou RAM possui 32KB (metade do espaço virtual), sendo 
organizada em 8 frames também de 4 KB, sendo os endereços com 2 partes: 3 bits 
para endereço de cada um dos 8 frames (* = 23) mais 12 bits (deslocamento) com 
um total de 15 bits (3 + 12). 
 
A figura mostra uma distribuição de páginas (MV) para frames (MP) já realizada em 
acesso anteriores. Observa-se, na figura, 8 páginas da MV que foram mapeadas e 
armazenadas nos 8 frames da MP, todos fora de qualquer ordem, conforme já 
mencionado anteriormente. 
 
TEMA 9: GERÊNCIA DE MEMÓRIA (Parte 2) - MEMÓRIA VIRTUAL 
Pode acontecer de ocorrer um acesso a um dado (ou instrução) e que se deseja, 
neste acesso, o conteúdo do endereço 0 virtual para um registrador do processador 
(operação de leitura). Isso ocorre, por exemplo, em Assembly, pela instrução: 
MOV REG, 0, que significa: mover o conteúdo do endereço 0 para o registrador x 
qualquer. 
 
O endereço virtual 0 está contido na página virtual 0 (de 0 até 4095 ou 0K a 4K). A 
página 0 está mapeada para a página 2 (010) da MP (8K a 12K ou 8192 a 12287), 
conforme se observa na figura em cor vermelha. Então, ao final do mapeamento, o 
endereço virtual 0 se converte em endereço real 8192 e este é, então, colocado no 
BE e o ciclo de leitura prossegue daí. 
 
Observe a seguir outro exemplo semelhante, extraído da mesma fonte e usando os 
mesmos espaços mostrados na figura 6. Trata-se do acesso dado pela instrução 
Assembly: 
 
MOV REG, 8192, isto é: mover o conteúdo do endereço virtual 8192 para o REG x. 
 
De forma semelhante ao exemplo anterior (com outros dados naturalmente), tem-se: 
 
O endereço virtual 8192 está contido na página virtual 2 (de 8192 até 12287 ou 8K a 
12K). Esta página 2 está mapeada para a página 6 (110) da MP (24K a 28K ou 24576 
a 28671), conforme se observa na figura em cor verde. Então, ao final do 
mapeamento, o endereço virtual 8192 foi traduzido para o endereço real 24576 e 
este é, então, colocado no BE e o ciclo de leitura prossegue daí. 
 
E, por último, outro acesso: 
 
MOV REG, 32780 (mover o conteúdo do endereço virtual 32780 para o REG x. 
Neste caso, o processo é idêntico aos anteriores, exceto que a página virtual 
referenciada NÃO TEM CÓPIA armazenada na MP, ou seja, ocorreu uma falta de 
página ou “page fault”. Na figura se observa que 32780 é o byte 12 da página virtual 
8 (32K até 36K ou 32768 até 38911) e 32768 + 12 = 32780 (por isso é o byte 12). 
 
Observando-se a página 8 na figura 6, há um X no seu interior e não o endereço de 
uma página real como nos casos anteriores. Em um sistema verdadeiro, não 
apareceria X mas haveria uma coluna com um bit indicador se a página estaria ou 
não também armazenada na MP (bit 0, sim e bit 1 não). 
 
Havendo “page fault”, o sistema gera um sinal de Exceção (exception), o processo 
em execução e que realizou este acesso é suspenso e colocado em estado de Espera 
até que a página desejada seja movida da MV para a MP, alterados os conteúdos da 
tabela de página e o bit de validade e, em seguida, o processo seria movido de Espera 
para a fila de Pronto. 
 
Compreendidos os exemplos anteriores do funcionamento da tabela de páginas de 
um processo, em seguida, observe o funcionamento no interior do MMU, mostrado 
na figura 7. Na própria figura se inclui o passo a passo das operações internas do 
MMU que traduzem um endereço virtual (com 16 bits) em um endereço real (da 
MP), com 15 bits. Na verdade, ele apenas substituiu os 4 bits mais à esquerda 
 
TEMA 9: GERÊNCIA DE MEMÓRIA (Parte 2) - MEMÓRIA VIRTUAL 
(endereço da página virtual) pelos 3 bits do endereço do frame na MP, já que o 
deslocamento (12 bits) é idêntico em uma ou outra página. 
 
 
 
Figura 7 – Operação do MMU para traduzir endereço virtual em endereço real 
 
Deve ser observado também, que a entrada (a linha) da tabela de página de cada 
página/frame, possui mais campos, além dos dois já usados até o momento, o NPV 
e Deslocamento. Dependendo do SO há mais ou menos informações, todas, de uma 
forma geral, caracterizadas por bits que tem significa no processo. Por exemplo, um 
dos bits adicionais pode ser o de validade de página, que indica se a página virtual 
referenciada tem cópia na MP (bit 1) ou não (bit 0), acarretando (ou não) a tradução 
EV para ER ou uma Exceção (page fault). 
 
Antes de se passar para outro item deve ser lembrado que cada processo tem sua 
Tabela de Páginas e os movimentados mostrados nos exemplos ocorrem em cada 
acesso realizado pelo processo em execução no momento (em processamento como 
parece ser mais correto). Sempre que um processo sai deste estado e outro processo 
“ganha” o processador, altera-se a tabela de páginas a ser manipulada (passa a ser a 
Tabela do novo processo). 
 
A atividade de troca de páginas decorrente de um “page fault” é conhecida como 
paginação e a quantidade de “page faults” ocorrida em cada processo é denominada 
taxa de paginação do processo. Esta taxa deve ter valores normais, que fazem parte 
da atividade de paginação de qualquer SO; porém, se os valores em desta taxa 
sobem além do normal, provavelmenteo desempenho do sistema vai cair. 
 
 
 
 
TEMA 9: GERÊNCIA DE MEMÓRIA (Parte 2) - MEMÓRIA VIRTUAL 
Política de Busca de Página 
 
Um dos itens que o desenvolvedor de SO deve se preocupar (entre tantos) refere-se 
ao modo a ser escolhido de mover páginas da MS para a MP durante a execução de 
um processo. Pode-se citar aqui dois dos mais conhecidos modos: 
 
 POR DEMANDA 
 ANTECIPADA 
 
No primeiro caso, o SO move a página desejada apenas quando ela é referenciada 
em um acesso e o bit de validade indica que ela não está na MP (na ocorrência de 
um “page fault”). É um método simples e rápido e, graças ao princípio da localidade, 
um próximo “page fault” não deve ocorrer logo. 
 
Devido a aquele princípio, em grande parte do tempo o processador usa acessos a 
endereços contíguos e, face o tamanho de uma página a tendência é demora de 
realizar outro movimento de página. 
 
Já o segundo método, o SO move uma página de forma antecipada, isto é, antes que 
o processador venha precisar de um item armazenado na referida página. 
 
Isto é uma opção que parece de acordo com o Princípio da localidade, mas nem 
sempre funciona bem em face do tamanho das páginas. 
 
O método se assemelha ao uso de localidade em supermercados, onde o usuário 
busca a “página” (prateleira) de um produto e antecipadamente localiza uma outra 
prateleira, contígua, que ele imagina deverá querer buscar algo. Na prática, não é 
um método usado com frequência, e os SO tem se fixado mais no método de 
paginação por demanda, como, em média, um modo mais eficaz. 
 
Naturalmente, o leitor desejando se aprofundar mais na análise comparativa entre 
os métodos encontrará diversas considerações e resultados estatísticos de um e 
outro modo, desenvolvidos por pesquisadores sobre o assunto. O livro texto contém 
considerações a respeito, especialmente o livro do Silberschatz (cap 9). 
 
Política de Alocação de Página 
 
Da mesma forma que o item anterior, também foram desenvolvidos modos 
diferentes de alocação das páginas de um processo (movimento de swapping IN) 
durante sua execução. Como já se sabe, em face da grande quantidade de processos 
em execução durante um período (elevada taxa de multiprogramação) e do tamanho 
crescente de cada código executável (programa), não se usa mais mover o código 
inteiro de um processo paar a MP e sim apenas alguns blocos (conhecidos coimo 
páginas/frames) em cada momento. Com isso, muitos processos podem conviver na 
MP, colocados em partes. 
 
TEMA 9: GERÊNCIA DE MEMÓRIA (Parte 2) - MEMÓRIA VIRTUAL 
O problema aqui trata de se saber quantas páginas de cada processo devem estar na 
MP em um dado momento, escolhidas de forma a não prejudicar o desempenho 
global do sistema. 
 
 ALOCAÇÃO FIXA 
 ALOCAÇÃO VARIÁVEL 
 
No primeiro modo (Fixa) o SO define uma quantidade fixa de frames que devem estar 
armazenados na MP durante a execução do processo. Esta quantidade, que pode ser 
estabelecida na criação do processo (considerando o tipo de aplicação e, usualmente 
baseada no histórico de execução do processo), pode ser fixa para todos os processos 
(independentemente do tamanho de cada um) ou diferente para cada processo. 
 
É sempre difícil e pouco prático ou pouco correto essas “adivinhações”. Além disso, 
tem sido repetido tanto nesses textos ou em sala, que, para se administrar essas 
variáveis de forma que pareça eficiente, faz com que o SO tenha que executar código 
seguidamente para interpretar uma determinada opção e isso consome tempo do 
processador, para resultados nem sempre muito satisfatórios, mas que reduzem 
desempenho global (menos tempo para os processos dos usuários). 
 
A alocação variável procura se adaptar ás diferentes características de cada 
processo, alocando mais ou menos páginas em função da taxa de paginação crescer 
ou diminuir. 
 
Esses limites, como deve ser imaginado constam dos itens definidos no contexto de 
software de cada processo. 
 
Política de Substituição de Páginas 
 
Outro dos problemas existentes em um SO que emprega memória virtual, seja com 
paginação ou não, pode ocorrer quando um processo faz acesso a um 
dado/instrução em uma página não existente na MP (“page fault”) e esta página 
precisa ser movida para a MP (swapp in). E, mais ainda, quando, neste caso, o SO 
verifica que não há espaço livre (todos os frames estão em uso). Nessa situação, há 
necessidade de se retirar uma página e substitui-la pela página ora desejada. Trata-
se de um problema de Substituição de Página. 
 
Este problema não é novo, pois ele pode ocorrer em movimento de blocos da MP 
para a Cache ou mesmo para páginas da Web sendo constantemente referenciadas 
pelo usuário. 
 
Escolher uma página e ela logo depois ser novamente referenciada, é uma péssima 
escolha, com todos os prejuízos de tempo/desempenho decorrentes, ou mesmo, 
escolher uma página antiga na MP, mas frequentemente usada (acesso a dados em 
um looping, p. ex) é outra má escolha. E assim por diante. 
 
Pesquisadores em Universidades, Centros de Pesquisa que se especializam (entre 
outros assuntos) em desenvolvimento de SO e fabricantes/desenvolvedores de 
software para SO, tem consumido algum tempo em encontrar algoritmos que 
escolham a melhor página para ser retirada e substituída. 
 
TEMA 9: GERÊNCIA DE MEMÓRIA (Parte 2) - MEMÓRIA VIRTUAL 
Por esta razão, a literatura tem mostrado diversos algoritmos de substituição de 
páginas, assim como SO diferentes tendem a usar um ou outro. Não há unanimidade 
de uma ótima escolha. 
 
Alguns dos algoritmos de substituição de páginas mais usados ou referenciados na 
literatura especializada são: 
 
 Ótimo 
 Aleatório 
 FIFO (fila simples) 
 NRU-not recently used) – não é referenciada há mais tempo 
 
Outros algoritmos podem ser consultados e analisados na bibliografia do curso, tais 
como: 
 
LRU- least recently used – há mais tempo na MP e sem ser referenciada. 
LFU-least frequently used- página que não é usada há mais tempo. 
 
As diferenças, algumas sutis entre esses algoritmos, precisam de análise, pois alguns 
tem pouca diferença entre eles. Tratam de estar há mais tempo (mais podem estar 
há mais tempo e ser frequentemente referenciados em acessos) ou ser pouco 
referenciada ou entrar uma vez e nunca mais ser usada, por exemplo. 
 
Algoritmo de escolha ótima de página para substituição 
 
Trata-se de escolher a página que não será mais referenciada ou demorará muito 
para isso. 
Ele é usado apenas como elemento teórico de comparação pois o SO nunca poderá 
saber antecipadamente qual página será a melhor para ser substituída. 
 
Algoritmo de escolha aleatória 
 
Este algoritmo, o mais simples e rápido de implementar e usar não possui qualquer 
critério a ser analisado pelo SO (por isso é simples e rápido). Ele seleciona qualquer 
usa das páginas disponíveis na MP, inclusive pode ser uma frequentemente 
referenciada. Pouco usado devido sua baixa eficiência. 
 
Algoritmo do tipo Fila simples (FIFO-first in first out) 
 
A página que entrou primeiro (no momento da verificação, é claro) é a candidata 
escolhida para ser substituída. 
Nem sempre é uma boa escolha, pois o algoritmo não se preocupa com a quantidade 
de referências que esta página pode estar tendo (especialmente se é uma página de 
dados). 
 
Não me lembro de nenhum SO da atualidade que utilize este algoritmo. 
 
NRU (not recently used) - não tem sido referenciado recentemente. 
 
 
TEMA 9: GERÊNCIA DE MEMÓRIA (Parte 2) - MEMÓRIA VIRTUAL 
Trata-se de escolher a página que não foi referenciada (não houve acesso a dados 
dela) há mais tempo e, se possível, não foi modificada por uma operação de escrita 
em algum de seus bytes. 
 
Neste caso, o SO usa DOIS bits auxiliares para cada quadro/página (ficam em cada 
linha da tabela de página, juntamente com o bit de validade): 
BR - bit que indica se a página foi referenciada – inicia com 1 e periodicamente é 
passado para 0 até haver referência quando volta a 1 e assim por diante. 
 
BM - bit que indica se foi modificada.Como são dois bits, há 4 possíveis combinações entre eles, mostradas na tabela a 
seguir: 
 
BITS DE REFER E 
MODIF 
DESCRIÇÃO 
1 – BR=0 e BM = 0 Página não referenciada e não modificada 
1 – BR=0 e BM = 1 Página não referenciada e modificada 
1 – BR=1 e BM = 0 Página referenciada e não modificada 
1 – BR=1 e BM = 1 Página referenciada e modificada 
 
Para fixar o entendimento deste último algoritmo resolva o seguinte exercício: 
 
1. Considere um processo com limite de páginas reais igual a 4 e um sistema que 
implemente a política de substituição de páginas NRU (não usada 
recentemente). Quantos page faults ocorrerão considerando que as páginas 
virtuais são referenciadas na seguinte ordem, da direita para a esquerda: 
 
 07172372103 (nenhuma foi modificada). 
 
Considerações sobre o Tamanho da Página 
 
Assim como o tamanho de uma linha nas memorias cache influencia o desempenho 
dos sistemas e o espaço ocupado nas referidas memórias, também o tamanho de 
uma página tem suas implicações no funcionamento dos SO que empregam 
memória virtual (MV). 
 
Por exemplo, uma das implicações é a quantidade de entradas na tabela de página. 
 
 Páginas pequenas implicam em: 
 
 Tabelas de mapeamento maiores. 
 Maior taxa de paginação. 
 Maior quantidade de acessos à memória secundária. 
 Operações de E/S mais lentas. 
 
TEMA 9: GERÊNCIA DE MEMÓRIA (Parte 2) - MEMÓRIA VIRTUAL 
 Páginas grandes implicam em: 
 
 Tabelas de mapeamento menores. 
 Maior fragmentação interna. 
 
Antes de concluir este texto, resumo das principais considerações sobre memória 
virtual, podem ser efetuadas algumas observações a respeito do assunto: 
 
1. Embora não tenha sido analisado neste texto, há um outro modo de emprego de 
MV, conhecido como Segmentação. Nesse caso, em vez de se organizar a MV e 
MP em blocos de tamanho fixo (páginas e frames), usa-se blocos de tamanho 
variável, ou Segmentos. O SO administra a alocação e o tamanho dos segmentos 
em função do tamanho e quantidade de processos em execução em dado 
momento. 
 
2. Working set - Conjunto de trabalho 
 
Consiste na definição de um conjunto de páginas que devem estar na MP 
enquanto um processo está em execução. Isso ocorre para evitar um aumento 
de paginação (maior quantidade de page faults) se houver poucas páginas de um 
processo na MP ou causar uma redução da taxa de multiprogramação (menos 
processos em execução ao mesmo tempo, compartilhando a memória) se houver 
uma grande quantidade de páginas de um processo, e nem todas sendo usadas. 
 
Devido ao princípio da localidade, pode-se definir um conjunto de páginas que 
será referenciado por um processo durante um certo intervalo de tempo, o qual 
é chamado de “working set” ou conjunto de páginas de trabalho. 
 
3. Translation lookaside buffer 
 
Este mecanismo, usado por alguns SO que empregam MV (usa-se nos textos em 
português o termo inglês), tem por propósito economizar tempo de acesso às 
tabelas de páginas dos processos. 
 
Como é comum ter-se tabelas longas, mas que se usa apenas algumas entradas 
(muitas outras nem são referenciadas durante toda a execução de um processo), 
o SO cria uma pequena área de memória, como se fosse uma cache, contendo o 
mapeamento do endereço virtual em endereço físico já pronto. 
 
Na ocasião de um acesso, o SO vai direto nesta pequena memória e já realiza o 
acesso se haver necessidade daquele processo mostrado de tradução dos 
endereços virtuais para físicos feita no MMU. 
 
 
 
 
 
 
 
 
 
TEMA 9: GERÊNCIA DE MEMÓRIA (Parte 2) - MEMÓRIA VIRTUAL 
 
Parte B- Arquivos com Slides que complementam o assunto abordado: 
 
SO- TEMA 9-Ger 
Mem-Memoria Virtal.pptx 
 
 
REFERÊNCIAS: 
Básica: Disponíveis na Biblioteca Digital 
MACHADO, F. B.; MAIA, L. P. M. Arquitetura de sistemas operacionais. 5. ed. Rio de 
Janeiro: LTC, 2013. 
SILBERSCHATZ, A. Fundamentos de Sistemas operacionais – Princípios básicos. 1. ed. 
Rio de Janeiro: LTC, 2013. 
TANEMBAUM, A. S.; WOODHULL, A.S.. Sistemas Operacionais -Projeto e 
Implementação. 3. ed. São Paulo: Pearson, 2008 
 
Complementar: 
TANEMBAUM, A. S.; WOODHULL, A.S.. Sistemas Operacionais Modernos. 4. ed. São 
Paulo: Pearson, 2016 
FLYNN, I. M.; MCHOES, A. M. Introdução aos Sistemas Operacionais. 1. ed. São Paulo: 
Pioneira Thomson Learning, 2002. 
MACHADO, F. B.; MAIA, L. P. M. Fundamentos de sistemas operacionais. 1. ed. Rio de 
Janeiro: LTC, 2011. 
MARQUES, J. A.; FERREIRA, P.; RIBEIRO, C.; VEIGA, L.; RODRIGUES, R. Sistemas 
Operacionais. 1. ed. Rio de Janeiro: LTC, 2011. 
OLIVEIRA, R. S.; CARISSIMI, A. S.; TOSCANI, S. S. Sistemas operacionais. 4. ed. Porto 
Alegre: Bookman, 2010. (Livros Didáticos Informática UFRGS, v. 11).

Mais conteúdos dessa disciplina