Você está na página 1de 47

Universidade Federal do Rio Grande do Norte

Instituto Metrópole Digital


IMD0121 – Arquitetura de Computadores

Memória Virtual
Profa Monica Magalhães Pereira
monicapereira@dimap.ufrn.br

Baseado em material do prof. Leandro Galvão


Plano de Aula

š Aprender o conceito de memória virtual, características e


funcionamento

š Entender como ocorre a troca de informações entre a memória


principal e a secundária

š Conhecer as políticas de mapeamento, substituição e escrita da


memória virtual
Introdução

1. Todas as aplicações que estão sendo


executadas devem estar na memória principal

2. O SO também deve estar na memória


principal
COMO GERENCIAR A MEMÓRIA
PRINCIPAL DE FORMA A
COLOCAR TODAS AS
APLICAÇÕES E SO NA MEMÓRIA?
š Solução: PARTICIONAMENTO

š Dividir a memória principal em partições

š Cada partição armazena parte do conteúdo de


uma aplicação ou SO
1. Partições de tamanho fixo
OCUPAÇÃO DA MEMÓRIA PRINCIPAL

š Tamanho fixo e š Tamanho fixo mas não


mesmo tamanho são do mesmo tamanho

SO SO 6M
8M 2M
Na maior parte dos casos, a parte
8M da aplicação não exigirá tanta 4M
memória quanto a fornecida pela
partição 8M
8M Ex.: 3MB será colocado em 8MB

12M
8M
2. Partições de tamanho variável
OCUPAÇÃO DA MEMÓRIA PRINCIPAL
š Quando parte de uma aplicação é levada para a memória,
ela recebe somente a quantidade de memória exigida

SO 4M SO 4M SO 4M SO 4M

Processo
Processo 20M Processo 5 14M
20M 20M
1 1
6M
Processo Processo Processo
8M 8M 8M
4 4 4
14M
6M 6M 6M

Processo Processo Processo Processo


18M 18M 18M 18M
3 3 3 3

4M 4M 4M 4M
2. Partições de tamanho variável

š Quando parte de uma aplicação é levada para a memória,


ela recebe somente a quantidade de memória exigida

SO 4M SO 4M SO 4M SO 4M
Uso de compactação Processo
14M
Processo 20M Processo 20M 5
1
20M
1
6M
Processo Processo Processo
8M 8M 8M
4 4 4
14M
6M 6M 6M

Processo Processo Processo Processo


18M 18M 18M 18M
3 3 3 3

4M 4M 4M 4M
Particionamento

š Uma aplicação provavelmente não será carregada


para um mesmo local na memória principal a cada
vez que é levada para lá

š Se houver compactação, uma aplicação será


movida de lugar

š Importante:

š Uma aplicação contém instruções e dados

š Instruções contém endereços de dados e de outras


instruções
COMO ENCONTRAR OS
ENDEREÇOS SE A APLICAÇÃO
NÃO ESTÁ EM UMA POSIÇÃO
FIXA DA MEMÓRIA?
Particionamento

š Endereço lógico
š Local relativo ao início do programa

š Endereço físico
š Local real na memória principal

š Processador converte um endereço lógico em um físico,


somando o local inicial atual da aplicação (endereço
base) a cada endereço lógico
Particionamento

šPartições desiguais de tamanho


fixo e de tamanho variável são
ineficazes
Paginação

š Solução: PAGINAÇÃO

š Dividir a memória em pedaços menores de tamanho fixo –


Frames

š Dividir a aplicação em pedaços de mesmo tamanho dos


pedaços da memória – Páginas

š No máximo, o espaço desperdiçado na memória para esse


processo é uma fração da última página
Particionamento x Paginação
OCUPAÇÃO DA MEMÓRIA PRINCIPAL
Particionamento Paginação
4 kB
4 kB
8MB 4 kB
4 kB
4 kB
6 MB 4 kB
4 kB
4 kB
4 kB
12 MB 4 kB
4 kB
4 kB
4 kB
4 MB 4 kB
4 kB
4 MB 4 kB
4 kB
8 MB 4 kB
4 kB
4 kB
Paginação
Frame 0 EM USO
Frame 1 Página 1 AP A
Frame 2 EM USO
Frame 3 EM USO
Frame 4 EM USO
Frame 5 Página 0 AP A
Frame 6 Página 2 AP A
Frame 7 EM USO
Frame 8
Frame 9
Aplicação A Frame 10 EM USO
Frame 11 EM USO
Frame 12 Página 3 AP A
Página 0 Frame 13
Página 1 Frame 14
Página 2 Frame 15 EM USO
Página 3 Frame 16 EM USO
Frame 17 EM USO
Aplicação B Frame 18 EM USO
... Frame 19 EM USO
Frame 20
Frame 21 EM USO
Frame 22
Memória Secundária Frame 23 EM USO
Memória Principal
Paginação por demanda

