Buscar

Gerenciamento de Memória - Parte II

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 35 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 35 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 35 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Sistemas Operacionais
Gerenciamento Básico de Memória
Parte II
Prof. Sílvio Fernandes
UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO
DEPARTAMENTO DE CIÊNCIAS EXATAS E NATURAIS
CURSO DE CIÊNCIA DA COMPUTAÇÃO
 Registradores base e limite criam abstração de 
espaços de endereço
 Mas há outro problema a ser resolvido: 
gerenciar o bloatware
2
Memória Virtual
SW utilizam quantidades 
excessivas de memória
Problema de programas 
maiores que a memória está 
presente desde o início da 
computação
 Há muitos anos programadores já eram 
obrigados a lidar com programas maiores que 
a quantidade de memória física disponível
 A solução era dividir o programa em módulos 
chamados overlays
 O overlay 0 era o 1º a ser executado, e 
chamava o próximo, que era carregado em 
seu lugar na memória, quando o 1º terminava
 O principal problema é que a divisão em 
overlays era feita pelo programador (trabalho 
lento e propenso a erros)
3
Memória Virtual
 A solução foi o método conhecido como 
memória virtual, que permite que o tamanho 
total de um programa (código, dados e pilha) 
pode exceder a quantidade total de memória 
física disponível para ele
 O SO mantém as partes ativas do programa na 
memória e o restante no disco
4
Memória Virtual
Paginação
 Em qualquer computador existe um conjunto 
de endereços de memória que os programas 
podem gerar ao serem executados
 Quando um programa usa uma instrução do 
tipo 
 MOV REG, 1000 
 Endereços gerados pelo programa são 
chamados de endereços virtuais e constituem 
o espaço de endereçamento virtual
5
Paginação
 Em computadores sem memória virtual o 
endereço virtual é idêntico ao endereço físico
 Em computadores com memória virtual esse 
endereço será passado a uma MMU (Memory
Management Unit) que mapeia endereços 
virtuais em físicos
6
Paginação
 Localização e função da MMU
7
Paginação
 Ex: Um computador 
que pode gerar 
endereços virtuais de 
16 bits (de 0 a 64K), 
mas que só possui 
32K de memória 
física. Mas é possível 
escrever programas 
de 64K
8
Paginação
 O espaço de endereçamento virtual é dividido 
em unidades denominadas páginas (pages). 
As unidades correspondentes em memória 
física são as molduras de página (page frames)
 Páginas e molduras de páginas possuem 
sempre o mesmo tamanho
 A transferência entre a memória e o disco são 
sempre em unidades de uma página
9
Paginação
 Quando um programa tenta acessar o 
endereço 0 com a instrução MOV REG, 0 o 
end. virtual 0 é enviado a MMU, que detecta 
que este endereço está na página virtual 0 (0 a 
4095), que por sua vez corresponde a moldura 
de página 2 (8192 a 12287)
 A MMU então transforma o end. virtual 0 no 
end. físico 8192 e o envia a memória por meio 
do barramento
 A memória desconhece a MMU e somente 
enxerga uma solicitação de leitura ou escrita 
no endereço que chega
10
Paginação
 Como outro exemplo, o end. virtual 20500 está 
localizado 20 byte após o início da página 
virtual 5 sendo mapeado para o end. físico 
12288 + 20 = 12308
 Quando (ou se) o programa tentar usar uma 
página virtual não mapeada, por exemplo, 
com a instrução MOV REG, 32780 (12º byte da 
pág. virtual 8). A MMU constata que está pág. 
não está mapeada e força o desvio da CPU 
para o SO
 Essa interrupção (trap) é denominada falta de 
página (page fault)
11
Paginação
 Na falta de página o SO
1. Escolhe uma moldura de página para salvar no 
disco. Ex: moldura 1
2. Marca na tabela de páginas virtuais a entrada 
escolhida (1) como não mapeada
3. Carrega a pág. virtual referenciada pela instrução 
na moldura de pág. recém liberada (1)
4. Marca na tabela de pág. virtuais a entrada da nova 
pág. virtual (8) como mapeada (moldura 1)
 A MMU transformará o endereço virtual 32780 
