Você está na página 1de 22

Gerência da memória: partição, paginação e segmentação

Contextualização
Gerenciamento da memória (principal)
Relembrando alguns conceitos:

Processos: é um programa em execução, atividades/instruções sequenciadas, que


possui um Contexto de Hardware, Contexto de Software e um Estado
O Gerenciamento de memória é como a memória principal gerencia esses processos
de forma otimizada entre os vários processos em execução.
Existem formas de monoprogramaticas, quando há apenas um programa em
execução, e formas mais complexas quando há mais de processo de forma concorrente
(ambientes de multiprogramação).

Idealmente a memória ideal devia ser:


 Grande;
 Rápida;
 Não volátil; e
 De baixo custo.
Idealmente, mas na pratica não ocorre, por isso é necessário que processor
compartilhem memoria de forma concorrente e paralela.

Memória:

A memória é uma forma de armazenamento de dados e instruções em um sistema


de computação. É uma área de armazenamento temporário onde os processos podem
armazenar e recuperar rapidamente seus dados e instruções enquanto são executados.
Existem vários tipos de memória, incluindo a memória cache, a memória RAM
(Random Access Memory) e o armazenamento secundário, como discos rígidos e unidades
flash. Cada tipo de memória tem suas próprias características, como velocidade, capacidade
e preço, e é usado para diferentes propósitos dentro de um sistema de computação.
A memória é crucial para o desempenho de um sistema de computação, pois quanto
mais memória um sistema tem, mais rápido ele pode executar processos e acessar dados.
Além disso, a memória também é importante para a estabilidade do sistema, pois permite
que os processos armazenem temporariamente seus dados enquanto são executados,
evitando o risco de perda de dados em caso de falhas de hardware ou software.
A hierarquia de memória geralmente inclui os seguintes níveis:
1. Cache L1: É a memória mais rápida e mais cara. É usada para armazenar
temporariamente os dados e instruções que são mais frequentemente usados pelo
processador. O Cache L1 é geralmente incorporado diretamente no processador e é
acessado com alta velocidade.
2. Cache L2: É uma memória intermediária entre o Cache L1 e a memória principal. É
menos rápida e menos cara que o Cache L1, mas ainda mais rápida e mais cara que
a memória principal.
3. Memória RAM (Random Access Memory): É a memória principal de um sistema. É
mais lenta e menos cara que o Cache L1 e o Cache L2, mas é ainda mais rápida e
mais acessível do que o armazenamento secundário, como o disco rígido.
4. Armazenamento Secundário: É usado para armazenar dados e programas
permanentemente, mesmo quando o computador está desligado. Isso inclui discos
rígidos, unidades flash e outros dispositivos de armazenamento. É mais lento e
menos caro que a RAM, mas é capaz de armazenar muito mais dados.
A hierarquia de memória é projetada para acelerar o acesso à memória e melhorar a
eficiência do sistema. Quando um processador precisa de dados, ele procura primeiro no
Cache L1. Se os dados não estiverem lá, ele procura no Cache L2 e, finalmente, na
memória RAM. Se os dados ainda não estiverem disponíveis, eles são recuperados do
armazenamento secundário.

Figura 1 Hierarquia da Memoria


Tarefa do Gerenciador de memória

O gerenciador de memória tem várias tarefas, incluindo:


 Gerenciar a hierarquia da memória;
 Controlar as partes que estão em uso, e as que não, para:
o Alocar
o Liberar (Deslocar)
o Tratar problemas do swapping
 Ou seja, chaveamento entre a memória principal e o disco e a
memória principal e memória cache

Para utiliza isso as seguintes técnicas: (serão retomas ao final do trabalho)

 Partição de memória: A tarefa do gerenciador de memória é dividir a memória física


em partições lógicas, que são atribuídas a processos ou sistemas operacionais. A
partição é feita para garantir que os processos tenham o espaço de memória
necessário para sua execução e que o sistema operacional tenha espaço suficiente
para armazenar seus dados e instruções.
 Alocação de memória: O gerenciador de memória é responsável por alocar
