Diferenças entre edições de "Memória virtual"

1 230 bytes removidos ,  02h03min de 13 de junho de 2015
Ajustes
(Ajustes)
* (i) '''realocação''' (ou recolocação), para assegurar que cada processo ([[Software_aplicativo|aplicação]]) tenha o seu próprio espaço de endereçamento, começando em zero;
* (ii) '''proteção''', para impedir que um processo utilize um endereço de memória que não lhe pertença;
* (iii) '''paginação''' (''paging'') ou '''troca''' (''[[swapping]]''), que possibilita a uma aplicação utilizar mais memória do que a fisicamente existente (essa é a função mais conhecida).
 
Simplificadamente, um usuário ou programador vê um espaço de endereçamento virtual, que pode ser igual, maior ou menor que a memória física (normalmente chamada memória DRAM - ''Dynamic Random Access Memory'').
 
A memória virtual deixou os programadores despreocupados com quanto de memória seu programa irá precisar para rodar no computador e se o respectivo programa poderia rodar com outros sem travar, podendo o programador se preocupar mais com a tarefa de programação do que com quanto o programa irá gastar de memória. <ref name="tanenbaum"/>
 
 
== Paginação para principiantes ==
Como o acesso à tabela de páginas é muito lento, pois está em memória, a MMU possui uma ''[[cache]]'' associativa chamada ''[[Buffer_(ciência_da_computação)|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.
 
=== [[Linux (núcleo)|Linux]] em 32 bits ===
Na arquitetura x86 de 32 bits, o [[Linux (núcleo)|Linux]] pode endereçar até 4 [[GiB|GB]] de memória virtual (também chamado de espaço de endereçamento linear).<ref>GORMAN, Mel. '''Understanding the Linux virtual memory manager'''. Cap. 4. Upper Saddle River: Prentice Hall, 2004.</ref> Este espaço é dividido em dois: o espaço do núcleo (''kernel space'') e o espaço do usuário (''user space''). O primeiro é único e protegido das aplicações comuns, e armazena, além do próprio código do núcleo, uma estrutura que descreve toda a memória física; este espaço é limitado a um gigabyte (1024 [[MiB|MB]]). Cada aplicação recebe um espaço de endereçamento de até 3 GiB para armazenar o código e os dados do programa.
 
Caso a memória física seja menor do que a necessária para conter todas as aplicações, o Linux pode alocar espaço em meios de armazenamento diversos (disco rígido, dispositivo de rede e outros). Este espaço é tradicionalmente conhecido como espaço de troca (''[[Swapping|swap space]]''), embora o mecanismo adotado seja a paginação.
 
=== [[Windows]] em 32 bits ===
Analogamente ao Linux, as versões atuais do [[Windows]] de 32 bits usam um espaço de endereçamento de 4 GiB divididos em duas partes. Por padrão, o Windows reserva 2 GiB para o núcleo e permite que cada aplicação use até 2 GiB. Entretanto, é possível alterar essa configuração, e permitir que uma aplicação use até 3 GiB. Neste caso, obviamente, o espaço do núcleo será reduzido para um [[gibibyte|gigabyte]] .<ref>RUSSINOVICH, Mark E.; SOLOMON, David A. '''Microsoft Windows internals - Microsoft Windows Server 2003, Windows XP, and Windows 2000'''. 4. ed. Cap. 7. Redmond: Microsoft Press. 2005.</ref>
 
Diferentemente do Linux, o Windows usa apenas arquivos para paginação (''paging files''). Pode usar até 16 desses arquivos, e cada um pode ocupar até 4095 MiB de espaço em disco.
 
== Resumo ==
A memória virtual ou arquivo de paginação do Windows, é um aplicativo que permite ao sistema operacional obter mais memória RAM do que o computador possui, ou seja, se o computador possui pouca memória, o sistema utiliza um arquivo chamado Arquivo de Paginação que é um pequeno arquivo, alocado no HD, utilizado como memória RAM. Este processo, evita que em horários de pico, o sistema trave ou fique extremamente lento. Porém, como o arquivo fica alocado no HD, o sistema não vai ficar tão rápido quanto utilizando a memória real do computador, já que a leitura do HD é muito mais lenta do que a leitura da memória RAM. Assim se o computador fica por muito tempo neste estado (utilizando o arquivo de paginação) é recomendável aumentar a memória RAM.
 
No [[Linux]], a memória virtual também existe, mas ela é dimensionada quanto ao seu tamanho na instalação e somente poderá ser mudada se o disco rígido for reparticionado para utilizar uma partição maior de [[Swapping|swap]] (que é assim chamado a memória virtual do Linux), e assim, deixando a swap maior.
 
É recomendado utilizar como memória virtual de 2x a 3x a quantidade que o computador tiver de memória RAM.
 
A memória virtual deixou os programadores despreocupados com quanto de memória seu programa irá precisar para rodar no computador e se o respectivo programa poderia rodar com outros sem travar, podendo o programador se preocupar mais com a tarefa de programação do que com quanto o programa irá gastar de memória. <ref name="tanenbaum"/>
 
{{Referências}}
* [[Computador]]
* [[Gerenciamento de memória]]
* [[Swapping]]
 
== Ligações externas ==