no end. físico 4108
12
Paginação
 Para entender como a MMU trabalha vemos 
um exemplo de end. virtual, 8196 
(0010000000000100), sendo mapeado por meio 
do emprego do mapeamento da MMU
13
Paginação
 Operação interna de uma MMU com 16 
páginas de 4KB
14
Tabelas de páginas
 No caso mais simples o mapeamento é feito 
exatamente da maneira descrita 
anteriormente
 End. virtual é dividido no número de pág. virtuais (bits 
mais significativos) e um deslocamento dentro desta 
pág. (bits menos significativos)
 No exemplo tínhamos 16 pág. virtuais de 4KB 
cada
 Os 4 1º bits especificavam o número da pág. virtual (0 
a 15)
 Os 12 bits seguintes especificavam o deslocamento 
(byte 0 a 4095) em relação ao começo da pág.
15
Tabelas de páginas
 O no. de pág. virtual é usado como índice dentro 
da tabela de pág. que aponta para uma entrada 
relacionada a pág. virtual, onde encontramos o 
no. da moldura de pág. correspondente
 O no. da moldura deve ser concatenado com os 
bits de deslocamento para formar o end. físico 
16
Estrutura de uma entrada da tabela de 
páginas
 Na prática, cada entrada na tabela de páginas 
armazena bem mais que o número da moldura 
correspondente
 O formato exato de cada entrada é altamente 
dependente de hardware, mas a informação 
contida nela é aproximadamente padronizada
 O tamanho de cada entrada é comumente de 32 
bits que podem ser divididos em vários campos
17
Estrutura de uma entrada da tabela de 
páginas
 Entrada típica de uma tabela de páginas
18
Estrutura de uma entrada da tabela de 
páginas
 Número da moldura: é o campo de maior 
importância, dado que o objetivo do 
mapeamento é encontrar este valor
 O bit presente/ausente: se este bit for 1 a entrada é 
válida e pode ser usada. Se for 0 a pág. virtual à 
qual a entrada pertence não está na memória 
neste momento. O acesso a uma entrada na 
tabela de pág. com este bit igual a 0 causa uma 
falta de pág., e o SO deverá ser chamado
19
Estrutura de uma entrada da tabela de 
páginas
 Os bits de proteção: define os tipos de acesso que 
são permitidos a pág. Pode ser de apenas um bit 
com valor 0 para leitura e escrita e 1 para somente 
leitura. Na prática normalmente são usados 3 bits, 
cada uma para permitir ou não a leitura, escrita e 
execução
20
Estrutura de uma entrada da tabela de 
páginas
 O bit modificada: quando uma instrução altera o 
valor de algum bit de uma moldura de pág., o 
hardware automaticamente altera o valor deste bit 
para 1 na entrada correspondente da tabela de 
pág. Este bit é importante quando o SO necessita 
de uma moldura de pág. Se a pág. 
correspondente a essa moldura foi modificada 
(suja), ela tem que ser atualizada no disco. Caso 
contrário (continua limpa), ela pode ser 
simplesmente abandonada, visto que sua imagem 
em disco continua válida (igual a da memória)
21
Estrutura de uma entrada da tabela de 
páginas
 Bit referenciada: esse bit tem seu valor alterado 
para 1 quando a pág. correspondente é acessada 
seja para leitura ou escrita. Este bit ajuda o SO a 
escolher uma moldura de pág. a ser substituída 
quando da ocorrência de uma falta de pág. 
Páginas que não estão sendo acessadas são 
melhores candidatas do que aquelas que estão
22
Estrutura de uma entrada da tabela de 
páginas
 O bit de cache desabilitado: este bit permite que o 
mecanismo de cache seja desabilitado para pág. 
Normalmente ele é usado apenas em pág. que 
mapeiam regiões de memória utilizadas para E/S 
com dispositivos
23
Acelerando a paginação
 Em qualquer sistema de paginação 2 problemas devem 
ser enfrentados
 Mapeamento para endereço físico deve ser rápido
 Todas as instruções vem da memória e muitas fazem 
acessam operandos nela
 Se o espaço de endereço virtual for grande, a tabela 