partições de memória para processos ou sistemas operacionais conforme
necessário. Ele também é responsável por garantir que nenhum processo tenha
acesso não autorizado a outros processos ou áreas de memória.
 Paginação: O gerenciador de memória é responsável por dividir a memória virtual de
um processo em páginas e alocar essas páginas na memória física. Ele também é
responsável por gerenciar a substituição de páginas na memória física quando a
memória fica cheia.
 Segmentação: O gerenciador de memória é responsável por dividir a memória
virtual de um processo em segmentos lógicos, como por exemplo, código, dados,
pilha, etc. Esses segmentos são então alocados na memória física de acordo com as
necessidades do processo.
Em resumo, o gerenciador de memória é responsável por garantir que a memória
física seja usada de maneira eficiente e equilibrada, para que processos e sistemas
operacionais possam executar de maneira estável e rápida.
Como o ocorre o Gerenciamento da memória em cada tipo de
sistema:

Sistemas monoprogramaticos:

O que são:

De acordo com Andrew S. Tanenbaum em "Sistemas Operacionais Modernos",


sistemas de monoprogramação são aqueles que permitem a execução de apenas um
programa por vez. Em outras palavras, enquanto um programa está sendo executado, todos
os outros programas ficam em espera, aguardando a sua vez de serem executados.
Estes sistemas foram os primeiros a surgir e eram comuns em computadores
mainframe e minicomputadores da década de 1960 e 1970. Eles eram projetados para ser
usados em ambientes em que apenas uma pessoa ou um pequeno grupo de pessoas
usavam o computador ao mesmo tempo, com o objetivo de realizar tarefas específicas.
Nos sistemas de monoprogramação, o sistema operacional tem total controle sobre o
hardware e gerencia todos os recursos, incluindo CPU, memória, dispositivos de
entrada/saída, etc. O sistema operacional também é responsável por escalonar os
processos, atribuindo a CPU a cada um deles na ordem correta, para garantir uma utilização
equilibrada dos recursos.
Em comparação com sistemas operacionais modernos, que permitem a execução
simultânea de vários programas, os sistemas de monoprogramação são considerados
limitados e menos flexíveis. No entanto, eles ainda são utilizados em algumas aplicações
específicas, como sistemas embarcados ou em dispositivos com recursos limitados.
Como se dá o gerenciamento de memória em sistemas de monoprogramação:

O gerenciamento de memória em sistemas de monoprogramação é feito


basicamente através de duas técnicas: alocação estática e alocação dinâmica.
Na alocação estática, o tamanho da memória para cada processo é determinado no
momento da compilação e, uma vez alocado, esse espaço de memória é reservado para o
processo durante toda a sua execução. Isso significa que mesmo que o processo não esteja
usando toda a sua memória alocada, ela não estará disponível para outros processos.
Já na alocação dinâmica, o tamanho da memória para cada processo é determinado
dinamicamente durante a execução do processo, de acordo com as suas necessidades.
Quando um processo precisa de mais memória, ele pode requisitá-la ao sistema
operacional, que, se houver espaço disponível, atribuirá mais memória ao processo. Da
mesma forma, se um processo liberar parte da sua memória, essa área poderá ser
reutilizada por outros processos.
Em ambos os casos, o gerenciamento de memória é responsável por garantir que
cada processo tenha acesso apenas às áreas de memória que lhe são destinadas e que as
informações confidenciais de um processo não sejam acessadas por outro. Além disso, o
gerenciamento de memória também é responsável por garantir que nenhum processo possa
causar danos a outros processos ou ao próprio sistema operacional, através de operações
maliciosas ou erros de programação.
Sistemas multiprogramação:

O que é:

O sistema de multiprogramação é um tipo de sistema operacional que permite a


