Fundamentos da Arquitetura de Computadores Memória Virtual Prof. André Renato 1º Semestre / 2012 Memória Virtual Como vimos, nem sempre a quantidade total de memória que um computador consegue endereçar é efetivamente instalada e utilizada; A memória virtual foi desenvolvida para que os programas possam utilizar mais memória principal do que de fato existe; Memória Virtual Memória virtual – separação da memória lógica do usuário da memória física ◦ somente uma parte do programa precisa estar na memória para execução; ◦ espaço de endereçamento lógico pode ser muito maior que espaço de endereçamento físico; ◦ permite o compartilhamento de espaços de endereços por vários processos; ◦ compartilhamento possibilita criação mais eficiente de processos. Memória Virtual Em um sistema de memória virtual, o endereço de memória gerado pelo programa para acessar uma variável, por exemplo, é um endereço virtual, sendo diferente do endereço real usado para o acesso a memória principal. Os possíveis endereços virtuais que podem ser gerados pelo programa formam o espaço de endereçamento virtual, enquanto a faixa de endereços na memória principal constitui o espaço de endereçamento real. Memória Virtual Embora sob o ponto de vista do programa as instruções e dados estejam armazenados no espaço de endereçamento virtual, na realidade eles continuam armazenados na memória principal, representada pelo espaço de endereçamento real. Esta diferença entre endereçamento virtual e real utiliza um mecanismo que faz a correspondência entre o endereço virtual gerado pelo programa e o endereço real que será usado para acessar a memória principal, o gerenciador de memória virtual, ou DAT (Dynamic Address Translator). Memória Virtual Memória Virtual Como o espaço de endereçamento virtual é bem maior que o espaço de endereçamento real, pode acontecer de um bloco de dados pedido pelo programa não estar posicionado na MP; Neste caso, o bloco de dados ainda está na MS e será preciso trazê-lo para a MP; A operação de movimentação dos blocos é chamada de swapping e consiste em uma leitura ao disco (lenta); Memória Virtual Memória Virtual Blocos de memória podem ser organizados de duas formas: em segmentos ou páginas. ◦ O segmento pode ser formado por um bloco de informações logicamente relacionadas (por exemplo, os dados armazenados em uma matriz); os segmentos podem ter tamanho variável. ◦ Uma página é um bloco de dados de tamanho fixo e não segue nenhuma coesão lógica, isto é, os dados podem não ter relação entre si. Memória Virtual O DAT possui uma pequena memória interna chamada TLB (Translation Lookaside Buffer), que armazena os pares de endereços virtual/principal acessados recentemente, como uma memória cache. No acesso a uma posição de memória virtual, se o dado requerido não possui um registro relacionando com a memória principal, o bloco de dados também não se encontra na memória principal. Essa ausência de bloco é denominada falha de página ou falha de segmento. Memória Virtual Ao ocorrer uma falha o DAT gera uma interrupção, transferindo o controle do processador para o sistema operacional, para que este transfira o bloco de dados referenciado da memória secundária para a memória principal. Após a transferência do bloco de dados ser concluída, o controle do processador retorna ao programa em execução, exatamente para o ponto onde foi interrompido, agora com os dados referenciados presentes na memória principal. Memória Virtual Memória Virtual Com a utilização da memória principal, não é necessário que todas as instruções e dados de um programa permaneçam na memória principal durante a execução do programa, blocos são transferidos da memória secundária para a principal a medida que forem referenciados. É importante ressaltar que todo o mecanismo de memória virtual funciona de forma totalmente transparente para o programa, e mais importante, para o programador que o desenvolveu. Memória Virtual Paginação sob demanda: ◦ Uma página é colocada na memória somente quando se necessita dela; ◦ Menos E/S para carregamento e swap de programas; ◦ Menos memória gasta com cada processo; ◦ Resposta mais rápida; ◦ Maior número de usuários. Memória Virtual O que acontece se não existir espaço livre para a página? ◦ Substituição de página– encontra uma página que está na memória mas não está sendo utilizada e a coloca no disco. ◦ algoritmo utilizado deve fornecer menor número de faltas de páginas. ◦ A mesma página pode ser trazida para a memória várias vezes. Memória Virtual O que pode correr se o algoritmo escolhido for ruim, ou se houver pouco espaço para a memória virtual? ◦ Se um processo não possui páginas suficientes para ser executado na memória, a taxa de falta de páginas pode se tornar muito alta. ◦ baixa utilização de CPU ◦ sistema operacional acha que precisa aumentar o nível de multiprogramação ◦ permite que outro processo entre para ser executado causando mais faltas de página Memória Virtual Thrashing: um processo está ocupado realizando a troca de páginas entre a memória e o disco. A utilização da MV deve portanto ser feita com moderação. ◦ Uma MV muito grande, pode fazer com que muitos blocos fiquem em disco, além de ocupar muito espaço no HD; ◦ Uma MV muito pequena pode fazer com que o desempenho da máquina seja bem menor (principalmente com muitos programas);