Micro Cosmo
Volte
20/03/95

< Gravando e Lendo >


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