execução de múltiplos programas ao mesmo tempo. Em outras palavras, é uma forma de
compartilhar recursos, como a CPU, a memória e os dispositivos de entrada/saída, entre
vários programas.
Em um sistema de multiprogramação, o sistema operacional mantém vários
programas em memória ao mesmo tempo e alterna a execução entre eles, a fim de simular
a execução simultânea de vários programas. Isso permite que mais de um programa possa
ser executado ao mesmo tempo, tornando o uso do computador mais eficiente.
O sistema de multiprogramação é um componente crítico de muitos sistemas
operacionais modernos e é amplamente utilizado em vários tipos de sistemas, incluindo
computadores pessoais, servidores, supercomputadores e sistemas embarcados.
Em resumo, o sistema de multiprogramação é uma forma de compartilhar recursos
do sistema entre vários programas, permitindo que mais de um programa possa ser
executado ao mesmo tempo e tornando o uso do computador mais eficiente.

Como se dá o gerenciamento de memória em sistemas de multiprogramação:

De acordo com o livro "Sistemas Operacionais Modernos" de Andrew S. Tanenbaum,


o gerenciamento de memória em sistemas de multiprogramação é realizado por meio da
utilização de um gerenciador de memória que monitora e controla o uso da memória física.
O gerenciador de memória é responsável por garantir que a memória física seja usada de
maneira eficiente e equilibrada para que vários processos possam ser executados ao
mesmo tempo.
No sistema de multiprogramação, a memória física é dividida em partições lógicas,
cada uma das quais é atribuída a um processo ou ao sistema operacional. O gerenciador de
memória é responsável por alocar essas partições de memória conforme necessário e por
garantir que nenhum processo tenha acesso não autorizado a outros processos ou áreas de
memória.
O gerenciador de memória também é responsável por gerenciar a memória virtual
dos processos, o que envolve a divisão da memória virtual em páginas ou segmentos
lógicos e a alocação dessas páginas ou segmentos na memória física. Além disso, o
gerenciador de memória também gerencia a substituição de páginas ou segmentos na
memória física quando a memória fica cheia.
Em suma, o gerenciamento de memória em sistemas de multiprogramação é
realizado por meio do uso de um gerenciador de memória que monitora e controla o uso da
memória física, garantindo que a memória seja usada de maneira eficiente e equilibrada
para que vários processos possam ser executados ao mesmo tempo.

Endereçamento:
No contexto de sistemas operacionais de multiprogramação, o endereçamento é o
processo pelo qual o sistema operacional atribui endereços de memória a cada processo, de
forma a garantir que cada processo tenha acesso apenas às áreas de memória que lhe são
destinadas. Isso é importante para garantir a integridade dos dados e para prevenir danos a
outros processos ou ao sistema operacional.

Os componentes envolvidos no endereçamento:

1. Gerência de memória: responsável por alocar e liberar áreas de memória para os


processos, de acordo com suas necessidades.
2. Tabela de paginação: uma estrutura de dados usada pelo sistema operacional para
mapear endereços lógicos de memória para endereços físicos de memória.
3. Registradores de endereço: componentes do processador que armazenam os
endereços de memória a serem acessados.
4. Despachador de processos: componente responsável por escalonar os processos e
atribuir a CPU a cada um deles, de acordo com a ordem correta.
O processo de endereçamento funciona da seguinte forma: o sistema operacional
atribui endereços de memória a cada processo, de acordo com suas necessidades. Quando
um processo precisa acessar a memória, o despachador de processos atribui a CPU a ele.
O processo, então, usa os endereços de memória armazenados em seus registradores de
endereço para acessar as áreas de memória que lhe são destinadas. A tabela de paginação
é usada para mapear os endereços lógicos de memória para os endereços físicos de
memória, de forma a garantir que o processo acesse apenas as áreas de memória que lhe
são destinadas.

MMU - Memory Management Unit


O que é:

MMU (Unidade de Gerenciamento de Memória) é um componente hardware de um


sistema operacional de multiprogramação que é responsável por gerenciar o acesso a
memória. É um componente importante para garantir a segurança dos dados e a integridade
dos processos em execução.
Os componentes envolvidos no MMU incluem:
1. Tabela de paginação: uma estrutura de dados usada para mapear endereços lógicos
de memória para endereços físicos de memória.
2. Registradores de endereço: componentes do processador que armazenam os
endereços de memória a serem acessados.
3. Despachador de processos: componente responsável por escalonar os processos e
atribuir a CPU a cada um deles, de acordo com a ordem correta.