š Cada página de uma aplicação é trazida apenas


quando necessária, ou seja, por demanda
š Exemplo: programa grande consistindo de uma grande
parte de instruções e uma série de arrays de dados
š Sub-rotina: trazer apenas uma pequena seção do
programa e alguns arrays de dados
š Princípio da localidade
Paginação por demanda

š Se precisar de outra página: FALTA DE PÁGINA (page fault)


š Busca no disco

š Vantagens:
1. Possível mapear mais aplicações na memória

2. Páginas não usadas não precisam ser mantidas na memória

š É necessário ter uma política de substituição de página

š Alta taxa de falta de página: thrashing


Paginação por demanda

š Se precisar de outra página: FALTA DE PÁGINA (page fault)


š Busca no disco

š Vantagens:
ONDE JÁ VIMOS ISSO?
1. Possível mapear mais aplicações na memória

2. Páginas não usadas não precisam ser mantidas na memória

š Política de substituição de página

š Alta taxa de falta de página: thrashing


MEMÓRIA VIRTUAL
Memória Virtual

š Não é necessário carregar todo o programa na memória

š Se o programa for maior que a memória, é necessário criar


maneiras de estruturá-lo em partes que possam ser carregadas
uma de cada vez

š Com a paginação por demanda, quem faz isso é SO e hardware

š Para o programador existe uma memória imensa, pois todo o


programa é acessado (a troca de páginas é transparente)
Memória Virtual

š Não é necessário carregar todo o programa na


memória
O QUE ACONTECERIA SE
NÃO
š Se o programa HOUVESSE A TROCA
for maior que a memória, é necessário
criar maneiras de estruturá-lo em partes que possam ser
carregadas uma de cada vez
DE PÁGINA E A MEMÓRIA
PRINCIPAL ESTIVESSE
š Com a paginação por demanda, quem faz isso é SO e
hardware

š Para o programadorCHEIA?
existe uma memória imensa, pois
todo o programa é acessado (a troca de páginas é
transparente)
desculpe, mas você não pode carregar mais
nenhum aplicativo. Por favor, feche um dos
programas abertos para poder abrir um novo
Memória Virtual

u Conceito

u Funcionamento

u Desempenho

u Papel na hierarquia de memória


Conceito

u Memória Virtual é a técnica que dá ao programador a ilusão de poder


acessar rapidamente um grande espaço de endereçamento.

u Objetivos da técnica:
l Permitir que haja um meio seguro e eficiente de se compartilhar
informações, armazenadas na memória, entre vários programas
l Minimizar os problemas causados aos programas pela existência
de uma pequena quantidade de memória principal
Funcionamento

u Os programas que compartilham a memória de determinada


máquina mudam dinamicamente durante o processo de execução.

u Cada programa deve ser compilado usando seu próprio espaço de


endereçamento (ou seja, em uma região da memória acessível
somente a esse programa).

u A técnica de memória virtual realiza a tradução do espaço de


endereçamento de um programa para seus endereços reais.
Funcionamento

u A técnica de memória virtual permite que o tamanho de


um único programa exceda a quantidade total de
memória real disponível para sua execução

u A técnica de memória virtual gerencia automaticamente


dois níveis de hierarquia:
l Memória principal

l Memória secundária ou auxiliar


Funcionamento

u A memória virtual faz com que a memória principal funcione como uma
cache para memória secundária (discos magnéticos)

u Vantagens:

l Ilusão de ter mais memória física

l Realocação de programa

l Proteção entre processos

l Separação entre memória lógica e memória física:

- Memória Lógica: visão de uma aplicação/processo

- Memória Física: visão do processador


Memória Virtual x Memória Cache
Memória Virtual x Memória Cache

Parâmetro Cache L1 Memória virtual


Tamanho do bloco (página) 16-128 bytes 4.096-65.536 bytes

Tempo de acerto (hit) 1-3 ciclos 100-200 ciclos

Penalidade de falha 100-200 ciclos 1 M – 10 M ciclos

Taxa de falha 0,1-10% 0,00001-0,001%


Memória Virtual
Memória Virtual

u Transferência entre disco e memória ocorre em páginas, cujo

tamanho é definido pela ISA (arquit. do conj. instruções).

u Tamanho da página é grande para amortizar o alto custo de

acesso ao disco.

u Compromisso (tradeoff) no aumento do tamanho das páginas

na memória virtual é similar ao compromisso no aumento

dos blocos para a memória cache.


