gerência de memória memória ... -...
TRANSCRIPT
Sistemas [email protected]
Gerência de MemóriaMemória Virtual e Paginação
Carlos Gustavo A. da Rocha
Sistemas [email protected]
Gerência de Memória
● Memória virtual● O tamanho das memórias aumenta rápido :)
– Mas o tamanho dos softwares aumenta mais rápido :(● Devido a isto os SOs devem ser capazes de
– Executar um programa que é muito grande para caber na memória; ou
– Executar vários programas, onde cada um deles, individualmente, cabe na memória, mas o conjunto não
Sistemas [email protected]
Gerência de Memória
● Memória virtual● A técnica empregada pelos SOs para tornar isto
possível é chamada de memória virtual– Por meio dela o SO realiza o gerenciamento de memória– É uma técnica “antiga”, implementada em computadores
de grande porte desde a década de 60– O tamanho total de cada programa (código, dados, pilha
etc), ou conjunto deles, pode exceder a quantidade total de memória RAM física disponível
● O SO irá manter apenas as partes “ativas” de cada programa na RAM, e o restante no disco
Sistemas [email protected]
Gerência de Memória
● Memória virtual● A ideia básica por trás da memória virtual é que
cada programa possui seu próprio espaço de endereçamento, que é dividido em pedaços chamados de páginas– Estas páginas são “mapeadas” na memória RAM física– A cada momento, apenas parte das páginas precisa
estar na RAM física para que o programa possa executar
Sistemas [email protected]
Gerência de Memória
● Paginação● É a técnica empregada por quase todos os
computadores para implementar a memória virtual● As instruções executadas durante a execução de
um programa irão referenciar endereços de memória, como por exemplo
MOV REG, 1000– Solicita a cópia do conteúdo da posição de memória
RAM “1000” para o registrador “REG” da CPU
Sistemas [email protected]
Gerência de Memória
● Paginação● Em computadores sem memória virtual, endereços
presentes no código dos programas são “reais” e referenciam uma posição da memória RAM física– No exemplo anterior, a posição de memória RAM física
1000 seria copiada para o registrador REG existente na CPU do computador
Sistemas [email protected]
Gerência de Memória
● Paginação● Em computadores com memória virtual, endereços
presentes no código dos programas são chamados de endereços virtuais, e fazem parte do seu espaço de endereçamento virtual
Sistemas [email protected]
Gerência de Memória
● Paginação● Quando uma instrução tenta cessar um endereço
de memória (virtual) ele será repassado para um componente de hardware da CPU, chamado de MMU, que o converterá para um endereço real, da memória RAM física
Sistemas [email protected]
Gerência de Memória
● Paginação – Exemplo ● Em um computador fictício bastante simples cada
programa pode ocupar até 64Kb de memória– Contudo a memória RAM física é de 32Kb
● O espaço de endereçamento (ou memória virtual) de cada processo é dividida em “páginas”, neste exemplo, de 4Kb cada– Cada uma dessas páginas pode ou não estar na
memória RAM real da máquina
Sistemas [email protected]
Gerência de Memória
0 - 4kb4 - 8kb8 - 12kb12 - 16kb16 - 20kb20 - 24kb24 - 28kb28 - 32kb32 - 36kb36 - 40kb40 - 44kb44 - 48kb48 - 52kb52 - 56kb56 - 60kb60 - 64kb
0 - 4kb4 - 8kb8 - 12kb12 - 16kb16 - 20kb20 - 24kb24 - 28kb28 - 32kb32 - 36kb36 - 40kb40 - 44kb44 - 48kb48 - 52kb52 - 56kb56 - 60kb60 - 64kb
0 - 4kb4 - 8kb8 - 12kb12 - 16kb16 - 20kb20 - 24kb24 - 28kb
28 - 32kb
Memória VirtualProcesso “A”
Memória VirtualProcesso “B”
Memória RAM
XXXX
XXXXX
X
XXXX
XXXX
XXXX
XXX
Livre
Sistemas [email protected]
Gerência de Memória
● Paginação – Exemplo● A memória RAM real da máquina também é
dividida, em 8 páginas de 4k cada● Os processo “A” e “B” possuem, cada um, sua
própria memória virtual, com 16 páginas de 4k cada– Para cada um deles parte das páginas está “mapeada”
em uma parte da memória RAM real, mostrado na figura pelas setas
– Todo o restante de cada processo não está realmente na memória RAM, mas em um outro dispositivo como o disco ou na área de swap
Sistemas [email protected]
Gerência de Memória
● Paginação – Exemplo● Todas as instruções executadas por qualquer
processo, que façam qualquer tipo de referência à memória passam pela MMU do processador– A MMU conhece e gerencia o mapeamento da memória
virtual para a memória RAM real de todos os processos● Caso o processo “A” execute a instrução
MOV REG, 1000
● Será automaticamente “traduzida” pela MMU paraMOV REG, 21480
Sistemas [email protected]
Gerência de Memória
● Paginação – Exemplo● Contudo o que irá acontecer, caso o processo “B”
execute a instrução “ADD REG, 5000”– O endereço virtual 5000 está na segunda página da
memória virtual do processo “B”, mas está página atualmente não está na memória RAM
– Este evento é chamado de “falta de página” (page fault)– Neste momento, o processo “B” será bloqueado, e a
MMU, juntamente com o SO, irá tentar mapear esta página virtual do processo em uma página real da memória RAM que esteja livre
Sistemas [email protected]
Gerência de Memória
0 - 4kb4 - 8kb8 - 12kb12 - 16kb16 - 20kb20 - 24kb24 - 28kb28 - 32kb32 - 36kb36 - 40kb40 - 44kb44 - 48kb48 - 52kb52 - 56kb56 - 60kb60 - 64kb
0 - 4kb4 - 8kb8 - 12kb12 - 16kb16 - 20kb20 - 24kb24 - 28kb28 - 32kb32 - 36kb36 - 40kb40 - 44kb44 - 48kb48 - 52kb52 - 56kb56 - 60kb60 - 64kb
0 - 4kb4 - 8kb8 - 12kb12 - 16kb16 - 20kb20 - 24kb24 - 28kb
28 - 32kb
Memória VirtualProcesso “A”
Memória VirtualProcesso “B”
Memória RAM
XXXX
XXXXX
X
XXXX
XXXX
XXXX
XX
Sistemas [email protected]
Gerência de Memória
● Paginação – Exemplo● Contudo o que irá acontecer, caso o processo “B”
execute a instrução “ADD REG, 5000”– Neste exemplo, isto foi possível, pois existia uma página
da memória RAM real ainda livre → “12 - 16Kb”
– Após a MMU realizar este novo mapeamento, e copiar o conteúdo da página (por exemplo do swap ou disco) para a memória RAM, o processo “B” será desbloqueado e poderá continuar a executar
– A instrução “ADD REG, 5000” será traduzida para “ADD REG, 12292”
Sistemas [email protected]
Gerência de Memória
● Paginação – Exemplo● Uma situação mais “trabalhosa”, para o SO e MMU
irá ocorrer na próxima falta de página, pois agora toda a memória RAM real está “alocada”– O SO e MMU terão que “escolher”alguma página que já
esteja na RAM e retira-la, copiado-a para a área de SWAP, e abrindo espaço para um novo mapeamento
– A decisão de qual página sairá da memória RAM é feita por um “algoritmo de substituição de páginas” sendo ele de vital importância para o funcionamento dos SOs “reais”
Sistemas [email protected]
Gerência de Memória
0 - 4kb4 - 8kb8 - 12kb12 - 16kb16 - 20kb20 - 24kb24 - 28kb28 - 32kb32 - 36kb36 - 40kb40 - 44kb44 - 48kb48 - 52kb52 - 56kb56 - 60kb60 - 64kb
0 - 4kb4 - 8kb8 - 12kb12 - 16kb16 - 20kb20 - 24kb24 - 28kb28 - 32kb32 - 36kb36 - 40kb40 - 44kb44 - 48kb48 - 52kb52 - 56kb56 - 60kb60 - 64kb
0 - 4kb4 - 8kb8 - 12kb12 - 16kb16 - 20kb20 - 24kb24 - 28kb
28 - 32kb
Memória VirtualProcesso “A”
Memória VirtualProcesso “B”
Memória RAM
XXXX
XX
XX
X
XXXX
XXXX
XXXX
XX
X
Swap