Como funciona o MMU:

1. O sistema operacional aloca e libera áreas de memória para cada processo, de


acordo com suas necessidades.
2. Quando um processo precisa acessar a memória, o despachador de processos
atribui a CPU a ele.
3. O processo usa os endereços de memória armazenados em seus registradores de
endereço para acessar as áreas de memória que lhe são destinadas.
4. O MMU usa a tabela de paginação para mapear os endereços lógicos de memória
para os endereços físicos de memória, de forma a garantir que o processo acesse
apenas as áreas de memória que lhe são destinadas.
5. O MMU também pode ser configurado para controlar as permissões de acesso de
cada processo, de forma a impedir que um processo acesse áreas de memória que
lhe são proibidas.

Marcadores sugeridos (UNIVESP):

 Dispositivo de hardware que transforma endereços virtuais em endereços físicos


 Valor no registrador de realocação é adicionado a todo o endereço logico
 O programa manipula endereços lógicos; ele nunca vê endereços físicos reais
Sistemas de memória particionada:
O que é:

De acordo com Andrew S. Tanenbaum em "Sistemas Operacionais Modernos", o


sistema de memória particionada é uma técnica de gerenciamento de memória que divide a
memória física do computador em partições separadas, cada uma com um tamanho fixo.
Cada partição é então alocada para um programa diferente, permitindo que múltiplos
programas possam ser executados ao mesmo tempo.

Existem dois tipos principais de sistemas de memória particionada:

 Partição estática: neste tipo de sistema, as partições de memória são estabelecidas


no momento da inicialização do sistema operacional e não mudam durante a
execução. Isto significa que o tamanho de cada partição é definido previamente e
não pode ser alterado durante a execução.
 Partição dinâmica: neste tipo de sistema, as partições de memória são estabelecidas
dinamicamente durante a execução, permitindo a alocação e desalocação dinâmica
de recursos de memória para diferentes programas. Isto significa que o tamanho das
partições pode ser alterado durante a execução para acomodar as necessidades dos
programas.

Em ambos os tipos de sistemas de memória particionada, o objetivo é maximizar o


uso da memória e minimizar o desperdício. No entanto, o sistema de memória particionada
dinâmica é geralmente considerado mais flexível e eficiente, já que permite a alocação
dinâmica de recursos de memória para os programas.
Em resumo, o sistema de memória particionada é uma técnica de gerenciamento de
memória que divide a memória física do computador em partições separadas, permitindo
que múltiplos programas possam ser executados ao mesmo tempo. Existem dois tipos
principais de sistemas de memória particionada: partição estática e partição dinâmica.

Swapping
 Chaveamento de processos entre a memória e o disco
 Swap-out
o Da memoria para o disco para uma área de “swap”
 Swap-in
o Do disco para a memória.
 Fragmentação interna e externa
O que é:

Swapping é uma técnica de gerenciamento de memória utilizada em sistemas


operacionais de multiprogramação para permitir que mais processos sejam
executados simultaneamente do que a quantidade de memória RAM disponível. O
objetivo do swapping é permitir que o sistema operacional execute processos
maiores do que a memória RAM disponível, transferindo partes do processo para o
disco rígido quando a memória RAM fica cheia.

Os componentes envolvidos no swapping incluem:

1. Sistema de arquivos: responsável por gerenciar o armazenamento e a


recuperação de arquivos no disco rígido.

2. Memória virtual: uma técnica que permite que o sistema operacional aparente
ter mais memória disponível do que realmente existe, permitindo que os
processos acessem grandes quantidades de memória sem restrições.

Como funciona o swapping:


1. O sistema operacional monitora a quantidade de memória RAM disponível e
quando esta fica insuficiente, ele seleciona parte de um processo para ser
transferida para o disco rígido.
2. O sistema de arquivos é usado para escrever a parte do processo transferida
para o disco rígido.
3. Quando a CPU precisa acessar a parte do processo transferida, ela é
carregada da memória virtual para a memória RAM.
4. O sistema operacional usa a memória virtual para aparentar que todos os
processos estão sendo executados ao mesmo tempo, mesmo que alguns
deles estejam parcialmente armazenados no disco rígido.

