Sistema Operacionai_memoriaVirtual
Pesquisas Acadêmicas: Sistema Operacionai_memoriaVirtual. Pesquise 862.000+ trabalhos acadêmicosPor: nenoso • 24/5/2013 • 2.621 Palavras (11 Páginas) • 425 Visualizações
AULA 14 - Memória Virtual
A idéia básica da memória virtual é permitir que programas muito maiores que a memória
disponível possam ser executados. Para isso, em 1961 Fotheringham criou o método conhecido
como memória virtual. Com o uso dessa memória o SO mantém as partes ativas do programa na
memória e o restante em disco, sendo carregadas ou removidas da memória de acordo com as
necessidades.
Memória virtual é uma técnica que se utiliza da memória secundária para produzir o efeito prático
de aumentar significativamente o espaço de endereçamento disponível aos programas. Essa técnica
não depende do tamanho da memória principal – que continua sendo limitado – para ser
implementada. A memória secundária (normalmente um disco rígido) passa a servir como uma
espécie de extensão da memória principal, armazenando a maior parte dos programas e dados
carregados para execução. À memória principal são transferidas por vez apenas algumas partes
destes programas e dados, essenciais ao momento pontual da execução.
Deste modo, cria-se dois espaços de endereçamento de memória: o espaço de endereçamento
virtual e o espaço de endereçamento real. Endereços virtuais são os endereços gerados pelos
compiladores e linkers na implementação dos programas. Eles representam o espaço completo que
os programas necessitam para serem carregados, isto é, o tamanho de memória que efetivamente
ocupam. No entanto, a memória real – ou memória principal (RAM – Random Access Memory) –
pode ser bastante limitada, possuindo um espaço de endereçamento real às vezes menor até mesmo
que um único programa. Um endereço real corresponde a uma célula física de endereçamento
presente na memória principal da máquina.
Obviamente, apenas parte das aplicações carregadas no espaço de endereçamento virtual poderá
ocupar a memória real num certo instante. Por outro lado, somente os dados carregados na
memória principal são processados pela CPU. Como várias aplicações podem estar sob execução,
concorrendo pela utilização do processador, uma solução encontrada foi dividir o espaço total de
endereçamento dos programas em pequenos blocos de tamanho fixo, as chamadas páginas de
memória. A implementação dessa estratégia constitui o mecanismo de paginação. Outra
alternativa é dividir o código de uma aplicação com base em critérios lógicos, ou seja,
modularizando o programa de acordo com a função dos diversos trechos de código identificados.
Segmentação é o nome que se dá a esta segunda estratégia de particionamento de código, em que
Sistemas Operacionais
Prof. Dr. Jean M. Laine
2
os segmentos gerados possuem tamanhos independentes e variáveis. Ambos os mecanismos são
importantes, sobretudo em ambientes multiusuários e multiprogramáveis. Conforme o momento de
execução, parte dos dados (working set) são transferidos temporariamente para a memória
principal a fim de serem processados, retornando à memória secundária quando solicitados pelo
sistema operacional, o qual é responsável pelo gerenciamento da memória.
Figura 1. Endereços virtuais x físicos. A tradução é feita por uma tab. de páginas.
Paginação
A técnica denominada paginação é utilizada na maioria dos sistemas com memória virtual. Como
sabemos, os endereços gerados pelos programas são denominados endereços virtuais e constituem
o espaço de endereçamento virtual. Em computadores que não tem memória virtual, os endereços
virtuais são idênticos aos endereços físicos. Por outro lado, quando usamos memória virtual estes
endereços diferem. Portanto, o endereço gerado pelo programa não pode ser colocado diretamente
no barramento do sistema para acessar uma posição qualquer de memória. Assim, a MMU mapeia
os end. virtuais em físicos.
Sistemas Operacionais
Prof. Dr. Jean M. Laine
3
A memória física é dividida em blocos de tamanho fixos denominados molduras de páginas (page
frames). Já a memória lógica é dividida em blocos de tamanho fixos denominados páginas
(pages). As páginas e as molduras de páginas são sempre do mesmo tamanho.
Quando um programa tenta usar uma página virtual que não está mapeada é gerada uma
interrupção da CPU para o sistema operacional a fim de buscar esta página na memória. Esta
interrupção (trap) é denominada falta de página (page fault). As ações desencadeadas são: o
sistema operacional escolhe uma moldura de página (page frame) pouco usada e a salva em disco.
Em seguida, carrega a página virtual referenciada pela instrução na moldura de página que foi
liberada. Feito isso o sistema operacional pode reinicializar a instrução causadora da interrupção.
Tabela de Páginas
A
...