de páginas será grande
 Os computadoresusam 32 ou 64 bits de 
endereçamento
 Com páginas de 4 KB, por exemplo, um end. de 32 
bits tem 1 milhão de páginas
24
TLB ou Memória Associativa
 Na ausência de paginação, uma instrução faz 
um único acesso à memória para buscar a 
própria instrução
 Com paginação, será necessária pelo menos 
uma referência adicional à memória para 
acessar a tabela de páginas
 Observa-se que apenas uma reduzida parte das 
entradas da tabela é intensamente lida
 A solução foi equipar computadores com um HW (TLB 
– Translation Lookaside Buffer) que mapeia end. 
virtuais para físicos sem passar pelas tabelas de 
páginas geralmente localizado dentro da MMU
25
TLB ou Memória Associativa
 Buffer para tradução de endereço
26
Um exemplo que pode 
gerar essa TLB é um 
processo em um laço de 
repetição
TLB ou Memória Associativa
 Como funciona
1. O endereço é apresentado a MMU
2. O HW verifica se a página está presente na TLB 
(comparando simultaneamente todas as entradas 
em paralelo)
3. Se corresponde a uma entrada válida e não viola os 
bits de proteção a moldura é obtida (page hit)
4. Se estiver presente mas não há permissão uma falta 
por violação (protection fault) é gerada
5. Se não estiver na TLB (page miss) a MMU acessa a 
tabela virtual e substitui uma entrada por esta nova
27
Tabelas de páginas para memórias 
grandes
 TLB ajudam a acelerar o acesso mas não 
resolvem espaços de endereços virtuais muito 
grandes
 Existem 2 modos de lidar com isso
 Tabelas de páginas multinível
 Tabelas de páginas invertidas
28
Tabelas de páginas para memórias 
grandes
 Tabelas de páginas multinível
29
12 bits = 
páginas de 
4 KB
Tabelas de páginas para memórias 
grandes
 Tabelas de páginas multinível
 O segredo desse método é evitar que todas as 
páginas sejam mantidas na memória o tempo todo
 Quando o endereço chega a MMU
 Ela primeiro extrai o campo PT1 e o utiliza com índice 
da tabela de página de nível 1
 Cada entrada dessa tabela aponta para o endereço 
ou moldura de página de uma tabela de nível 2
 O campo PT2 é usado como índice na tabela de 
nível 2 para localizar a moldura de página física
 Os 12 últimos bits são de deslocamento
30
Tabelas de páginas para memórias 
grandes
 Tabelas de páginas invertidas
 Para endereços de 32 bits tabelas multinível
funcionam bem
 Mas para endereços de 64 bits o espaço de 
endereçamento virtual agora é 264 bytes, se 
adotarmos páginas de 4KB, precisamos de uma 
tabela com 252 entradas
 Se cada entrada contiver 8 bytes, essa tabela terá 
mais de 30 milhões de gigabytes (30 PB)
31
Tabelas de páginas para memórias 
grandes
 Tabelas de páginas invertidas
 Nela existe apenas uma entrada por moldura de 
página na memória real, em vez de uma entrada por 
página do espaço de endereçamento virtual
 Cada entrada informa o par (processo, página 
virtual) está localizada na moldura de página
 Quando o processo n referencia a página virtual p, o 
HW não pode mais encontrar a página física usando 
p como índice
 Em vez disso, ele deve pesquisar toda a tabela de 
páginas invertidas em busca de uma entrada (n, p)
32
Tabelas de páginas para memórias 
grandes
 Tabelas de páginas invertidas
 É possível usar TLB para agilizar página muito 
acessadas
 Uma ausência na TLB faz a tabela de página 
invertida ser pesquisada por SW
 Um modo comum é ter uma tabela de espalhamento 
(hash) nos endereços virtuais
 Todas as páginas virtuais com o mesmo valor de 
espalhamento serão encadeadas juntas
33
Tabelas de páginas para memórias 
grandes
 Tabelas de páginas invertidas
34
Referências
 TANENBAUM, Andrew S. Sistemas Operacionais 
Modernos. 3. ed., Prentice Hall, 2009.
35

Outros materiais