Estruturas para Gerenciar a Memória


As estruturas para gerenciar a memória são mecanismos utilizados pelos sistemas
operacionais para controlar a alocação e liberação de blocos de memória para os
processos. Existem duas estruturas principais utilizadas para esse fim: mapa de bits e lista
encadeada.
Mapa de bits: nesta estrutura, cada bit representa um bloco de memória. Se o bit é
0, o bloco está livre e pode ser alocado a um processo. Se o bit é 1, o bloco está ocupado e
não pode ser alocado. O mapa de bits é rápido e eficiente, mas requer muito espaço para
representar a memória inteira.
 Memória é divindade em unidades de alocação
 Unidade pode conter vários KB
 Cada unidade corresponde a um bit no bitmap
o 0 → Livre
o 1 → Ocupado

Lista encadeada: nesta estrutura, a memória é dividida em blocos de tamanhos


fixos e a lista mantém informações sobre os blocos livres. Quando um processo precisa de
memória, o sistema operacional procura na lista por um bloco livre de tamanho suficiente e
aloca esse bloco ao processo. Quando um processo libera memória, o sistema operacional
adiciona o bloco liberado de volta à lista. A lista encadeada é menos eficiente do que o
mapa de bits, mas é mais flexível e requer menos espaço.
 Manter uma lista ligada de segmentos de memoras livres e alocadas.

Os componentes envolvidos nas estruturas para gerenciar a memória incluem:


1. Sistema operacional: responsável por alocar e liberar blocos de memória para os
processos e manter atualizadas as informações sobre a memória livre.
2.Processos: os processos solicitam memória ao sistema operacional e liberam
memória quando não precisam mais dela.

Técnicas de Memória Virtual


O que é Memoria Virtual (MV)?

De acordo com Andrew S. Tanenbaum em "Sistemas Operacionais Modernos", a


memória virtual (MV) é uma técnica de gerenciamento de memória que permite ao sistema
operacional simular a existência de mais memória do que na verdade está disponível
fisicamente.

A MV funciona criando uma camada de abstração entre o programa e a memória


física. Cada programa é alocado uma quantidade de memória virtual, que é uma
representação lógica da memória disponível para o programa. Quando o programa acessa a
memória virtual, o sistema operacional traduz as referências da memória virtual para
referências da memória física.
Isso permite que o sistema operacional controle o acesso da memória e aloque a
memória de forma mais eficiente. Por exemplo, o sistema operacional pode mover partes da
memória virtual para o disco rígido quando a memória física se torna escassa, ou pode
alocar a memória virtual em fragmentos menores do que a memória física, tornando possível
alocar mais programas em memória.
Em resumo, a memória virtual é uma técnica de gerenciamento de memória que
permite ao sistema operacional simular a existência de mais memória do que na verdade
está disponível fisicamente, permitindo uma alocação mais eficiente da memória e controle
mais flexível do acesso à memória.
 É uma técnica de gerenciamento de memória secundaria como uma “cache” para
partes do espaço dos processos, assim o sistema operacional simular a existência
de mais memória do que na verdade está disponível fisicamente.
 Por que usa memória virtual?
o O tamanho do software cada vez maior
o Maior grau de multiprogramação
o Excetuar programas maiores que a RAM
 Um processo usa endereços virtuais e não físicos
o Utiliza o MMU para conversão
(Aprofundamento) Técnicas de Memória: partição, paginação e
segmentação

Partição: É uma técnica de gerência de memória em que a memória principal é


