You are on page 1of 23

MEMÓRIA VIRTUAL

PROF. RANIERE GUIMARÃES


OVERLAYING
• Desde o início da computação, o problema de falta de memória
em relação a demanda requisitada pelo software sempre
existiu. Inicialmente uma solução adotada, foi dividir os
programas em módulos pequenos, chamados de sobreposições
ou overlaying, que era implementado manualmente por
programadores. Neste caso, os programadores que decidiam
quais partes da aplicação precisavam estar residindo na
memória em uma determinada hora.
OVERLAYING
• Desta maneira, o código necessário para inicialização pôde ser sobreposto
(overlayed) com código que seria utilizado mais tarde. Apesar da
sobreposição ter facilitado a redução no uso de memória, era um processo
muito complexo e suscetível a erros. As sobreposições também falharam
em resolver a questão da redução de memória de todo o sistema, no
tempo de execução (runtime), ou seja, um programa sobreposto pode
precisar de menos memória para rodar se comparado a um programa não
sobreposto. Mas se o sistema ainda sim não tiver memória suficiente para
o programa sobreposto, o resultado final é um erro de falta de memória.
OVERLAYING
OVERLAYING
• O exemplo abaixo apresenta instruções de controle que instruem o OS/360 a
vincular um programa de sobreposição contendo uma única região.

INCLUDE SYSLIB (MOD1)


INCLUDE SYSLIB (MOD2)
OVERLAY A
INCLUDE SYSLIB(MOD3)
OVERLAY AA
INCLUDE SYSLIB (MOD4)
INCLUDE SYSLIB (MOD5)
OVERLAY AB
INCLUDE SYSLIB (MOD6)
OVERLAY B
INCLUDE SYSLIB (MOD7)
MEMÓRIA VIRTUAL

• A fim de repassar o trabalho para o computador, surgiu o


método que ficou conhecido como memória virtual, que é uma
técnica que usa a memória secundária como uma “cache” para
partes dos processos.

•A memória virtual funciona bem em sistemas de


multiprogramação, com pedaços e partes de muitos programas
na memória simultaneamente.
MEMÓRIA VIRTUAL
• O objetivo da memória virtual é que cada programa tenha seu próprio espaço
de endereçamento virtual, que é dividido em unidades de tamanho fixo
chamados de páginas.

• As unidades correspondentes na memória física (principal) são chamadas de


quadros de página. Tanto as páginas quanto os quadros das páginas são
geralmente do mesmo tamanho.

• Cada página constitui uma série de endereços, que são mapeadas na


memória física, mas nem todas precisam estar na memória física, um
hardware específico realiza o mapeamento necessário.
MEMÓRIA VIRTUAL
• Quando o programa referencia uma parte de seu espaço de endereçamento
que não está na memória física, o sistema operacional é alertado para ir
buscar a parte que falta e reexecuta a instrução que falhou.

• Quando a memória virtual é usada, os endereços virtuais não vão


diretamente para o barramento de memória, em vez disso, vão para uma
MMU (Memory Management Unit) que mapeia os endereços virtuais em
endereços da memória principal, ou seja, a MMU é o dispositivo que
transforma endereços virtuais em endereços físicos.
MEMÓRIA VIRTUAL
MEMÓRIA VIRTUAL
PAGINAÇÃO
• Em um computador, programas referenciam um conjunto de
endereços de memória que podem ser gerados usando
indexação, registradores base, registradores de segmento e
outras maneiras.

• Esses endereços gerados por computadores são chamados de


endereços virtuais e formam o espaço de endereçamento
virtual.
PAGINAÇÃO
• A paginação é uma técnica que consiste em dividir em blocos
(páginas) de tamanho fixo, o espaço de endereçamento virtual em
páginas virtuais.

• O problema de falta de página (page fault), ocorre quando um


