Memória
Gestão do espaço lógico
Paginação
Segmentação com paginação
Paginação
Divide-se a memória física em pequenos blocos de
tamanho fixo chamados de páginas físicas (ou
frames) – o tamanho é uma potência de 2 entre 512
bytes e 8192 bytes.
Divide-se o espaço de endereçamento lógico em
blocos do mesmo tamanho chamados de páginas (ou
páginas virtuais).
A memória física de um processo não necessita de
ser contígua – atribui-se páginas de memória física
ao processo onde quer que estas estejam disponíveis
Não há fragmentação externa
Há fragmentação interna (em média ½ página)
Arquitectura de Computadores (2008/2009): Memória
562
Tabela de páginas
MMU usa um tabela de páginas que traduz
endereços virtuais do programa nos endereços
físicos atribuídos
O SO manterá informação sobre todas as frames
livres e ocupadas
Para executar um programa com n páginas, precisa de
encontrar n frames livres e carregar lá o programa
Gere, para cada programa, uma tabela de páginas que
traduz endereços virtuais nos endereços físicos que lhe
foram atribuídos
Arquitectura de Computadores (2008/2009): Memória
563
Paginação: atribuição não contígua
O processo B termina e inicia-se o processo D:
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
A.0
A.1
A.2
A.3
B.0
B.1
B.2
C.0
C.1
C.2
C.3
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Arquitectura de Computadores (2008/2009): Memória
A.0
A.1
A.2
A.3
C.0
C.1
C.2
C.3
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
A.0
A.1
A.2
A.3
D.0
D.1
D.2
C.0
C.1
C.2
C.3
D.3
D.4
564
Gestão de memória física por páginas
Transformação de endereços: A MMU converte
endereços virtuais em endereços físicos através de
um tabela gerida pelo SO (a tabela de páginas)
0:
1:
Endereços
virtuais
0:
1:
Endereços
físicos
CPU
P-1:
Tabela de páginas
Arquitectura de Computadores (2008/2009): Memória
N-1:
Memória central
565
Transformação de endereços
Parâmetros
P = 2p = tamanho da página (usa p bits).
N = 2n = espaço virtual (endereço tem n bits)
M = 2m = espaço físico (endereço tem m bits)
n–1
Número de página virtual
p p–1
deslocamento
0
Endereço virtual
Note-se que os bits
correspondentes ao
deslocamento (dentro da página)
Tabela de páginas
não mudam durante a
transformação
0
m–1
p p–1
Endereço físico
Número da página física
deslocamento
Arquitectura de Computadores (2008/2009): Memória
566
Suporte da tabela de páginas
Onde se guarda a tabela de páginas de um processo?
No caso do Pentium a tabela tem 220 entradas; se cada
uma tiver 4 bytes, são 4 Mbytes!
E há uma tabela de páginas por processo …
Não é tecnicamente viável guardar a tabela de páginas
na MMU
Solução:
Guardar a tabela de páginas em memória central (RAM)
Page-table base register (PTBR) base da tabela
Page-table length register (PTLR) tamanho da tabela
Arquitectura de Computadores (2008/2009): Memória
567
Suporte da tabela de páginas
RAM
Endereço virtual:
Página virtual
Endereço físico:
Desloc.
x
Interrupção
Página física
Desloc.
Tamanho de
uma entrada
Tabela de páginas
<
Page table lengthregister
+
Page table base register
Arquitectura de Computadores (2008/2009): Memória
568
Suporte da tabela de páginas
Neste esquema, cada acesso a dados ou código
obriga a dois acessos à memória:
1. Ler a tabela de páginas obtendo a página física
2. Ler/escrever o dado ou ler a instrução.
O problema dos dois acessos à memória pode ser
resolvido por hardware especial de consulta rápida
chamado translation look-aside buffer (TLB) que
se baseia numa memória associativa
Funciona como uma cache da tabela de páginas
Arquitectura de Computadores (2008/2009): Memória
569
TLB - Memória associativa
Transformação de
endereços: A A’
MMU
Se A está na
memória
associativa, TLB
responde logo com
o número da
frame A’
Senão está, obtém
o número da
frame da tabela
de páginas na
memória
Arquitectura de Computadores (2008/2009): Memória
570
Tempo de acesso efectivo
Pesquisa associativa = ε unidades de tempo
Tempo de acesso à RAM é T unidades de tempo
Hit rate (α) – percentagem das vezes em que o
número da frame está numa entrada do TLB
Tempo de acesso efectivo (TAE)
TAE = αε + (1 – α)(T + ε) + T
tempo para obter o endereço real
Nota: sem cache de memória
Arquitectura de Computadores (2008/2009): Memória
571
Exemplo
T de 50ns
TLB de 5ns e supondo um hit-rate de 95%
αε + (1 – α)(T + ε) + T = 0.95x5 + 0.05x55 + 50 = 57.5ns
Considerando a cache de memória….?
αε + (1 – α)(T + ε) + Tc
Tc: Tempo médio tendo em conta a cache
Supondo Tc=0.9x5+0.1x50=9.5ns
0.95x5 + 0.05x55 + 9.5 = 17ns
Arquitectura de Computadores (2008/2009): Memória
572
Memória virtual
A separação de espaços permite que o programa use
um espaço virtual:
Endereços independentes da localização física do
programa
Cada programa tem o seu espaço de endereços (0 … etc )
Pode usar endereços que não existem na memória física
Só ocupa na memória física o espaço realmente necessário
Não precisa de ter tudo carregado na memória física carrega só as páginas usadas
Espaço virtual pode ser maior que o físico (real)
A arquitectura está limitada pela memória virtual não pela
física possibilidade de expansão
Permite partilha de partes do espaço de endereçamento
entre processos
Arquitectura de Computadores (2008/2009): Memória
573
Paginação a pedido
VM pode ser suportada através de paginação a
pedido
Todas as páginas virtuais da imagem do processo estão
em disco, chamado disco de paginação ou disco de
swap
As páginas só vêm para memória central (RAM) quando
são referenciadas, i.e. quando há um endereço virtual
emitido pelo CPU correspondente a essa página virtual
Procura-se manter as páginas mais usadas em memória
real Working Set
É completamente transparente para o
utilizador/programador
Arquitectura de Computadores (2008/2009): Memória
574
Motivações para a memória virtual
Simplificar a gestão de memória
Múltiplos processos residem em memória central cada um
com o seu próprio espaço de endereçamento – cada um
tem a sua tabela de páginas
Fornece protecção – só o SO pode alterar as tabelas de
páginas
Só o código e dados “activos” (working set) é que estão
em RAM; mais RAM pode ser atribuída ao programa se
necessário
Usar a RAM como Cache para o Disco
A soma dos espaços de endereçamento dos vários
processos pode exceder o tamanho da memória física
O espaço de endereçamento de um processo pode
exceder a dimensão da memória física
Arquitectura de Computadores (2008/2009): Memória
575
Tabela de páginas
Arquitectura de Computadores (2008/2009): Memória
576
Tabela de páginas
Número de
página virtual
Memória física
resident
1
1
0
1
1
1
0
1
0
1
Tabela de páginas (em memória)
indica qual a página física
ou o endereço em disco
Arquitectura de Computadores (2008/2009): Memória
Armazenamento em disco
(partição dedicada ou
ficheiro de sistema)
577
Falta de página (Page Fault)
A primeira referência a uma página P provoca uma
excepção (page fault) e o SO intervém
SO olha para a tabela de páginas para decidir se é:
Referência inválida ⇒ aborta o programa
Obtém uma “frame” (página física) vazia F
Se a página está em disco:
Carrega a página nessa “frame”
Actualiza a tabela de páginas:
Tab_paginas[P].frame = F
Tab_paginas[P].residente = 1
F
P
Retoma a execução da instrução que provocou a
excepção
Arquitectura de Computadores (2008/2009): Memória
578
Hardware/Software na paginação a pedido
Hardware: trata das operações mais críticas:
Obter o endereço real a cada acesso
Software: o SO trata os casos excepcionais e que
exigem politicas mais complicadas:
Caso a página referenciada não esteja em memória o
SO avalia qual dos casos seguintes se trata:
Referência inválida abortar a execução do programa
Página em disco é preciso trazer a página virtual para
RAM
O SO gere a memória, que páginas ocupadas por
que programas
Arquitectura de Computadores (2008/2009): Memória
579
Exemplo de arquitectura com paginação
Características duma arquitectura (ISA)
16 bits de endereços (virtuais e reais)
páginas de 2KBytes
Endereços:
endereço virtual 16bits espaço de 216 = 64K
supondo uma RAM instalada 32KBytes, então o espaço
real está limitado a esse valor
Endereços de 16 bits, páginas de 2KBytes (11bits):
Espaço de endereços tem 64K/2K = 32 páginas
Na realidade a RAM tem 32K/2K = 16 páginas
Arquitectura de Computadores (2008/2009): Memória
580
Interpretação dos endereços
Endereços de 16 bits, páginas de 2KBytes (11bits)
RAM instalada de 32KBytes
65535
5 bits
Número de página
32 páginas
32767
Espaço real
instalado
16 páginas
instaladas
0
Arquitectura de Computadores (2008/2009): Memória
2K
Espaço Virtual
211 2K
25 32
11 bits
deslocamento na página
0
581
Tabela de páginas
65535
31
30
29
válido
residente
dirty
Tabela de páginas
(32 entradas)
0
0
0
0
1
0
0
0
2
0
0
0
32767
15
14
13
pág. física (5bits)
3
2
1
0
0
3
2
1
0
30 0
0
0
31 0
0
0
Arquitectura
de Computadores (2008/2009): Memória
0
582
Exemplo de um programa
65535
pilha
Tabela de páginas
residente
dirty
32767
válido
31
30
29
0
1
0
0
1
1
0
0
2
1
0
0
3
1
0
0
4
0
0
0
5
0
0
0
15
14
13
pág. física (5bits)
3
2
1
0
SO
0
3
2
1
0
dados
30 1
0
0
31 1
0
0
código
Arquitectura de Computadores (2008/2009): Memória
disco
(memória secundária)
583
Exemplo de um programa
65535
pilha
dirty
32767
residente
0
fetch Mem[10]
PC = 10
válido
31
30
29
0
1
0
1
0
1
1
0
0
2
1
0
0
3
1
0
0
4
0
0
0
5
0
0
0
10
pág. física (5bits)
10
10
10
20490
15
14
13
12
11
10
3
2
1
0
SO
0
3
2
1
0
dados
código
30 1
0
0
31 1
0
0
Tabela de páginas
Arquitectura de Computadores (2008/2009): Memória
disco
(memória secundária)
584
Exemplo de um programa
65535
pilha
mov [6145], 5
1
dirty
3
residente
6145
32767
válido
31
30
29
0
1
1
0
10
1
1
1
0
11
2
1
1
0
12
3
1
0
1
0
1
14
4
0
0
0
5
0
0
0
15
14
13
12
11
10
pág. física (5bits)
14
1
28673
3
2
1
0
SO
0
3
2
1
0
dados
código
30 1
1
1
31 1
0
0
13
Tabela de páginas
Arquitectura de Computadores (2008/2009): Memória
disco
(memória secundária)
585
Resumo
Mapear o espaço virtual de um programa em
memória:
Criar tabela de páginas
Resolução de endereço
Cache de endereços na TLB
Carregamento dinâmico a pedido
Tabela de páginas preenchida durante a execução
Memória Virtual usando memória física e o disco
Memória Física como cache do espaço virtual
Arquitectura de Computadores (2008/2009): Memória
586
CPU com paginação e cache interna
dados
modo de
endereçamento
cálculo
do
endereço
efectivo
endereço
virtual
cálculo do
endereço real
(MMU)
endereço
real
endereço
real
BUS
interface
Cache
L1
dados
TLB
Arquitectura de Computadores (2008/2009): Memória
587
Segmentação vs. paginação
Segmentação define porções lógicas de tamanho
variável que são visíveis para o programador
Exemplo: o segmento da pilha e do código
No caso do IA-32 pode-se aceder a um endereço usando
o SS ou CS como base
Paginação é transparente para o programador.
Consiste em dividir a memória e o espaço de
endereçamento dos programas e porções do mesmo
tamanho.
Paginação é mais fácil de gerir pelo sistema
Segmentação permite introduzir partilha e
protecção de memória de uma forma simples
Arquitectura de Computadores (2008/2009): Memória
588
Segmentação com paginação
O programa é dividido em segmentos
Cada segmento é dividido em páginas
Com a sua tabela de páginas
O programa tem então várias tabelas de páginas
O endereço é dividido em 3 partes
1. Indica a tabela de páginas a utilizar: define o
segmento
2. Número da página
3. Deslocamento
Útil porque permite segmentação do ponto de vista
do utilizador e paginação do ponto de vista do
sistema
Arquitectura de Computadores (2008/2009): Memória
589
Memória virtual no Intel Pentium 4
Páginas de 4KBytes
Endereço de 32 bits 20 bits (página) + 12 bits
(deslocamento)
Tabela de páginas 1M entradas (cada 4 Bytes)
TLB para acessos a dados de 64 entradas
TLB para acessos a código de 64/128 entradas
Também permite páginas de 4MBytes e segmentação
com paginação
Arquitectura de Computadores (2008/2009): Memória
590