Memória Virtual – tradução de endereços

Instruções Dados Pilha


Espaço de endereços
do processo A

Memória física:

Espaço de endereços
do processo B

Espaço de endereços
do processo C
Memória Virtual –
tradução de endereços

u Tradução de endereços é feita pelo hardware e pelo


sistema operacional.
u SO mantém para cada programa:

l Quais páginas estão associadas a ele

l Onde fica cada página no disco

l Quais páginas estão residentes na memória

l O nº de cada página física associada com o nº página virtual


residente na memória
Memória Virtual –
tradução de endereços

u Para cada programa, o SO estabelece uma tabela que mantém o nº


da página física correspondente ao nº da página virtual de cada
página residente na memória.

u O registrador de tabelas de páginas no hardware provê o endereço


base da tabela de páginas para o processo em execução.

u Cada programa tem uma única tabela de páginas e um único


registrador de tabela que é carregado pelo SO.
Memória Virtual –
tradução de endereços
Frame 0 EM USO
Frame 1 Página 1 AP A
Frame 2 EM USO
Frame 3 EM USO
Frame 4 EM USO
Frame 5 Página 0 AP A
Frame 6 Página 2 AP A
Frame 7 EM USO
Frame 8
Aplicação A Frame 9
Frame 10 EM USO Página 0 Frame 5
Frame 11 EM USO
Página 0 Frame 12 Página 3 AP A Página 1 Frame 1
Página 1 Frame 13
Página 2 Frame 14
Página 2 Frame 6
Página 3 Frame 15 EM USO Página 3 Frame 12
Frame 16 EM USO
Aplicação B Frame 17 EM USO
... Frame 18 EM USO Tabela de página da
Frame 19 EM USO Aplicação A
Frame 20
Frame 21 EM USO
Memória Secundária Frame 22
Frame 23 EM USO
Memória Principal
Segmentação

šPaginação é um sistema de memória virtual


unidimensional
š Os endereços variam de 0 a um endereço máximo

š Em alguns casos, é mais interessante a existência


de dois ou mais espaços de endereçamento virtual
separados
Segmentação

š Segmentação: vários espaços de endereçamento


completamente independentes

š Esses espaços são chamados de segmentos

š Cada segmento é composto de uma sequência de


endereços, de 0 até um valor máximo

š O tamanho de cada segmento não precisa ser fixo


š Segmentos diferentes podem ter tamanhos diferentes
Segmentação

š Cada segmento constitui um espaço de


endereçamento separado
š Aumentar ou diminuir um segmento não influencia nos
outros

š O endereço é especificado em duas partes


š Número do segmento
š Endereço do segmento
Segmentação
Segmentação

š Vantagem

š Simplifica o tratamento de estruturas de dados que


crescem (a ED recebe seu próprio segmento)

š Permite que os programas sejam alterados e


recompilados de modo independente

š Compartilhamento entre processos

š Proteção entre programas


Página X Segmento

u A paginação utiliza blocos de tamanho fixo.


u A segmentação utiliza blocos de tamanho variável.
u Um segmento consiste de duas partes:
l Número de segmento
l Offset de segmento
Página X Segmento

u Por que utilizar segmentação?


l Suporte a métodos de proteção mais avançados
l Segmento de código: só pode ser executado

l Segmento de dado: pode ser lido ou escrito mas não executado

l Compartilhar um espaço de endereçamento

u Desvantagem:
l Divide o espaço de endereço em partes logicamente separadas, que
precisam ser manipuladas como um endereço de duas partes
l Necessidade de compactação
Página X Segmento

Página Segmento
Palavras por endereço Uma Duas (segmento e offset)
Visível ao programador? Invisível ao programador de Pode ser visível ao
š A decisão de usar memória virtual
aplicação programador de aplicação

paginada
Substituição de blocos ouTrivial (todos os blocos são Difícil (deve encontrar
do mesmo tamanho) porções contínuas e sem uso
memória virtual segmentada afeta da memória o principal)
Eficiênciadesempenho da CPUinterna
de uso de memória Fragmentação Fragmentação externa
(porção não usada da (porções não usadas na
página) memória principal)
Eficiência de tráfego de disco Sim (ajuste do tamanho de Nem sempre (pequenos
página para balancear tempo segmentos podem transferir
de acesso e de transferência) poucos bytes apenas)
Para saber mais ...

u PATTERSON, D.A. & HENNESSY, J. L.


Organização e Projeto de Computadores -
A Interface Hardware/Software. 3ª ed. Campus, 2005.

u William Stallings, “Arquitetura e Organização de


Computadores,” 8ª Edição
u Capítulo 8 – (sessão 8.3)

Você também pode gostar