Fundamentos da Arquitetura de
Computadores
Memória Virtual
Prof. André Renato
1º Semestre / 2012
Memória Virtual
Como vimos, nem sempre a quantidade
total de memória que um computador
consegue endereçar é efetivamente
instalada e utilizada;
 A memória virtual foi desenvolvida para
que os programas possam utilizar mais
memória principal do que de fato existe;

Memória Virtual

Memória virtual – separação da memória
lógica do usuário da memória física
◦ somente uma parte do programa precisa
estar na memória para execução;
◦ espaço de endereçamento lógico pode ser
muito maior que espaço de endereçamento
físico;
◦ permite o compartilhamento de espaços de
endereços por vários processos;
◦ compartilhamento possibilita criação mais
eficiente de processos.
Memória Virtual


Em um sistema de memória virtual, o
endereço de memória gerado pelo programa
para acessar uma variável, por exemplo, é um
endereço virtual, sendo diferente do
endereço real usado para o acesso a
memória principal.
Os possíveis endereços virtuais que podem
ser gerados pelo programa formam o
espaço de endereçamento virtual,
enquanto a faixa de endereços na memória
principal constitui o espaço de
endereçamento real.
Memória Virtual
Embora sob o ponto de vista do programa as
instruções e dados estejam armazenados no
espaço de endereçamento virtual, na realidade
eles continuam armazenados na memória
principal, representada pelo espaço de
endereçamento real.
 Esta diferença entre endereçamento virtual e real
utiliza um mecanismo que faz a correspondência
entre o endereço virtual gerado pelo programa e
o endereço real que será usado para acessar a
memória principal, o gerenciador de memória
virtual, ou DAT (Dynamic Address Translator).

Memória Virtual
Memória Virtual
Como o espaço de endereçamento
virtual é bem maior que o espaço de
endereçamento real, pode acontecer de
um bloco de dados pedido pelo programa
não estar posicionado na MP;
 Neste caso, o bloco de dados ainda está
na MS e será preciso trazê-lo para a MP;
 A operação de movimentação dos blocos
é chamada de swapping e consiste em
uma leitura ao disco (lenta);

Memória Virtual
Memória Virtual

Blocos de memória podem ser organizados
de duas formas: em segmentos ou páginas.
◦ O segmento pode ser formado por um bloco de
informações logicamente relacionadas (por
exemplo, os dados armazenados em uma matriz);
os segmentos podem ter tamanho variável.
◦ Uma página é um bloco de dados de tamanho
fixo e não segue nenhuma coesão lógica, isto é,
os dados podem não ter relação entre si.
Memória Virtual
O DAT possui uma pequena memória
interna chamada TLB (Translation Lookaside
Buffer), que armazena os pares de endereços
virtual/principal acessados recentemente,
como uma memória cache.
 No acesso a uma posição de memória
virtual, se o dado requerido não possui um
registro relacionando com a memória
principal, o bloco de dados também não se
encontra na memória principal. Essa ausência
de bloco é denominada falha de página ou
falha de segmento.

Memória Virtual
Ao ocorrer uma falha o DAT gera uma
interrupção, transferindo o controle do
processador para o sistema operacional, para que
este transfira o bloco de dados referenciado da
memória secundária para a memória principal.
 Após a transferência do bloco de dados ser
concluída, o controle do processador retorna ao
programa em execução, exatamente para o ponto
onde foi interrompido, agora com os dados
referenciados presentes na memória principal.

Memória Virtual
Memória Virtual


Com a utilização da memória principal, não é
necessário que todas as instruções e dados
de um programa permaneçam na memória
principal durante a execução do programa,
blocos são transferidos da memória
secundária para a principal a medida que
forem referenciados.
É importante ressaltar que todo o
mecanismo de memória virtual funciona de
forma totalmente transparente para o
programa, e mais importante, para o
programador que o desenvolveu.
Memória Virtual

Paginação sob demanda:
◦ Uma página é colocada na memória somente
quando se necessita dela;
◦ Menos E/S para carregamento e swap de
programas;
◦ Menos memória gasta com cada processo;
◦ Resposta mais rápida;
◦ Maior número de usuários.
Memória Virtual

O que acontece se não existir espaço
livre para a página?
◦ Substituição de página– encontra uma página
que está na memória mas não está sendo
utilizada e a coloca no disco.
◦ algoritmo utilizado deve fornecer menor
número de faltas de páginas.
◦ A mesma página pode ser trazida para a
memória várias vezes.
Memória Virtual

O que pode correr se o algoritmo escolhido
for ruim, ou se houver pouco espaço para a
memória virtual?
◦ Se um processo não possui páginas suficientes
para ser executado na memória, a taxa de falta de
páginas pode se tornar muito alta.
◦ baixa utilização de CPU
◦ sistema operacional acha que precisa aumentar o
nível de multiprogramação
◦ permite que outro processo entre para ser
executado causando mais faltas de página
Memória Virtual

Thrashing: um processo está ocupado realizando
a troca de páginas entre a memória e o
disco.

A utilização da MV deve portanto ser feita
com moderação.
◦ Uma MV muito grande, pode fazer com que
muitos blocos fiquem em disco, além de ocupar
muito espaço no HD;
◦ Uma MV muito pequena pode fazer com que o
desempenho da máquina seja bem menor
(principalmente com muitos programas);
Download

espaço de endereçamento virtual