programa referencia um endereço não mapeado. Neste caso a MMU
verifica que a página não está mapeada e faz a CPU desviar para o
Sistema Operacional que escolhe um quadro (frame) da página pouco
usado e escreve seu conteúdo de volta para o disco.
PAGINAÇÃO
• Logo após, ele carrega a página recém referenciada no quadro
de página recém liberado, muda o mapa e reinicia a instrução
que causou a interrupção.

• O número da página é usado como um índice para a tabela de


página, resultando no número do quadro de página
correspondente àquela página virtual.
PAGINAÇÃO
16 páginas virtuais
16 bits de endereços
64 KB total de espaço de 1
endereçamento virtual 2
3
Falta de página

6 32 KB total de espaço de
7 endereçamento físico
5
4
3
14 2
4096 - 8191 15 1
0 - 4095 16 0 4 KB cada quadro de página
MMU 8 quadros (frames) de página
PAGINAÇÃO
• Exemplo de uma busca: 15 bits
Convertido
• Endereço: 0010000000000100 em decimal

• MMU com 16 páginas de 4KB.


• Endereço virtual de 16 bits.
• A tabela tem 16 entradas (0000
a 1111).
• Hardware com 8 frames
1
Equivale 0

máximo de 16 páginas = Convertido


2 elevado 4 = 1111 em decimal
16 bits
TABELAS DE PÁGINAS

• O mapeamento de endereços virtuais em endereços físicos pode


ser resumido da seguinte forma: o endereço virtual é dividido em
um número de página virtual (bits mais significativos) e um
deslocamento (bits menos significativos).

• Tabela de páginas: mapeia as páginas virtuais em quadro de


páginas, e usa o número da página como índice. A tabela de
páginas é uma função, com o número de página virtuais como
argumento e o número de quadro físico como resultado.
TABELAS DE PÁGINAS

• Algumas páginas precisam ser removidas da memória para que


novas páginas sejam utilizadas.

• A escolha da melhor página a ser removida é importante pois


caso seja removida uma página que está em constante uso, pode
causar um atraso, resultando em perda de tempo.

• O processo de substituição de páginas é feito por algoritmos que


tomam a decisão de escolher qual a página a ser excluída.
TABELA DE PÁGINAS
TABELAS DE PÁGINAS
COMPONENTES TABELAS DE PÁGINAS
• Número do quadro de página: valor que identifica a página atual. A meta do
mapeamento é localizar esse valor

• Bit de residência (presente/ausente): se bit for 1, a entrada é válida e pode


ser usada, mas se for 0, a página virtual a qual a entrada pertence não está
atualmente na memória, causando erro de falta de página (page fault).

Número do Quadro de Página

Presente/ausente
COMPONENTES TABELAS DE PÁGINAS
• Bit de proteção: dizem quais tipos de acesso são permitidos. Geralmente, esse
campo contém 1 bit, com 0 para ler/escrever e 1 para somente ler.

• Bit de modificada: bit 1 para página alterada e bit 0 para página não alterada.

• Bit de referenciada: é configurado sempre que uma página é referenciada.

• Bit de cache: permite desabilitar o caching da página.


Cache
Desabilitado Modificada

Proteção Número do Quadro de Página

Referenciada Presente/ausente
TABELAS DE PÁGINAS
• Aceleração a paginação

• Em qualquer sistema de paginação, duas questões precisam ser


abordadas:
1. O mapeamento do endereço virtual para o endereço físico precisa ser rápido.

2. Se o espaço do endereço virtual for grande, a tabela de página será grande.

• A solução mais simples é ter uma única tabela de página consistindo em


uma série de registradores de hardwares rápidos, com uma entrada para
cada página virtual, indexada pelo número da página virtual.
ARMAZENAMENTO DAS TABELAS DE PÁGINAS
1. Array de Registradores

2. Memória RAM: local mais utilizado que utiliza dois registradores.


• Registrador de base da tabela de página (PTBR).
• Aponta para o início da tabela, indicando o endereço físico de memória onde a tabela
está alocada.

• Registrador de tamanho da tabela de página (PTLR).


• Indica tamanho da tabela de página (número de entradas da tabela).

3. Memória cache na MMU

You might also like