Memória virtual
Origem: Wikipédia, a enciclopédia livre.
A memória virtual consiste num conjunto de recursos de hardware e software que possui três funções básicas[1] e para assegurar que cada processo (aplicação) tenha o seu próprio espaço de endereçamento, começando em zero (problema de recolocação), proteção de memória, para impedir que um processo utilize um endereço de memória que não lhe pertença, possibilitar que uma aplicação utilize mais memória do que a fisicamente existente (essa é a função mais conhecida)[2].
Todos os computadores modernos, de uso genérico, utilizam memória virtual para executar a mais simples das aplicações, tais como processadores de texto, folhas de calculo, jogos, leitores multimédia, etc. Os sistemas operacionais mais antigos, como o DOS e o Microsoft Windows de 1980[3], ou os mainframes da década de 1960, geralmente não tinham a funcionalidade da memória virtual, com as excepções notáveis do Atlas B5000 e o Apple Lisa.
Índice |
[editar] História
A Memória Virtual, foi inicialmente criada para possibilitar a um programa ser executado em um computador com uma quantidade de memória principal (física) menor que o tamanho de todo o espaço do utilizado pelo próprio programa[4]. Ou seja, o espaço ocupado pelas instruções, dados e pilha de execução de um programa pode ser maior que o espaço em memória principal disponível. Por exemplo, um programa que ocupa um total de 64 MiB pode ser executado em um computador com apenas 32 MiB disponíveis para o programa, bastando que o sistema operacional se encarregue de manter sempre na memória principal as partes adequadas à execução naquele momento[5].
A memória virtual foi desenvolvido por volta de 1959-1962, na Universidade de Manchester para o Computador Atlas, terminado em 1962[6]. A ideia é atribuída a John Fotheringham[7], no entanto, Fritz-Rudolf Güntsch, um cientista alemão, pioneiro da ciência computacional e, mais tarde, o criador do mainframe Telefunken TR 440, alega ter inventado o conceito em 1957, na sua tese de doutorado Logischer Entwurf eines digitalen Rechengerätes mit mehreren asynchron laufenden Trommeln und automatischem Schnellspeicherbetrieb (Conceito lógico para um sistema digital computacional com múltiplos sistemas assíncronos de armazenamento e modo de memória rápida automática).
[editar] Funcionamento
Nos sistemas modernos, a memória física é dividida em blocos de bytes contíguos, em geral com 4 KiB ou 8 KiB de tamanho, denominados page frames. Por sua vez, o espaço de memória de um processo é dividido em páginas (contendo as instruções e dados do programa) que são fisicamente armazenadas nas page frames e possuem o mesmo tamanho.
Um endereço virtual é gerado durante o processamento da aplicação e encaminhado para a unidade de gerenciamento de memória (MMU Memory Management Unit), um dispositivo do processador, cuja função é transformar o endereço virtual em físico e solicitar este último endereço ao controlador de memória. A conversão de endereços virtuais em físicos baseia-se em tabelas de páginas que são estruturas de dados mantidas pelo sistema operativo.
As tabelas de páginas descrevem cada página da aplicação (num sistema em execução, existe pelo menos uma tabela de páginas por processo). Cada tabela é indexada pelo endereço virtual e contém o endereço físico da moldura correspondente ou a indicação que a página está em um dispositivo de armazenamento secundário (normalmente um disco rígido).
Como o acesso à tabela de páginas é muito lento, pois está em memória, a MMU possui uma cache associativa chamada buffer de tradução de endereços (TLB Translation Lookaside Buffer) que consiste em uma pequena tabela contendo os últimos endereços virtuais solicitados e seus correspondentes endereços físicos.
[editar] Referências
- John L. Hennessy, David A. Patterson, Computer Architecture, A Quantitative Approach (ISBN 1-55860-724-2)
- Virtual Memory Secrets by Murali
- Notas
- ↑ TANENBAUM, Andrew S. Sistemas operacionais modernos. Rio de Janeiro: LTC. 1999.
- ↑ HENESSY, John L.; PATTERSON, David A. Arquitetura de computadores: uma abordagem quantitativa. Rio de Janeiro: Campus, 2003.
- ↑ Windows Version History. Microsoft (Last Review: July 19, 2005). Página visitada em 2008-12-03.
- ↑ Denning (1997). "Before Memory Was Virtual" (PDF). In the Beginning: Recollections of Software Pioneers.
- ↑ TANENBAUM, Andrew S.; WOODHULL, Albert S. Sistemas operacionais: projeto e implementação. Porto Alegre: Bookman. 1999.
- ↑ http://www.computer50.org/kgill/atlas/atlas.html Atlas design includes virtual memory
- ↑ "Dynamic storage allocation in the Atlas computer, including an automatic use of a backing store", Communications of the ACM, vol. 4, issue 10, pp. 435-436 - outubro de 1961
[editar] Ver também
[editar] Ligações externas
This article was originally based on material from the Free On-line Dictionary of Computing, which is licensed under the GFDL.

