Se você vem acompanhando o MicroCosmo desde o início lembra que,
para o computador, os dados com os quais trabalhamos (por exemplo,
esse texto que estou escrevendo agora ou a carta de amor que mencionamos
há algumas semanas) não passam de bytes que ocupam certas posições
de memória RAM. E sabe que esses dados são processados pelos programas,
que consistem em uma série de instruções executadas seqüencialmente,
também representadas por bytes que ocupam outras tantas posições
de memória RAM. Ou seja: apenas manipulando bytes, que são conjuntos
de oito bits, ou dígitos binários, nossos micros podem fazer milagres.
O problema é que esses bytes somente permanecem na memória RAM enquanto
o micro estiver ligado, desaparecendo para sempre toda a vez que
se desliga a máquina.
Vamos
retroceder algumas semanas e lembrar daquela carta de amor, surpreendendo
seu autor no ponto em que ela, já escrita e impressa, ainda permanece
na memória RAM sob a forma de uma sucessão de bytes cheios de paixão.
Se, nesse momento, o autor desligar a máquina e mais tarde desejar
imprimir uma nova cópia, terá que digitar todo o texto de novo.
A não ser que consiga uma forma de “guardar” esses bytes em algum
lugar e depois descobrir um jeito de retirá-los de onde os guardou
para repô-los na memória RAM.
Ora,
mas já vimos que usando um bocado de tecnologia e aproveitando-nos
das propriedades eletromagnéticas da velha física, podemos usar
as superfícies magnéticas que recobrem os discos rígidos ou flexíveis
para armazenar bytes. E, depois, recuperá-los na mesma ordem, lendo
os bytes gravados no disco.
Problema
resolvido: o autor ordena ao programa que grave o texto no disco.
O programa, por sua vez, usando uma série de instruções específicas
para isso, lê, byte a byte, o trecho de memória que contém a carta
e o grava no disco, também byte a byte e na mesma ordem. A partir
desse momento o conteúdo da carta está preservado: ela está “armazenada”
em disco. E, quando o autor desejar repor o fruto de sua inspiração
na memória RAM para imprimi-lo novamente, basta ordenar que os bytes
sejam lidos do disco e transpostos para a memória. É simples assim.
Mas
vamos dar ainda um passo atrás e supor que o autor tenha acabado
de ligar seu micro. Para rever e imprimir nova cópia da carta ele
vai precisar de um programa, o editor de textos. Que, como sabemos,
nada mais é que um conjunto de instruções cujos códigos também se
apresentam sob a forma de bytes. O problema é que essas instruções
precisam estar na memória RAM para serem executadas (o ponteiro
de instruções só pode conter endereços de memória, portanto não
pode “apontar” para um byte que está no disco). Portanto, antes
de executar um programa, o usuário precisa “carregá-lo”, ou seja,
transpor as instruções que formam o programa para a memória RAM.
Como isso é feito?
De
forma muito simples, desde que o programa (ou seja, o conjunto de
bytes que representam as instruções) também esteja armazenado em
disco. Para carregá-lo, basta ordenar àa CPU que leia no disco,
byte a byte, esse conjunto de instruções, transponha seu conteúdo
para um trecho da memória RAM e copie no registrador IP (o “ponteiro
de instruções”) o endereço da posição de memória para onde foi transposta
a primeira instrução do programa. O resto é com a CPU, que passa
a executar obedientemente todas as demais instruções na ordem estabelecida
pelo próprio programa.
Neste
ponto, aflorou um conceito fundamental que merece alguma reflexão.
Veja lá: pelo que foi dito acima, tanto o conjunto de bytes que
compõe o texto da carta (dados) quanto o conjunto de bytes que constitui
o programa (instruções), podem estar tanto na memória RAM quanto
no disco. Byte a byte, um após o outro e na mesma ordem. Mas há
uma diferença fundamental entre o que está na memória e o que está
no disco. Tomemos como exemplo o programa. Quando na memória, ele
é uma coisa dinâmica, em execução, como se estivesse “vivo”: a CPU
está permanentemente executando uma instrução e passando para a
seguinte, e a máquina reagindo de acordo. Já quando gravado em disco,
o programa não passa de um conjunto de bytes inerte, estático, abúlico,
incapaz de qualquer ação. No disco, é como se o programa estivesse
congelado, em estado de vida suspensa, hibernando. Somente quando
carregado na memória RAM ele desperta para a vida e desempenha suas
funções. Algo semelhante acontece com os dados: nossa carta de amor,
por exemplo, somente pode ser alterada pelo programa editor de textos
quando na memória. Só assim o autor pode trocar uma palavra aqui,
outra ali, alterar sutilmente o sentido de uma frase, moldá-la de
acordo com sua vontade. Em disco, ela não passa de um conjunto de
bytes armazenado e inerte. Na memória, a carta está viva. No disco,
ela está apenas guardada. Arquivada.
Guardem
essa palavra: arquivada. Daqui para frente, vocês vão se fartar
dela. Começando pela próxima semana...
B.
Piropo