dividida em partições fixas (entorno de 4KB), cada uma destinada a armazenar um
processo. O sistema operacional aloca uma partição completa para cada processo,
independentemente do tamanho da memória que o processo precisa, o sistema operacional
gerencia as referências à memória virtual dos processos, traduzindo-as para referências à
memória física, com a ajuda de uma tabela de páginas e hardware de gerenciamento de
memória.
Paginação: É uma técnica de gerência de memória em que a memória principal é
dividida em pequenas páginas de tamanho fixo. O sistema operacional aloca somente a
quantidade de memória que um processo precisa, dividindo seu espaço de endereçamento
virtual em páginas e alocando-as na memória principal conforme necessário, o sistema
operacional gerencia as referências à memória virtual dos processos, traduzindo-as para
referências à memória física, com a ajuda de uma tabela de páginas, hardware de
gerenciamento de memória e um algoritmo de substituição de páginas.
Segmentação: É uma técnica de gerência de memória que combina características
da partição e da paginação. A memória principal é dividida em segmentos, cada um
destinado a armazenar uma parte específica de um processo. O tamanho dos segmentos é
variável, e o sistema operacional aloca somente a quantidade de memória que um processo
precisa para cada segmento, divide a memória virtual de cada processo em segmentos, que
são alocados na memória física, e o sistema operacional gerencia as referências à memória
virtual dos processos, traduzindo-as para referências à memória física, com a ajuda de uma
tabela de segmentos, hardware de gerenciamento de memória e um algoritmo de
substituição de segmentos.

Paginação:
Enquanto técnica de memória virtual
(Continuação da das técnicas de memória virtual)

Paginação “Divide a memória principal em pequenas seções chamadas páginas,


onde essas seções são divididas de forma física.”

De acordo com Andrew Stuart Tanenbaum em "Sistemas Operacionais Modernos", a


técnica de memória virtual por paginação é composta pelos seguintes elementos:

1. Páginas: As páginas são unidades de tamanho fixo de memória virtual que


representam um trecho do espaço de endereço de um processo no dispositivo
secundário;
2. Frames: Os frames são unidades correspondentes na memória física (RAM) que
armazenam as páginas;
3. Page Fault: É o evento que ocorre quando o sistema operacional tenta acessar uma
página que não está referenciada na memória física.
a. Usa um TRAP para carregar ou substituir um pagina.
o Evento em que a CPU interrompe o processamento de algum programa e
chamam de tratador de interrupção ou (TRAP), ocorre justamente quando
o programa não consegue dar continuidade na informação e assim a
execução desse mesmo programa é finalizada.
4. Tabela de páginas: A tabela de páginas é uma estrutura de dados que mapeia as
páginas da memória virtual ao frame correspondente. A tabela de páginas contém
informações como:
 Número do frame de página: Identifica (número) a página real
 Bit de residência (presente ou ausente): Se 1, então a página correspondente
é válida e está na RAM; caso contrário ocorre a Page Fault
 Bit de proteção: 0 (leitura/escrita) 1 (leitura) 2 (execução)
 Bit de modificação: 1 (pagina alterada) 0 (não alterada)
 Bit de referência 1 (foi referenciada “recentemente”)
 Bit de cache: Permite desativar o caching da página
5. Busca de endereço: A busca de endereço é o processo pelo qual o sistema
operacional traduz o endereço da memória virtual para o endereço da memória
física.
a. Sequencia ou binaria;
b. Qualquer que seja a alternativa é lento;
c. Ideal seria a página índice na tabela

“Recebe-se o número da página (P) e o seu deslocamento (D) como


entrada, onde o deslocamento é o offset. A página é então mapeada na
tabela de páginas, e o frame correspondente (F) é encontrado. Em seguida, o
frame e o deslocamento são combinados para realizar o acesso à memória
física.”

6. Componentes do endereço: O endereço da memória virtual é composto pelo número


da página (p) e pelo deslocamento da página (d). O número da página é usado para
selecionar a página desejada da tabela de páginas, enquanto o deslocamento da
página é usado para selecionar a posição dentro da página.

7. Onde se armazena as tabelas:

 Array de Registradores, se a memória for pequena;


o Mantida no hardware
 Na própria memória RAM
o A MMU gerencia utilizando um ou dois registradores
 Em uma memória cache da MMU chamada Memória Associativa.
o Usada para melhorar o desempenho da tabela na RAM
 Problema:
o Use dois registradores, ocasionando dois acessos para instruções/dados na
RAM levando a overhead
 Registrador de base da tabela de página (PTBR)
 Registrador de tamanho da tabela de página (PTLR)
 Solução: Cache chamado TLB (Translalation Lookaside Buffer)

