Sie sind auf Seite 1von 2

Funcionamento da memria virtual Introduo

Esse artigo apenas um teste para aqueles que querem ver como funciona a memria virtual no Linux/Windows. No me responsabilizo por quaisquer danos no seu computador, nem recomendo essa prtica para atos de vandalismo. Tanto no Linux quanto no Windows o conceito de memria virtual est presente. A memria virtual foi criada porque, obrigatoriamente, um programa necessita passar pela memria principal para ser executado, e como quase sempre no possvel ter memria RAM suficiente para executar todo o programa da memria, necessrio executar esse programa em partes. A memria virtual uma rea de troca de dados que serve como uma extenso da memria principal, ou seja, a memria RAM. Por exemplo, se voc possui 64 mb de RAM livre e quer rodar um programa que ocupa 70 mb de RAM, dever carregar os primeiros 64 mb para rodar o incio do programa e os 6 mb restantes sero armazenados na memria virtual, para depois serem copiados para a memria principal a fim de serem executados. Isso ocorre, claro, medida que a execuo do programa for se desenrolando e o programa em questo (ou outros programas) liberarem a memria que ocupavam para o uso de outro programa. Dessa forma, temos um contnuo fluxo de dados entre o disco rgido (onde se localiza a memria virtual) e a memria RAM. Como o disco rgido possui uma movimentao mecnica de cabeas de leitura e gravao, ele considerado lento se comparado dispositivos de memria, cujo acesso s informaes totalmente eletrnico. por isso que pouca memria RAM implica em usar muita memria virtual, que por sua vez, implica em usar muita leitura/escrita no disco rgido, que por sua vez implica em lentido geral no sistema.

Exemplo prtico: Um programa simples


Este exemplo utiliza um pequeno programa escrito em C para mostrar como a memria RAM ocupada e depois a memria virtual ser usada. Voc perceber isso quando ver a luz de leitura/escrita em disco acesa constantemente no seu HD. Depois de um tempo o computador trava, restando a nica possibilidade de resetar a mquina para voltar ao normal. Execute esse cdigo sob sua responsabilidade! De preferncia, salve todas as suas aplicaes e feche-as. Vamos ao cdigo, muito simples: #include <stdio.h> int main() { int i; for (i=0 ; i < 10000 ; i++) {

system("./a.out &"); } }

Como funciona o programa


Esse exemplo especfico para ser compilado em Linux, podendo ser adaptado para qualquer sistema que suporte a linguagem C, substituindo a linha - system("./a.out"); pelo arquivo gerado no compilador para seu sistema operacional. Quando voc compilar esse arquivo usando o gcc ou cc do Linux, ele ir gerar por default um arquivo executvel chamado "a.out". Mas o que o programa faz chamar a si mesmo 10 mil vezes. E o que o programa chamado faz? Chama a si mesmo mais 10 mil vezes! Temos uma progresso geomtrica absurda que em poucos segundos ir lotar a memria RAM e a memria virtual do computador, travando totalmente a mquina.

Das könnte Ihnen auch gefallen