Memória virtual Sistema de memória virtual - aquele onde os endereços usados pelos programas podem ser distintos dos endereços físicos da memória central Os endereços que os programas usam são endereços virtuais Os endereços que são usados para aceder às células de memória são endereços reais (físicos) Sempre que o programa refere um endereço (virtual) este é convertido para um endereço físico e é este que é usado para garantir acesso a uma célula de memória específica Para este processo ser eficiente é preciso recorrer a hardware específico Sistemas Segmentados Segmento lógico maior que segmento físico livre menor que segmento físico livre igual ao segmento físico livre Conversão de endereços Endereço lógico = (segmento, deslocamento) Endereço físico = (registo base + segmento, deslocamento) Verificar se resultado está dentro do segmento Necessário recompactar a memória Exemplo: 80286 (code, data, stack, extra - segmentos) Sistema operativo gere os registos relevantes Page 1 1
Segmentação no 8086 Há 4 registos de segmento CS, DS, SS, ES CS - usado para guardar código do processo DS - usado para guardar os dados estáticos SS - usado para guardar a pilha (dados das funções, passagem de argumentos, ) ES usado para guardar os dados dinâmicos (alloc, free, ) Quando um novo processo vai ser executado o sistema operativo coloca os segmentos do novo processo na memória e actualiza os valores dos 4 registos de segmento Memória Virtual Paginada Page 2 2
Objectivos Gerais Programas não estarem limitados pela memória física do computador Poderem ser transportados de computador para computador Não necessitarem de ser alterados quando o hardware (de memória primária ou secundária) do computador muda Poderem usar mais memória (virtual) que a memória física existente Poderem adaptar-se, o mais possível, ao ambiente de execução de um dado momento Se houverem muitos processos ou poucos em execução sob supervisão do sistema operativo Memória virtual Memória usada pelos programas e vista pelos programadores Espaço de endereçamento virtual dos processos visto como conjunto de endereços virtuais contíguo ou não Zonas de endereçamento virtual podem ser partilhados entre processos, por exemplo: Mesmo programa ser executado em vários processos Bibliotecas comuns partilhadas por vários programas Quando um programa está bloqueado (por intervalos de tempo mais ou menos longos) não precisam de estar a ocupar espaço na memória principal (recurso escasso e caro) Page 3 3
Memória Virtual Paginada Espaço de endereçamento virtual está dividido em segmentos iguais chamados páginas Memória física está dividida em páginas (de igual dimensão) Valores típicos entre 512bytes e 8kbytes Endereço = (nº página + deslocamento) nº página deslocamento Memória Virtual Paginada Exemplo Computador com 28 bits de endereçamento da memória física (256 Mbytes) Programa que usa 8 Mbytes de memória Páginas de 1 kbyte 256 k páginas na memória central 8k páginas em uso pelo programa Processo precisa de uma tabela de páginas com 8k entradas Page 4 4
Sobre a Dimensão das Páginas (aspectos a considerar) Páginas Grandes Espaço desaproveitado Pouco eficiente trazer páginas de disco Pouco eficiente levar páginas para disco Tabelas de páginas curtas Páginas Pequenas Menos espaço desaproveitado Trocas com disco eficientes Tabelas de páginas grandes Paginação nº página deslocamento nº página deslocamento Tabela de páginas (1 por processo) Page 5 5
Hardware de Tradução de Endereços A necessidade de pesquisar a tabela de páginas para todos os endereços obriga a que deva ser uma operação muito eficiente Dimensão da tabela de páginas inviabiliza que todas estejam no hardware de tradução As entradas mais usadas ficam numa cache MMU - Memory Management Unit Faltas de Página Um dos objectivos da memória virtual é dar ao programador um espaço de endereçamento maior que a memória física, mas Nem todas as páginas cabem na memória Nem todas as páginas fazem falta na memória Tabela de páginas contêm: Endereço em memória física de uma página; ou Local onde esta se encontra em disco Se o sistema precisa de uma página que não está em memória física dá-se uma falta de página (pagefault) O hardware gera uma interrupção que é tratada pelo sistema operativo Page 6 6
Tabela de Páginas de um processo (exemplo) 1 2 3 4 5 6 7 423 424 546 23 54 100 D (234,12,2) 6 D (234,12,3) D (234,13,7) 22 MMU Como a tabela de páginas pode ser muito grande só parte da tabela de páginas está contida na MMU Assim, quando a MMU é consultada pode haver uma Page fault Interrupção de indicação de que um endereço de página não está contido no hardware de cache Interrupção é tratada pelo Gestor das Interrupções e o respectivo interrupt handler (do sistema operativo) traz a página em falta Pode ser muito penalizador para a execução eficiente de um processo se existirem muitas faltas de página Page 7 7