630 likes | 788 Views
Memória Virtual. O problema é que temos um espaço limitado de memória RAM e, cada vez mais, os aplicativos consomem partes maiores dela. E o que o processador faz quando a memória RAM acaba? Muito simples: utiliza a memória virtual. Memória Virtual.
E N D
Memória Virtual O problema é que temos um espaço limitado de memória RAM e, cada vez mais, os aplicativos consomem partes maiores dela. E o que o processador faz quando a memória RAM acaba? Muito simples: utiliza a memória virtual.
Memória Virtual • A memória virtual é uma espécie de arquivo que é criado no computador e o processador utiliza para armazenar dados que ele costuma deixar na memória RAM. É como se ele simulasse a memória RAM dentro do seu HD, por isso que se chama memória virtual.
Memória Virtual • Memória Virtual é um espaço variável e reservado no disco onde o Sistema Operacional continua armazenando os dados que não couberam na memória RAM. • Na memória RAM ficam os dados temporários usados enquanto o computador está ligado, se ela enche, os dados vão sendo gravados no HD. • O desempenho de processamento é menor, pois o HD é muito mais lento que a memória.
Memória Virtual • O sistema operacional é capaz de executar aplicações mesmo que a soma de todos os programas em execução simultânea supere a da memória RAM instalada no computador.
SO - Memória • O SO move ao disco rígido o conteúdo da memória RAM, liberando espaço para novas aplicações,se esses dados movidos ao HD voltem a ser necessários. • O SO automaticamente realiza a operação inversa, carregando-os na memória RAM, razão pela quais muitos chamam este tipo de procedimento de troca de memória.
Funções – Memória Virtual Relocação (ou recolocação), para assegurar que cada processo tenha o seu próprio espaço de endereçamento. Proteção, para impedir que um processo utilize um endereço de memória que não lhe pertença. 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).
Memória Virtual No Windows recebe o nome de: PAGE FILE No Linux recebe o nome de: SWAP
Conceito- Swap • O SO escolhe um programa residente que é levado da memória para o disco (swap-out ) retornando posteriormente para a memória (swap-in).
Conceito - Paginação • Permite que o programa possa ser espalhado por áreas não contíguas de memória.
Conceito - Segmentação • Técnica de gerência de memória onde programas são divididos em segmentos de tamanhos variados cada um com seu próprio espaço de endereçamento.
Swap • Acontece toda vez em que um processo esgota seu um certo tempo e surge outro processo na fila com uma prioridade maior que a dele. • O tempo no entanto deve ser relativamente grande, pois a comunicação memória e disco rígido consome certo tempo,
Swap • O disco rígido é mais lento que o armazenamento em memória principal, e o processo consiste de trazer um processo ao disco e levar outro a memória, essa troca de não deve ser realizado em espaço de tempo muito curto.
Swap • Em sistemas UNIX particularmente o processo de swap é desabilitado por padrão e só usado quando a memória está realmente comprometida, isto se deve ao tempo de troca que é alto.
Paginação • Na paginação a memória física é dividida em blocos de bytes contíguos denominados molduras de páginas (Page frames), geralmente com tamanho de 4 KiB (arquiteturas x86 e x86-64).
Paginação • O espaço de memória de um processo (contendo as instruções e dados do programa) é dividido em páginas que são fisicamente armazenadas nas molduras e possuem o mesmo tamanho destas.
Novidade! • O kibibyte é um múltiplo do byte. 1 kibibyte 1024bytes. O símbolo da unidade para o kibibyte é KiB. A unidade foi criada pelo Comissão Eletrotécnica Internacional (IEC), em 1999.
kibibyte Foi aceite para ser usado por todos os principais padrões organizações. Ele foi projetado para substituir o kilobyte usada em alguns contextos de ciência da computação, que conflita com a definição do prefixo quilo.
Segmentação Na segmentação existem vários espaços de endereçamento para cada aplicação (os segmentos). Neste caso, o endereçamento consiste em um par ordenado [segmento:deslocamento], onde o deslocamento é a posição do byte dentro do segmento.
Diferenças • A principal diferença entre a paginação e a segmentação é a alocação da memória de maneira não fixa, a alocação depende da lógica do programa.
Resumindo • Na arquitetura x86 (32 e 64 bits), são usadas a segmentação e a paginação. O espaço de endereçamento de uma aplicação é dividido em segmentos, onde é determinado um endereço lógico, que consiste no par [segmento:deslocamento].
Resumindo • O dispositivo de segmentação converte esse endereço para um espaço de endereçamento linear (virtual). • Finalmente, o dispositivo de paginação converte o endereço virtual para físico, localizando a moldura de página que contém os dados solicitados
MMU -Memory Management Unit • O endereço virtual é encaminhado para a unidade de gerenciamento de memória (MMU -Memory Management Unit). • MMU - 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.
Tabela de Páginas • 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 Operacional.
Tabela 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 ou a indicação de que a página está em um dispositivo de armazenamento secundário.
Tabela de Páginas • Como o acesso à tabela de páginas é muito lento, pois está em memória, a MMU possui uma memória(cache) associativa chamada buffer de tradução de endereços (TLB - TranslationLookaside Buffer).
TLB - TranslationLookaside Buffer • TLB - Consiste em uma pequena tabela contendo os últimos endereços virtuais solicitados e seus correspondentes endereços físicos.
Linux em 32 Bits Na arquitetura x86 de 32 bits, o Linux pode endereçar até 4 GB de memória virtual. Este espaço é dividido em dois: o espaço do núcleo e o espaço do usuário. • Kernel space - É único e protegido das aplicações comuns, e armazena, uma estrutura que descreve toda a memória física; este espaço é limitado a 1 GB.
Linux em 32 Bits • User space - Cada aplicação recebe um espaço de endereçamento de até 3 GB. • Caso a memória física seja menor do que a necessária, o Linux pode alocar espaço em meios de armazenamento diversos (disco rígido, dispositivo de rede e outros).
Linux em 32 Bits • Este espaço é tradicionalmente conhecido como espaço de troca (swap space), embora o mecanismo adotado seja a paginação.
Windows em 32 Bits • Na arquitetura x86 de 32 bits, o Windows pode endereçar até 4 GB de memória virtual, dividido em duas partes. • Por padrão, o Windows reserva 2 GB para o núcleo e para as aplicações até 2 GB. Entretanto, é possível alterar essa configuração, podendo usar até 3 GB.
Windows em 32 Bits • 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 MB de espaço em disco.
Atenção! • Páginas acessadas com menos frequência na RAM vão para disco (para o Pagefile.sys ), dando lugar à uma outra página prioritária no momento.
Atenção! • Quando a aplicação finalmente acessar o dado que está naquela página agora em disco, o sistema aloca espaço na RAM para trazer de volta a página. Isso pode resultar em outras páginas que estavam em RAM a serem paginadas para o disco.
Resumindo... • No Linux a memória virtual é dimensionada quanto ao seu tamanho na instalação e não poderá mais ser mudada. • Somente poderá ser mudado se o disco rígido for reparticionado novamente para utilizar uma partição maior de swap. Assim deixando a swap maior você terá que diminuir a raiz.
Resumindo... • A memória virtual também é chamado de arquivo de paginação. Recomenda-se que se use 2x a 3x de memória virtual do que você tiver de memória RAM, mas não siga isso a risca, pois, se você tiver um computador com memória de 4 GB.
Resumindo... • No Windows o usuário tem livre arbítrio ou Windows escolher qual é a melhor opção de quantidade de memória RAM,mas geralmente o Windows por si só pega pouca memória RAM. • O usuário pode ainda escolher de quanto quer usar de seu disco rígido para memória virtual, ou seja.
Resumindo... • A memória virtual deixou os programadores despreocupados com quanto de memória seu programa irá precisar, pois a memória virtual é muito maior do que os pentes de memória RAM, podendo o programador se preocupar mais com a tarefa de programação.
Memória Virtual Por que que a memória RAM é mais cara? • Não seria mais fácil simplesmente utilizar o HD para armazenar os dados?
Memória Virtual • Porque a memória virtual é extremamente mais devagar do que a memória RAM. Dessa forma se computador dispor de pouca memória RAM e precisar usar a memória virtual para armazenar dados o desempenho será comprometido
Espaço de Kernel e o Espaço do Usuário • Compactar a área do kernel pode causar problemas, como restringir o número de usuários que podem se conectar simultaneamente ou o número de processos que podem ser executados. Um espaço do usuário menor significa que o programador do aplicativo tem menos espaço para trabalhar.
Só mais uma coisa: utilize o mesmo valor em "Tamanho inicial" 400 e "Tamanho final" 400, por exemplo. Isso evita que o arquivo fique fragmentado e o sistema consegue acessá-lo de forma mais eficiente...