Buscar

SISTEMA OPERACIONAIS TEMP 4 -1 COM RESPOSTA DE EXERCICIOS

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 32 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 32 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 32 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Paginação em memória virtual
Apresentação
Todo usuário gostaria que seu computador tivesse memória suficiente para executar todos os seus 
programas de modo rápido. Infelizmente essa não é a realidade. Por mais que o desenvolvimento 
de memórias tenha evoluído muito nos últimos anos, proporcionando capacidades maiores, os 
programas de usuário têm crescido em um ritmo muito rápido, sempre criando a necessidade de 
alternativas para gerenciamento do espaço para os programas.
Desde a década de 60, com programas científicos e financeiros, a necessidade de executar 
programas maiores que a memória do computador já era um problema real. Esse problema também 
pode acontecer quando os programas, mesmo que individualmente sejam menores que a memória, 
se executados simultaneamente, não podem estar em sua totalidade na memória principal. Dentre 
as soluções inventadas, tem-se a memória virtual.
Nesta Unidade de Aprendizagem, você vai aprender sobre uma das principais técnicas de memória 
virtual, a paginação, e entender o funcionamento e os problemas/soluções que podem acontecer.
Bons estudos.
Ao final desta Unidade de Aprendizagem, você deve apresentar os seguintes aprendizados:
Definir a técnica de paginação de memória, explicando seus princípios, vantagens e 
desvantagens.
•
Explicar o processo de troca de páginas em memória virtual.•
Reconhecer problemas em um sistema de paginação e a forma de solucioná-los.•
Desafio
O desenvolvimento de software evoluiu muitos nos últimos tempos, de modo que, hoje, os 
programas têm cada vez mais funcionalidades e consomem muito mais recursos. Dentre esses 
recursos está a memória, que, apesar da sua evolução, também precisa ser gerenciada. Quando a 
memória principal não é suficiente, é comum adotar o uso de memória virtual.
Você trabalha em uma empresa que desenvolve software para equipamentos embarcados, 
principalmente voltados para indústrias no monitoramento da produção dos equipamentos 
utilizados. Como os sistemas são embarcados e também na tentativa de redução de custos, os 
recursos são limitados e devem ser aproveitados o máximo possível.
Dentre os softwares desenvolvidos, além dos programas de análise, é comum desenvolver um 
sistema operacional para gerenciamento do componente como um todo. Em geral, os programas 
são bem divididos, em termos de memória quanto a instruções, pilha e áreas de dados.
Contudo, você tem enfrentado um problema quanto à troca de processos entre a memória e o 
disco do componente, em que muitas páginas ao serem salvas em discos são reescritas sem 
necessidade, pois não estão modificadas. Por exemplo, algumas páginas são compostas somente 
pelas instruções do programa, e geralmente não são modificadas durante a execução, logo, quando 
essa página for substituída por outra na memória principal, não haverá a necessidade de reescrita, 
pois esta permanece inalterada. Por outro lado, as páginas que armazenam dados do programa 
provavelmente são modificadas, e isso só pode ser descoberto durante a execução da página na 
memória principal.
Com base no cenário descrito, que tipo de informação poderia ser armazenada para indicar se a 
página precisa ser reescrita ou não em disco? Onde esse dado seria armazenado?
Infográfico
A paginação divide os processos em páginas que são armazenadas em uma memória, geralmente 
disco. Conforme a execução do processo, as instruções são executadas e podem necessitar de 
páginas que não estão presentes na memória, desse modo, cada página solicitada é carregada em 
uma moldura em substituição de outra.
No Infográfico, conheça melhor o funcionamento do processo de paginação de um processo.
Aponte a câmera para o 
código e acesse o link do 
conteúdo ou clique no 
código para acessar.
https://statics-marketplace.plataforma.grupoa.education/sagah/e665332b-e132-449e-a096-b76efbf84059/7c9e4b2a-2612-4940-93ec-8e1779c8a60c.jpg
Conteúdo do livro
Olá, alunos! No mundo da computação, é fundamental entender como a memória é gerenciada em 
um sistema operacional. A memória virtual é uma técnica utilizada para permitir que programas 
usem mais memória do que realmente está disponível na memória RAM física. Para isso, o sistema 
operacional aloca espaço em disco rígido para servir como uma extensão da memória RAM.
Uma das técnicas utilizadas no gerenciamento de memória virtual é a paginação. A ideia é dividir a 
memória física e a memória virtual em blocos de tamanho fixo, chamados de páginas. Quando um 
programa tenta acessar uma determinada página, o sistema operacional verifica se ela está 
presente na memória RAM. Se não estiver, o sistema operacional a busca no disco rígido e a coloca 
na memória RAM. Esse processo é chamado de paginação e é uma técnica importante para 
gerenciar a memória de um sistema operacional.
No capítulo Paginação em memória virtual, base teórica desta Unidade de Aprendizagem, 
discutiremos a técnica de paginação, abordando conceitos importantes, como mapeamento de 
páginas, cálculos de endereçamento virtual e físico, tamanhos de página e algoritmos de 
substituição de páginas. Além disso, apresentaremos exemplos práticos de como esses conceitos 
são aplicados em sistemas operacionais reais. A compreensão desses tópicos é fundamental para 
qualquer desenvolvedor ou administrador de sistemas, pois a gerência de memória é um aspecto 
crucial do desempenho e da estabilidade do sistema.
Boa leitura.
SISTEMAS 
OPERACIONAIS
OBJETIVOS DE APRENDIZAGEM
 > Definir a técnica de paginação de memória, explicando seus princípios, 
