170 likes | 341 Views
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;
E N D
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 • 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 • 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 (TranslationLookaside 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 • 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);