Translalation Lookaside Buffer

“O TLB é um componente de hardware que acelera a tradução de endereços


virtuais para físicos na memória virtual usando a MMU para gerenciar o registrador,
aumentando a eficiência do sistema operacional. Ele funciona como uma cache para
mapeamentos recentes de endereços armazenado os dados em Arrays de
Registradores.”

Exemplo com 8 ocorrências:

Funcionamento da TLB:

“O TLB é um componente de hardware que acelera a tradução de endereços virtuais


para físicos na memória virtual usando a MMU para gerenciar o registrador, aumentando a
eficiência do sistema operacional. Ele funciona como uma cache para mapeamentos
recentes de endereços armazenado os dados em Arrays de Registradores.”
1. O que é TLB:

 A Translation Lookaside Buffer (TLB) é uma cache associativa de mapeamento


de endereços utilizada em sistemas de memória virtual.
 Pode ser implementada em hardware ou software.
2. Vantagens e desvantagens:
 Implementação em hardware é mais rápida, mas ocupa espaço que poderia ser
usado para outras funções.
 Implementação em software é menos eficiente, mas economiza espaço.
3. Funcionamento:
 Quando um processo acessa memória, o sistema operacional verifica se a
tradução de endereços está na TLB. Se estiver, usa a informação na TLB para
mapear endereço lógico para físico. Se não estiver, acessa tabela de páginas e
armazena a tradução na TLB para futuros acessos
4. Estrutura da TLB:
 A TLB é composta por entradas que contêm informações sobre endereços lógico-
endereço físico.
 Quando a TLB está cheia, o sistema operacional deve remover entradas para
liberar espaço para novas traduções.
5. Política de substituição de página:
 O processo utilizado para remover entradas é chamado de política de
substituição de página.
 Algumas das políticas comuns são FIFO, LRU e LFU.

Organização das tabelas de páginas:

 Problemas:
 Tabelas de Páginas grandes, resultado de RAM atuais que são de grande
capacidade.

De acordo com Tanenbaum na obra "Sistemas Operacionais Modernos", há três


maneiras de se organizar a tabela de páginas em um sistema de memória virtual:

Paginação Hierárquica (Multinível):

 Nesta abordagem, a tabela de páginas é dividida em múltiplos níveis, cada um


apontando para o próximo nível de tabelas de páginas.
 Uma técnica simples é uma tabela de páginas em dois níveis, onde a própria
tabela é pagina.
 Mantem apenas a parte da tabela necessária;
 Isso permite uma gestão eficiente de páginas em grandes sistemas de memória
virtual.

Tabelas de Páginas com Hash:

 Nesta abordagem, uma tabela hash é utilizada para armazenar entradas que
mapeiam endereços virtuais para endereços físicos.
 Cada entrada na tabela contem uma lsita ligada de elementos consistindo de:
o O # da página virtual
o O # da moldura (frame)
o Um ponteiro para o próximo
 Isso permite uma rápida localização de páginas e evita a necessidade de
percorrer uma tabela inteira, e tende a não causar conflitos.
 Funciona bem com 32 bits, mas não com 64bits.
 Tamanho da tabela torna-se grande
 Em torno de 30PB, ou seja, 30.000.000 GB
 Solução → Tabela de Páginas invertida

Tabelas de Páginas Invertidas:

Nesta abordagem, as entradas na tabela de páginas são organizadas de acordo com


os endereços físicos (frame, incluindo o processo (pid), e a página virtual (p) e o
deslocamento (d), ao invés dos endereços virtuais. Isso permite uma eficiente gestão de
páginas em sistemas com o espaço virtual maior que o físico.

Um problema com as tabelas de paginas invertidas é o tempo que leva para fazer a
leitura por toda tabela, por isso pode ser implementado a TLB para guardar os acessos com
maior frequência e aplicar políticas de substituição para retirar processos no momento em
que memória principal já tiver cheia, utilizando os Algoritmos de Substituição (NRU, FIFO,
LRU, etc.)

Você também pode gostar