vantagens e desvantagens.
 > Explicar o processo de troca de páginas em memória virtual.
 > Reconhecer problemas em um sistema de paginação e a forma de solucioná-
-los.
Introdução
Memória virtual é um recurso importante em sistemas operacionais modernos, 
permitindo que programas utilizem mais memória do que há fisicamente presente 
no sistema. A memória virtual é implementada por meio de técnicas de paginação 
e segmentação.
A memória virtual divide a memória física em blocos de tamanho fixo chamados 
de páginas. Cada página pode ser mapeada para um espaço de endereço virtual. 
O espaço de endereço virtual é dividido em blocos também de tamanho fixo 
chamados de páginas virtuais.
Neste capítulo, você vai aprender sobre memória virtual e como ela é imple-
mentada mediante paginação. Vamos discutir as vantagens e desvantagens da 
memória virtual, bem como a implementação de algoritmos de substituição de 
página. Além disso, também veremos como a memória virtual é gerenciada pelo 
sistema operacional e como os programas interagem com ela.
Paginação em 
memória virtual
Victor de Andrade Machado
Paginação e a memória virtual
A memória virtual é uma técnica utilizada pelos sistemas operacionais para 
permitir que os programas possam acessar mais memória do que a fisicamente 
disponível. Mediante a memória virtual, o sistema operacional utiliza o disco 
rígido como extensão da memória principal, fazendo com que os programas 
possam acessar áreas de memória que estão na memória física ou na memória 
virtual (MACHADO; MAIA, 2007).
A técnica de paginação é uma das mais utilizadas para implementar a 
memória virtual. Consiste em dividir a memória virtual em páginas de tamanho 
fixo e armazenar essas páginas em blocos consecutivos no disco rígido. Cada 
página da memória virtual é mapeada para uma página física na memória 
principal. O mapeamento entre as páginas virtuais e físicas é mantido numa 
tabela de páginas.
Quando um programa tenta acessar uma página virtual que não está 
presente na memória física, ocorre uma exceção de página falha. O sistema 
operacional intercepta essa exceção e carrega a página correspondente do 
disco rígido para a memória física. O endereço virtual é então mapeado para 
o endereço físico correspondente na tabela de páginas e o programa pode 
continuar sua execução normalmente (TANENBAUM; BOS, 2016).
A técnica de paginação é transparente para o programa em execução, 
pois ele não tem conhecimento da existênciada memória virtual. Assim, 
o programa trata toda a memória como se estivesse presente na memória 
física. A Figura 1 representa a relação entre memória física e memória virtual. 
Paginação em memória virtual2
Figura 1. Relação entre endereços virtuais e endereços de memória física.
Fonte: Tanenbaum e Bos (2016, p. 136).
De acordo com Tanenbaum e Bos (2016, p. 134), a memória virtual apresenta 
bom funcionamento em:
[...] sistema de multiprogramação, com pedaços e partes de muitos programas na 
memória simultaneamente. Enquanto um programa está esperando que partes de 
si mesmo sejam lidas, a CPU pode ser dada para outro processo.
Vantagens e desvantagens da paginação
A técnica de paginação traz vários benefícios para a implementação da 
memória virtual. Um dos principais é que permite que os programas pos-
sam acessar mais memória do que a fisicamente disponível. Isso significa 
que os programas podem ficar maiores e mais complexos, pois não estão 
limitados pela quantidade de memória física presente no sistema (TANEN-
BAUM; BOS, 2016).
Paginação em memória virtual 3
Outro benefício da técnica de paginação é permitir que os programas sejam 
compartilhados entre vários processos. Quando um processo é criado, ele 
herda a tabela de páginas do processo-pai. Isso significa que os processos 
podem compartilhar as mesmas páginas físicas, reduzindo a quantidade de 
memória física necessária para executar vários processos simultaneamente 
(MACHADO; MAIA, 2007).
A técnica de paginação também permite que o sistema operacional possa 
implementar políticas de gerenciamento de memória mais sofisticadas, como 
swapping, que é a troca de páginas entre a memória física e o disco rígido. 
Isso permite que o sistema operacional possa balancear a carga de trabalho 
entre a memória física e o disco rígido, maximizando a utilização dos recursos 
do sistema (SILBERSCHATZ; GALVIN; GAGNE, 2015).
Apesar dos benefícios, a técnica de paginação também traz algumas 
desvantagens. Uma das principais é o alto comprometimento mínimo, ou 
overhead, do mapeamento entre as páginas virtuais e físicas. Esse overhead 
é causado pela necessidade de manter uma tabela de páginas em memória, 
o que pode consumir uma quantidade significativa de memória física.
Outra desvantagem da técnica de paginação é o aumento do tempo de 
acesso à memória. Quando um programa tenta acessar uma página virtual 
que não está presente na memória física, ocorre uma exceção de página 
falha e o sistema operacional precisa carregar a página correspondente do 
disco rígido para a memória física. Esse processo pode ser demorado, pois 
o disco rígido é muito mais lento que a memória física.
Além disso, a técnica de paginação pode levar a problemas de fragmentação 
de memória. Como as páginas virtuais são de tamanho fixo, pode haver casos 
em que o espaço livre na memória física é menor que o tamanho da página, 
o que leva a desperdício de espaço. Tal desperdício, por sua vez, pode levar a 
uma diminuição da eficiência da memória virtual, pois o sistema operacional 
precisa carregar mais páginas do disco rígido para a memória física a fim de 
atender as solicitações dos programas (TANENBAUM; BOS, 2016).
O sistema operacional é responsável por gerenciar a memória virtual. 
Isso inclui a alocação e desalocação de páginas de memória, o car-
regamento de páginas do disco rígido para a memória RAM e a substituição de 
páginas na memória RAM. 
Paginação em memória virtual4
De modo geral, a paginação permite que os programas acessem uma 
quantidade maior de memória do que realmente está disponível na memória 
física. Isso é possível porque o sistema operacional pode substituir páginas 
menos utilizadas por outras que são necessárias.
Troca de páginas virtuais
A memória virtual permite que o sistema operacional gerencie a memória de 
forma mais eficiente do que seria possível sem ela. Assim, o sistema opera-
cional pode alocar e liberar páginas de memória física conforme necessário, 
sem afetar o espaço de endereço virtual dos programas.
Segundo Silberschatz, Galvin e Gagne (2015), o sistema operacional tam-
bém pode usar a técnica de swapping para liberar espaço na memória física. 
Quando a memória física está cheia, o sistema operacional pode escolher 
uma página menos utilizada e movê-la para o espaço de armazenamento 
secundário. Os autores ainda definem a troca de páginas como o processo 
de transferir páginas de memória entre a memória principal (RAM) e o ar-
mazenamento secundário (disco rígido) para otimizar a utilização eficiente 
da memória.
Quando um programa é executado, ele é dividido em unidades de tamanho 
fixo chamadas de páginas. A memória principal também é dividida em blocos 
do mesmo tamanho, conhecidos como frames. A troca de páginas ocorre 
quando uma página do programa não está presente na memória principal, 
exigindo que seja buscada no armazenamento secundário.
Isso libera espaço na memória física para novas páginas que são requi-
sitadas pelo programa em execução. Quando a página movida se faz nova-
mente necessária, o sistema operacional pode mover a página de volta para 
a memória física e atualizar o mapeamento na tabela de páginas. A Figura 2 
apresenta um exemplo desse processo.
Paginação em memória virtual 5
Figura 2. Estrutura operacional da tabela de páginas.
Fonte: Tanenbaum e Bos (2016, p. 137).
Além disso, a memória virtual também permite a implementação 
de recursos de proteção de memória. Cada página virtual pode ser 
marcada como somente leitura, somente escrita ou somente execução. Isso 
impede que programas acessem partes da memória que não deveriam ser 
acessadas (MACHADO; MAIA, 2007).
Quando a memória RAM está cheia e um novo programa ou página precisa 
ser carregado na memória, é necessário liberar espaço na memória RAM. Isso 
é feito substituindo uma página existente na memória RAM por uma página 
que precisa ser carregada. Existem vários algoritmos de substituição de página 
que podem ser usados para determinar qual página deve ser removida da 
memória RAM. Esses algoritmos são projetados para maximizar o desempenho 
Paginação em memória virtual6
do sistema, minimizando o número de páginas que precisam ser carregadas 
do disco rígido (TANENBAUM; BOS, 2016).
O Translation Lookaside Buffer (TBL) é um buffer de memória cache 
que armazena as entradas da tabela de páginas virtual recentemente 
usadas. É usado para acelerar o acesso à memória física correspondente aos 
endereços virtuais. Quando um endereço virtual é acessado, o sistema verifica se 
a entrada correspondente está presente no TBL. Se estiver presente, o endereço 
físico é obtido diretamente do TBL, sem a necessidade de consultar as tabelas 
de páginas em memória principal. Isso acelera o acesso à memória e reduz o 
tempo de latência do sistema. No entanto, se a entrada não estiver presente 
no TBL, o sistema precisa buscar a entrada nas tabelas de páginas em memória 
principal, o que pode ser mais lento. Portanto, o TBL é usado para melhorar o 
desempenho do sistema de memória virtual, mas não substitui completamente 
as tabelas de páginas em memória principal (TANENBAUM; BOS, 2016).
Um dos algoritmos de substituição de página mais comuns é o FIFO (first-in, 
first-out, ou “primeiro a entrar, primeiro a sair”). Nesse algoritmo, a página mais 
antiga na memória RAM é substituída por uma nova página. Outro algoritmo 
comum é o LRU (least recently used, ou “menos recentemente usado”), que 
substitui a página que não foi acessada há mais tempo.
Outros algoritmos de substituição de página incluem o LFU (least frequen-
tly used), que substitui a página que foi usada menos frequentemente, e o 
MFU (most frequently used), que substitui a página que foi usada com mais 
frequência (SILBERSCHATZ; GALVIN; GAGNE, 2015).
Alguns algoritmos de substituição
Quando um sistema operacional utiliza a técnica de paginação, pode ocorrer 
o caso em que não haja mais espaço livre na memória principal para alocar 
uma nova página. Nesse momento,é necessário escolher alguma página para 
ser removida da memória principal e dar lugar à nova página. Essa escolha 
é feita por um algoritmo de substituição de páginas, que tem como objetivo 
minimizar o número de faltas de página e maximizar a eficiência do sistema. 
Vamos ver alguns exemplos de algoritmos de substituição de páginas.
O algoritmo FIFO escolhe para remoção a página que foi carregada na 
memória principal há mais tempo. É como uma fila, em que a primeira página 
a entrar é a primeira a sair. Esse algoritmo é fácil de implementar, mas pode 
não ser eficiente em alguns casos, especialmente quando as páginas mais 
antigas ainda estão sendo usadas com frequência (TANENBAUM; BOS, 2016). 
Paginação em memória virtual 7
Suponha que temos três páginas na memória principal e que a sequência 
de referência de páginas é 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5. Na primeira vez em que 
a página 1 é referenciada, ela é carregada na primeira posição da memória 
principal. Na segunda vez em que a página 1 é referenciada, ela já está na 
memória principal, então não é necessário carregar novamente. Na terceira 
vez em que a página 1 é referenciada, a página 3 é removida da memória 
principal, pois é a primeira página a ter sido carregada na memória. O mesmo 
acontece com a página 2, que é carregada na segunda posição da memória, 
e com a página 3, que é carregada na terceira posição. Quando a página 4 
é referenciada, ela substitui a página 1, que foi a primeira página a ser car-
regada na memória. O mesmo acontece quando a página 5 é referenciada, 
substituindo a página 2.
Por sua vez, o algoritmo LRU escolhe para remoção a página que foi usada 
menos recentemente, ou seja, que foi acessada há mais tempo. Esse algoritmo 
é mais complexo que o FIFO, pois requer a manutenção de um contador para 
cada página, indicando quando ela foi usada pela última vez. No entanto, o LRU 
pode ser mais eficiente em alguns casos, já que tende a manter na memória as 
páginas que estão sendo usadas com mais frequência (TANENBAUM; BOS, 2016). 
Suponha que temos três páginas na memória principal e que a sequência 
de referência de páginas é 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5. Quando a página 1 é 
referenciada pela primeira vez, ela é carregada na primeira posição da me-
mória principal. Quando a página 2 é referenciada pela primeira vez, ela é 
carregada na segunda posição. Quando a página 3 é referenciada pela primeira 
vez, ela é carregada na terceira posição. Quando a página 4 é referenciada 
pela primeira vez, ela substitui a página que foi usada menos recentemente, 
que é a página 1. Na sequência seguinte de referência de páginas, a página 
5 é referenciada, substituindo a página 2, que foi a página usada menos 
recentemente. Na próxima sequência de referência de páginas, a página 1 é 
referenciada novamente, mas agora ela já está na memória principal e não 
é necessário carregá-la novamente.
Já o LFU é um algoritmo que escolhe para remoção a página que foi usada 
menos frequentemente, ou seja, que foi acessada menos vezes. Esse algoritmo 
também requer a manutenção de um contador para cada página, indicando 
quantas vezes ela foi acessada. O LFU pode ser eficiente em sistemas em que 
algumas páginas são usadas com mais frequência do que outras (SILBERS-
CHATZ; GALVIN; GAGNE, 2015).
Suponha que temos três páginas na memória principal e que a sequência 
de referência de páginas é 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5. Quando a página 1 é re-
ferenciada pela primeira vez, ela é carregada na primeira posição da memória 
Paginação em memória virtual8
principal. Quando a página 2 é referenciada pela primeira vez, ela é carregada 
na segunda posição. Quando a página 3 é referenciada pela primeira vez, 
ela é carregada na terceira posição. Quando a página 4 é referenciada pela 
primeira vez, ela substitui a página que foi usada menos frequentemente, 
que é a página 1. Na sequência seguinte de referência de páginas, a página 
5 é referenciada, substituindo a página 2, que foi a página usada menos 
frequentemente. Na próxima sequência de referência de páginas, a página 1 
é referenciada novamente, mas agora ela já está na memória principal e não 
é necessário carregá-la novamente.
Outro algoritmo de substituição de páginas é o NRU (not recently used), que 
divide as páginas em quatro categorias, com base em dois bits que indicam 
se cada página foi usada recentemente e se é escrita ou somente leitura. Em 
seguida, o NRU escolhe aleatoriamente uma página de uma categoria que 
não seja a mais recente. Esse algoritmo é simples, mas pode não ser eficiente 
em sistemas em que algumas páginas são usadas com mais frequência do 
que outras.
Por fim, podemos citar o algoritmo MFU (most frequently used), que faz 
as substituições baseado na frequência de uso de cada página. O MFU opera 
escolhendo para ser mantida na memória principal a página que foi usada com 
mais frequência e substituindo a página que foi usada com menos frequência 
(MACHADO; MAIA, 2007).
Uma das vantagens do algoritmo MFU é que ele é adequado para lidar 
com o problema do envelhecimento, pois com ele as páginas que são 
usadas com mais frequência têm uma contagem maior e, portanto, são menos 
propensas a serem removidas da memória principal. No entanto, assim como 
outros algoritmos de substituição de página, o MFU não é perfeito e pode não 
funcionar bem em todas as situações. Em particular, esse algoritmo pode ter 
problemas com páginas que são usadas com frequência no início de sua vida útil 
e, em seguida, deixam de ser usadas com frequência (ARAÚJO; FERNANDES, 2018).
Suponha que temos três páginas na memória principal e que a sequência 
de referência de páginas é 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5. Quando a página 1 é re-
ferenciada pela primeira vez, ela é carregada na primeira posição da memória 
principal. Quando a página 2 é referenciada pela primeira vez, ela é carregada 
na segunda posição. Quando a página 3 é referenciada pela primeira vez, 
ela é carregada na terceira posição. Quando a página 4 é referenciada pela 
primeira vez, ela substitui a página que foi usada mais frequentemente, que é 
a página 1. Na sequência de referência de páginas, a página 5 é referenciada, 
Paginação em memória virtual 9
substituindo a página 2, que foi a página usada menos frequentemente. 
Na próxima sequência de referência de páginas, a página 1 é referenciada 
novamente, mas agora ela já está na memória principal e não é necessário 
carregá-la novamente.
Aplicações e problemas de desempenho
Existem vários algoritmos de substituição de página que podem ser usados, 
cada qual com seus próprios prós e contras. A escolha do algoritmo ideal 
depende das características específicas do sistema e da carga de trabalho. 
É importante destacar que a substituição de página é um processo dinâmico 
que deve ser ajustado continuamente à medida que a carga de trabalho vai 
mudando (TANENBAUM; BOS, 2016). A seguir, vamos explorar alguns exemplos 
práticos que mostram como o tamanho de página afeta a representação de 
endereço virtual.
Suponha que estamos trabalhando com um processador que suporta 
endereços virtuais de 32 bits e que o sistema operacional utiliza páginas de 
4 KB de tamanho. Isso significa que há 220 páginas possíveis em um espaço 
de endereço virtual de 32 bits, e cada página tem um tamanho de 4 KB, ou 
212 bytes.
Um endereço virtual de 32 bits pode ser representado como um número de 
32 bits, o que significa que pode ter um valor máximo de 232 – 1, ou 429.4967.295 
em decimal. Para traduzir esse endereço virtual em um endereço físico, o 
sistema operacional divide o endereço virtual em três partes: o número da 
página, o deslocamento dentro da página e o número do quadro de página 
físico correspondente.
O número da página é determinado pelos bits mais significativos do en-
dereço virtual, que são os primeiros 20 bits. Isso significa que há 220 páginas 
possíveis. O deslocamento dentro da página é determinado pelos bits menos 
significativos doendereço virtual, que são os últimos 12 bits. Como o tamanho 
da página é de 4 KB, o deslocamento pode ter um valor máximo de 212 – 1 ou 
4.095 em decimal. O número do quadro de página físico é determinado pelo 
sistema operacional, que mantém uma tabela de páginas que mapeia os 
números de página virtuais para números de quadros físicos correspondentes.
Outro exemplo que podemos considerar é um endereço virtual de 64 bits. 
Suponha que estamos trabalhando com um sistema que usa páginas de 2 MB 
de tamanho. Isso significa que há 221 páginas possíveis num espaço de ende-
reço virtual de 64 bits, e cada página tem um tamanho de 2 MB, ou 221 bytes.
Paginação em memória virtual10
Um endereço virtual de 64 bits pode ser representado como um número 
de 64 bits, o que significa que pode ter um valor máximo de 264 – 1. Para 
traduzir este endereço virtual em um endereço físico, o sistema operacional 
divide o endereço virtual em quatro partes: o número do diretório de página, 
o número da tabela de páginas, o deslocamento dentro da página e o número 
do quadro de página físico correspondente.
O número do diretório de página é determinado pelos bits mais significati-
vos do endereço virtual, que são os primeiros 16 bits. Isso significa que temos 
216 diretórios de página possíveis. Cada diretório de página pode ter 29 (512) 
entradas, cada qual correspondente a uma tabela de páginas. Dessa forma, 
os próximos 9 bits do endereço virtual determinam o número da tabela de 
páginas, ou seja, existem 512 tabelas de páginas possíveis em cada diretório.
Cada tabela de página também pode ter 29 entradas, cada uma corres-
pondente a uma página física na memória principal. Portanto, os próximos 
9 bits do endereço virtual determinam o número da entrada na tabela de 
páginas correspondente à página virtual.
O deslocamento dentro da página é determinado pelos 21 bits seguintes, 
que representam a posição do byte desejado dentro da página. Como cada 
página tem um tamanho de 2 MB, ela pode armazenar 221 bytes, e o desloca-
mento é representado por um valor entre 0 e 221 – 1.
Por fim, o número do quadro de página físico correspondente é determi-
nado pelo sistema operacional a partir do número da tabela de páginas e da 
entrada correspondente na tabela. Esse número identifica o endereço físico 
da página na memória principal.
Em resumo, segundo Tanenbaum e Bos (2016), a tradução de um endereço 
virtual de 64 bits para um endereço físico em um sistema com páginas de 2 
MB envolve os seguintes passos:
 � Divida o endereço virtual em quatro partes: número do diretório de 
página, número da tabela de páginas, deslocamento dentro da página 
e número do quadro de página físico correspondente.
 � Use os primeiros 16 bits do endereço virtual para determinar o número 
do diretório de página.
 � Use os próximos 9 bits para determinar o número da tabela de páginas 
correspondente ao endereço virtual dentro do diretório de página.
 � Use os próximos 9 bits para determinar o número da entrada na tabela 
de páginas correspondente à página virtual.
 � Use os 21 bits seguintes para determinar o deslocamento dentro da 
página.
Paginação em memória virtual 11
 � Use o número da tabela de páginas e a entrada correspondente na 
tabela para obter o número do quadro de página físico correspondente.
 � Calcule o endereço físico adicionando o deslocamento dentro da página 
ao endereço-base do quadro de página físico.
Esses cálculos podem ser automatizados pelo hardware do sistema, mas 
é importante entender como eles funcionam para perceber como a memória 
virtual e a paginação funcionam em um nível mais baixo.
Mais especificadamente, podemos ver alguns exemplos dos algoritmos 
de substituição de páginas. Para ilustrar o funcionamento do algoritmo MFU, 
considere o seguinte conjunto de referências a página:
1, 2, 3, 1, 4, 2, 5, 1, 2, 3, 5, 2
Nesse exemplo, cada número representa uma referência a uma página — a 
primeira referência é para a página 1, a segunda para a página 2 e assim por 
diante. A tabela a seguir mostra como o algoritmo MFU contaria as referências 
a cada página:
Página Contagem
1 3
2 4
3 2
4 1
5 2
No início, todas as páginas estão ausentes na memória principal, então o 
sistema operacional deve trazer a primeira página (página 1) para a memória. 
Na segunda referência, o sistema operacional deve trazer a segunda página 
(página 2) para a memória, uma vez que essa página ainda não está presente. 
Na terceira referência, o sistema operacional deve trazer a terceira página 
(página 3) para a memória.
Paginação em memória virtual12
Na quarta referência, o sistema operacional deve substituir uma página 
na memória, uma vez que a página 1 está presente na memória e a quarta 
referência é para essa página. Como a página 1 tem a menor contagem (3), 
ela é substituída pela quarta página (página 4).
O processo continua assim, com o sistema operacional trazendo novas 
páginas para a memória conforme necessário e substituindo as páginas 
menos usadas quando a memória principal está cheia.
Para exemplificar o algoritmo de substituição FIFO, suponha que temos 
um sistema com quatro quadros de página físicos e uma lista de referência 
à memória virtual dada por:
1. 0
2. 1
3. 2
4. 3
5. 0
6. 1
7. 2
8. 3
9. 0
10. 1
Nesse exemplo, as primeiras quatro páginas (0, 1, 2 e 3) são carregadas na 
memória principal e cada uma delas ocupa um quadro de página físico. Quando 
a quinta página (0) é referenciada, a substituição de página é necessária, 
porque não há mais quadros de página disponíveis. O algoritmo FIFO seleciona 
a página que foi carregada na memória há mais tempo para ser substituída. 
No nosso exemplo, isso significa que a primeira página a ser substitu-
ída é a página 0, que foi carregada na memória no início da execução do 
programa. Portanto, a página 0 é removida do quadro de página físico 0 e a 
nova página (também 0) é carregada nesse quadro. Quando a sexta página 
(1) é referenciada, a substituição de página é necessária novamente. Como 
o quadro de página físico 1 está livre, a página 1 é carregada nesse quadro. 
O mesmo processo se repete quando as páginas 2, 3 e 0 são referenciadas 
novamente nas posições 7, 8 e 9 da lista, respectivamente. Quando a décima 
página (1) é referenciada, todas as páginas do programa já foram carregadas 
na memória e não há necessidade de substituição de página.
Paginação em memória virtual 13
Portanto, a ordem de substituição de página de acordo com o algoritmo 
FIFO nesse exemplo seria:
1. 0
2. 1
3. 2
4. 3
5. 0
Vale ressaltar que o algoritmo FIFO não leva em consideração o número de 
vezes que uma página é referenciada, apenas a ordem em que foi carregada 
na memória. Por isso, ele pode não ser o algoritmo mais eficiente em termos 
de desempenho, já que uma página importante pode ser substituída mesmo 
que seja frequentemente referenciada.
Problemas de desempenho
Cada algoritmo de substituição de páginas apresentado anteriormente tem 
suas vantagens e desvantagens em termos de desempenho. Vamos apresentar 
a seguir uma análise de cada um desses algoritmos e seus problemas de 
desempenho, bem como possíveis maneiras de contorná-los.
O problema do algoritmo FIFO é que ele não leva em consideração o número 
de vezes que uma página é referenciada, o que pode levar à substituição de 
uma página frequentemente usada. Uma maneira de contornar esse problema 
é utilizar um algoritmo que leve em conta a frequência de referência de cada 
página, como o algoritmo NFU (SILBERSCHATZ; GALVIN; GAGNE, 2015).
Por sua vez, o algoritmo LRU pode ser bastante eficiente em sistemas 
nos quais a memória é suficiente para manter as páginas frequentemente 
usadas. No entanto, em sistemas com pouca memória, pode ser necessário 
substituir uma página frequentemente usada. Nesse caso, o algoritmo LRU 
pode se tornar lento, pois requer o rastreamento do tempo de referência 
para todas as páginas. Uma maneira de contornar esse problema é usar uma 
variação do algoritmo LRU quemantém uma lista de páginas frequentemente 
referenciadas, em vez de manter um registro de tempo para todas as páginas.
Já o algoritmo MRU pode ser eficiente em sistemas que usam páginas de 
grande tamanho ou quando as páginas frequentemente usadas são mantidas 
na memória. No entanto, pode ser menos eficiente que o LRU em sistemas nos 
quais as páginas são frequentemente acessadas em ordem não decrescente. 
Uma maneira de contornar esse problema é usar uma variação do algoritmo 
Paginação em memória virtual14
MRU que utiliza um temporizador para evitar a retenção de páginas antigas 
na memória (SILBERSCHATZ; GALVIN; GAGNE, 2015).
O algoritmo NFU pode ser eficiente em sistemas cujas páginas frequente-
mente usadas devem ser mantidas na memória, mas pode ser menos eficiente 
em sistemas cujas páginas são frequentemente referenciadas em curtos 
intervalos de tempo. Uma maneira de contornar esse problema é usar uma 
variação do algoritmo NFU que limita o número de vezes que uma página 
pode ser referenciada antes de ser substituída, como o algoritmo Aging 
(MACHADO; MAIA, 2007).
Por fim, o principal problema do algoritmo MFU é que ele pode sofrer de 
um efeito de “envelhecimento”: as páginas que foram referenciadas várias 
vezes em curto período de tempo podem ser consideradas “frias” pelo al-
goritmo, uma vez que a frequência de referência diminui ao longo do tempo. 
Isso pode levar a uma alta taxa de substituição de páginas para as páginas 
mais frequentemente utilizadas. Uma solução para esse problema é o uso 
de um algoritmo MFU adaptativo, que ajusta dinamicamente a frequência 
de referência das páginas com base em sua idade. Isso pode ser feito, por 
exemplo, atribuindo um peso maior às referências recentes do que às refe-
rências antigas (BARRETO, 2017).
Outra abordagem é o uso de um algoritmo híbrido, como o MFU-LRU, 
que combina as características do algoritmo MFU com as do algoritmo LRU. 
Nesse caso, o algoritmo MFU é usado para classificar as páginas com base na 
frequência de referência, enquanto o algoritmo LRU é usado para considerar 
a idade da página.
É importante destacar que, assim como nos outros algoritmos de substi-
tuição de páginas, o tamanho da memória física disponível e o tamanho das 
páginas também pode afetar o desempenho do algoritmo MFU. Em sistemas 
com pouca memória física disponível, por exemplo, pode ser necessário 
reduzir o tamanho das páginas para melhorar o desempenho do algoritmo 
(MACHADO; MAIA, 2007).
Em sistemas de computador modernos, o gerenciamento de memória 
é uma tarefa crucial que permite que os programas possam acessar 
dados na memória de forma eficiente e segura. Uma das técnicas de geren-
ciamento de memória mais utilizadas é a memória virtual, que permite que o 
sistema operacional simule uma quantidade de memória maior que a disponível 
fisicamente no sistema. Neste contexto, uma das questões mais importantes a 
serem consideradas é o tamanho das páginas usadas pelo sistema e quantas 
molduras de páginas podem ser indexadas (TANENBAUM; BOS, 2016).
Paginação em memória virtual 15
Suponha que temos um sistema de computador com 16 GB de RAM e que 
usa páginas de 8 KB. O número máximo de molduras de página que podem ser 
indexadas por esse sistema depende do tamanho total da memória física e do 
tamanho das páginas.
Primeiramente, precisamos converter o tamanho da memória de GB para 
bytes, já que a contagem de memória é realizada em bytes:
16 GB = 16 × 230 bytes
Em seguida, precisamos converter o tamanho das páginas de KB para bytes:
8 KB = 8 × 210 bytes
Agora podemos calcular o número máximo de molduras de página que podem 
ser indexadas pelo sistema:
Portanto, o número máximo de molduras de página que podem ser indexadas 
por este sistema é de 221, ou seja, 2.097.152 molduras de página.
Esse cálculo é importante para determinar quantos blocos de memória o 
sistema pode indexar e como o sistema operacional pode gerenciar a memória 
virtual. Quando a quantidade de molduras de página que pode ser indexada é 
pequena, pode haver problemas de fragmentação da memória, o que pode levar 
a um desempenho pior do sistema. Por outro lado, se a quantidade de molduras 
de página for grande demais, pode haver um alto consumo de recursos do 
sistema, o que pode levar a problemas de desempenho. Portanto, é importante 
encontrar um equilíbrio entre a quantidade de memória física disponível e o 
tamanho das páginas para obter o melhor desempenho do sistema.
A memória virtual é uma técnica de gerenciamento de memória importante 
utilizada pelos sistemas operacionais modernos. Ela permite que programas 
acessem mais memória do que realmente está disponível na memória física, 
além de permitir o gerenciamento eficiente da memória. Especificamente, 
a paginação é uma técnica fundamental da memória virtual que permite o 
Paginação em memória virtual16
mapeamento entre o espaço de endereço virtual e a memória física. Embora 
a memória virtual tenha algumas desvantagens, suas vantagens as supe-
ram, tornando-a uma técnica indispensável para os sistemas operacionais 
modernos.
Referências 
ARAÚJO, R. M.; FERNANDES, F. M. R. Um estudo comparativo de algoritmos de substi-
tuição de página para sistemas de memória virtual. In: CONGRESSO BRASILEIRO DE 
INFORMÁTICA NA EDUCAÇÃO, 7., 2018. Anais [...]. Fortaleza, 2018.
BARRETO, R. G. Sistemas operacionais: uma abordagem prática. São Paulo: Érica, 2017.
MACHADO, F. B.; MAIA, L. P. Arquiteturas de sistemas operacionais. 4. ed. Rio de Janeiro: 
LTC, 2007.
SILBERSCHATZ, A.; GALVIN, P. B.; GAGNE, G. Fundamentos de sistemas operacionais. 9. 
ed. Rio de Janeiro: LTC, 2015.
TANENBAUM, A. S.; BOS, H. Sistemas operacionais modernos. 4. ed. São Paulo: Pearson 
Prentice Hall, 2016.
Leituras recomendadas
DEITEL, H. M. et al. Sistemas operacionais. 3. ed. São Paulo: Prentice-Hall, 2005.
TANENBAUM, A. S.; WOODHULL, A. S. Sistemas operacionais: projeto e implementação. 
3. ed. Porto Alegre: Bookman, 2008.
Os links para sites da web fornecidos neste capítulo foram todos 
testados, e seu funcionamento foi comprovado no momento da 
publicação do material. No entanto, a rede é extremamente dinâmica; suas 
páginas estão constantemente mudando de local e conteúdo. Assim, os editores 
declaram não ter qualquer responsabilidade sobre qualidade, precisão ou 
integralidade das informações referidas em tais links.
Paginação em memória virtual 17
Dica do professor
A utilização de memória virtual e paginação permite a divisão de programas em páginas, 
possibilitando que processos maiores (ou quando executados junto com outros) que a memória 
principal possam ser executados mantendo as páginas necessárias na memória principal e 
efetuando trocas conforme a execução. Esse mecanismo trouxe grandes benefícios, principalmente 
por ser independente quanto à programação, estando sob responsabilidade total do sistema 
operacional.
Contudo, não existem somente benefícios, mas sim problemas e questões que precisam ser 
decididos e resolvidos. Situações relacionadas ao tamanho do espaço de endereçamento, 
diferentes arquiteturas e velocidade de mapeamento de endereço são questões relevantes.
Nesta Dica do Professor, conheça um dos principais problemas da paginação, o tamanho do espaço 
de endereçamento, juntamente com algumas estratégias para solucioná-lo.
Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.
https://fast.player.liquidplatform.com/pApiv2/embed/cee29914fad5b594d8f5918df1e801fd/d4ae0cb39b98b4f949d73fc8d30c8ffb
Exercícios
1) Um sistema operacional utiliza a técnica de paginação para o uso de memória virtual. Sabe-
se que cada endereço virtual tem 14 bits e os quatro bits mais significativos são responsáveis 
por identificar a página na memória virtual. Qual o tamanho da página utilizada?
A) 256 bytes.
B) 512 bytes.
C) 1 KB.
D) 2 KB.
E) 4 KB.
2) A paginação em memória virtual utiliza páginas e molduras de páginas para a divisão do 
processo tanto na memória físicaquanto virtual. A respeito do funcionamento e do 
propósito desses dois elementos, pode-se afirmar que:
A) as páginas ficam presentes na memória principal, cujas correspondentes molduras estão em 
disco para serem requisitadas.
B) as molduras de página ficam presentes na memória principal, as quais podem alocar uma ou 
mais páginas, de modo que não exceda o espaço da moldura e a quantidade seja potência de 
2.
C) as molduras de página ficam presentes na memória principal e só podem alocar uma página 
por vez, a qual tem o mesmo tamanho da moldura.
D) as páginas e molduras podem ter tamanhos diferentes conforme a necessidade, mas a 
alocação de página na memória deve obedecer à capacidade de espaço.
E) as páginas ficam presentes na memória principal e a divisão é feita pelo programador.
Um processo de 24 KB foi dividido em partições de 4 KB, numeradas de 1 a 6 em ordem. 
Quando uma posição de memória é acessada, a página precisa estar alocada em uma 
moldura na memória principal. Em um dado momento da execução, o endereço 8296 foi 
3) 
acessado. Desse modo, para executar a instrução nesse endereço sem causar uma chamada 
de sistema de page fault, qual página precisa estar carregada na memória?
A) Página 1.
B) Página 2.
C) Página 3.
D) Página 4.
E) Página 5.
4) O uso de memória virtual requer um mapeamento entre o endereço físico e virtual em 
tempo adequado para não prejudicar o desempenho do processo. Sobre o processo de 
mapeamento, pode-se dizer que:
A) uma solução para agilizar a conversão entre endereços é utilizar uma tabela associativa, 
também conhecida como TBL, em nível de hardware.
B) o acesso à memória para conversão do endereço virtual ao endereço físico não prejudica o 
desempenho do processo.
C) as diferenças entre arquiteturas de 32 bits e 64 bits não tem qualquer influência quanto ao 
endereçamento dos processos.
D) na implementação de tabelas de páginas multinível, as páginas são organizadas em listas 
encadeadas em pares de página e moldura.
E) na implementação de tabelas de páginas invertidas, as páginas são organizadas de modo 
hierárquico em blocos, sendo que os níveis superiores apontam para o início dos níveis 
inferiores, na tentativa de somente alocar as páginas necessárias de cada bloco, e não o bloco 
de páginas inteiro.
5) Um computador de arquitetura de 32 bits trabalha com páginas de 4 KB e tem 1 GB de RAM. 
Qual é o total de molduras de páginas que podem ser indexadas nessa arquitetura?
A) 65.536.
B) 1.048.576.
C) 16.384 .
D) 1.024.
E) 268.435.456.
Na prática
O processo de paginação tem diversos fatores que podem influenciar no desempenho. Em uma 
determinada arquitetura de computador, se for estabelecido que o tamanho da página será 
pequeno, haverá um grande número de entradas na tabela de página que precisa ser gerenciado. 
Isso também pode acontecer se a arquitetura puder mapear um grande número de endereços, 
como em arquiteturas 64 bits. Além disso, também é necessário garantir que o mapeamento de 
endereços virtuais em físicos seja rápido.
Conheça uma solução em nível de hardware que tem sido utilizada no aprimoramento do processo 
de paginação.
Conteúdo interativo disponível na plataforma de ensino!
Saiba +
Para ampliar o seu conhecimento a respeito desse assunto, veja abaixo as sugestões do professor:
O que é a memória virtual?
Neste artigo, você entenderá melhor o que é memória virtual e como gerenciá-la por meio de 
programas no Windows.
Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.
Sistemas operacionais - paginação
Nesta videoaula da Univesp TV, você conhecerá a fundo o processo de paginação implementado 
em sistemas operacionais.
Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.
Como configurar swap no Ubuntu/Debian
Neste artigo, você aprenderá como configurar o swap, também conhecido como memória virtual, 
em sistemas baseados no Ubuntu/Debian.
Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.
Técnicas de memória virtual
https://www.infonova.com.br/artigo/o-que-e-a-memoria-virtual/
https://www.youtube.com/embed/4EaBN98dk40
https://www.kelvinsantiago.com.br/como-adicionar-swap-no-ubuntudebian/
Nesta videoaula da Univesp TV, você poderá conhecer algumas técnicas de implementação de 
memória virtual.
Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.
https://www.youtube.com/embed/QjieJPckuDI

Continue navegando