Neste artigo
- O que é a memória RAM?
- O que é o HD?
- Qual é a diferença entre memória RAM e HD?
- Por que eu perco o trabalho quando não salvo?
- Como a memória RAM e o disco aparecem em um programa?
- Aí você pergunta: como um HD consegue guardar os dados?
- Quais são os erros mais comuns com memória e arquivos?
- Agora é com você!
A memória RAM guarda o que o computador está usando agora e perde tudo quando falta energia. O HD guarda os programas e os arquivos e mantém tudo, mesmo com o computador desligado.
No artigo Como funciona um computador: entrada, processamento e saída, ficou faltando uma quarta peça: o armazenamento. A partir de agora vou usar também os termos em inglês, porque você vai repetir tanto que eles viram rotina: entrada é Input, processamento é Process, saída é Output e armazenamento é Storage.
Imagine que você pegou uma fruta que nunca tinha comido. Você dá uma mordida (input), mastiga e sente o sabor (process) e, antes de engolir ou cuspir (output), o seu cérebro guarda aquele sabor na memória e busca, na memória antiga, se ele é bom ou ruim. O computador também tem duas memórias: uma de curto prazo, a memória RAM, e uma de longo prazo, o HD, que é o disco rígido.
O que é a memória RAM?
É a memória principal do computador. RAM vem de Random Access Memory. Ela guarda as instruções dos programas que estão sendo executados e os dados que eles estão usando. É de lá que o processador busca o que precisa.
Ela tem duas marcas. É rápida. E é volátil: precisa de energia para manter o que guarda. Faltou energia, a informação se perde.
O que é o HD?
É o armazenamento secundário, a memória de longa duração. Ele guarda os programas e os arquivos e não é volátil: o que foi gravado continua lá sem energia. Em geral ele é mais lento que a memória RAM, mais barato e, por isso, costuma ter mais espaço.
E o SSD? Por muito tempo o HD foi o principal armazenamento secundário dos computadores. O SSD faz o mesmo papel com outra construção. O HD tem partes mecânicas: discos que giram e cabeças de leitura e escrita. O SSD guarda os dados em memória flash e não tem partes móveis, o que deixa a leitura bem mais rápida. Em troca, o custo por unidade de armazenamento é mais alto. O que este artigo diz sobre o HD como memória de longo prazo vale também para o SSD.

Qual é a diferença entre memória RAM e HD?
| Memória RAM | HD | |
|---|---|---|
| Papel | memória principal | armazenamento secundário |
| O que guarda | programas e dados em uso agora | programas e arquivos, por longo tempo |
| Velocidade | mais rápida | mais lento |
| Sem energia | perde a informação (volátil) | mantém a informação (não volátil) |
| Preço e espaço | mais cara, com menos espaço | geralmente mais barato, com mais espaço |
Os dois trabalham juntos. Quando você manda executar um programa, ele normalmente é carregado do HD para a memória RAM. Com o sistema operacional é igual: ele fica gravado no disco e é copiado para a memória quando o computador é ligado.
Por que eu perco o trabalho quando não salvo?
Quando você abre um arquivo em um editor, o conteúdo é carregado na memória. É ali que você edita. Quando você manda salvar, o conteúdo atualizado é gravado no disco. E quando o programa é fechado, o espaço que ele ocupava na memória é liberado.

Você já deve ter passado por isso: estava editando uma foto no celular, fechou o programa sem querer, sem salvar, e perdeu toda a edição. Ou estava escrevendo um texto, não apertou o botão salvar e o celular descarregou. As mudanças estavam só na memória de curto prazo. Sacou agora a diferença entre a memória fixa e a memória de curto prazo?
Como a memória RAM e o disco aparecem em um programa?
Uma variável é uma posição na memória que tem um nome e um valor, como você pode ver em conceitos básicos de programação. Um arquivo fica no disco. O programa abaixo tem dois contadores: um mora só em uma variável, o outro é salvo em um arquivo chamado contador.txt. Cada vez que o programa roda, ele soma 1 nos dois.
Em Python:
# Memória RAM e disco: o que some e o que fica
import os
ARQUIVO = "contador.txt"
contador_na_memoria = 0 # variável: fica na memória RAM
contador_no_disco = 0
if os.path.exists(ARQUIVO): # já existe um valor salvo?
with open(ARQUIVO) as arquivo:
contador_no_disco = int(arquivo.read())
contador_na_memoria = contador_na_memoria + 1
contador_no_disco = contador_no_disco + 1
with open(ARQUIVO, "w") as arquivo: # salva no disco
arquivo.write(str(contador_no_disco))
print("Contador na memória: %d" % contador_na_memoria)
print("Contador no disco: %d" % contador_no_disco)
Em PHP:
<?php
// Memória RAM e disco: o que some e o que fica
$arquivo = "contador.txt";
$contador_na_memoria = 0; // variável: fica na memória RAM
$contador_no_disco = 0;
if (file_exists($arquivo)) { // já existe um valor salvo?
$contador_no_disco = (int) file_get_contents($arquivo);
}
$contador_na_memoria = $contador_na_memoria + 1;
$contador_no_disco = $contador_no_disco + 1;
file_put_contents($arquivo, $contador_no_disco); // salva no disco
printf("Contador na memória: %d\n", $contador_na_memoria);
printf("Contador no disco: %d\n", $contador_no_disco);
Em C:
/* Memória RAM e disco: o que some e o que fica */
#include <stdio.h>
int main(void) {
int contador_na_memoria = 0; /* variável: fica na memória RAM */
int contador_no_disco = 0;
FILE *arquivo = fopen("contador.txt", "r");
if (arquivo != NULL) { /* já existe um valor salvo? */
fscanf(arquivo, "%d", &contador_no_disco);
fclose(arquivo);
}
contador_na_memoria = contador_na_memoria + 1;
contador_no_disco = contador_no_disco + 1;
arquivo = fopen("contador.txt", "w"); /* salva no disco */
fprintf(arquivo, "%d", contador_no_disco);
fclose(arquivo);
printf("Contador na memória: %d\n", contador_na_memoria);
printf("Contador no disco: %d\n", contador_no_disco);
return 0;
}
Rodei o programa três vezes seguidas. A saída das três execuções, uma embaixo da outra, é igual nas três linguagens:
Contador na memória: 1 Contador no disco: 1 Contador na memória: 1 Contador no disco: 2 Contador na memória: 1 Contador no disco: 3
Quem diria: o contador da variável não sai do 1. Toda vez que o programa começa, a variável é criada de novo com 0, soma 1 e, quando o programa termina, ela some. O contador do arquivo continua de onde parou: 1, 2, 3.
- Ler do disco: o programa pergunta se o arquivo existe. Se existe, lê o que está gravado nele e transforma em número. Em Python, o read devolve texto, por isso o int. Em C, o fopen devolve NULL quando não consegue abrir o arquivo, por isso o teste antes de ler.
- Somar: as duas contas acontecem nas variáveis, na memória.
- Salvar no disco: o programa abre o arquivo para escrita e grava o novo valor. Em Python, o write só aceita texto, por isso o str. Em PHP, o file_put_contents cria o arquivo se ele não existir e escreve por cima se existir. Em C, o fprintf é para o arquivo o que o printf é para a tela.
Ver a animação: três execuções do programa

Fiz mais dois testes. Apaguei o arquivo contador.txt e rodei de novo: o contador do disco voltou para 1. Depois rodei uma vez em cada linguagem, na mesma pasta: o Python mostrou 1, o PHP mostrou 2 e o C mostrou 3. O arquivo não sabe em qual linguagem foi gravado. Foque no conceito, e não na linguagem!
Aí você pergunta: como um HD consegue guardar os dados?
Dentro do HD existem discos recobertos de material magnético, chamados de pratos. Cada prato é dividido em trilhas, e cada trilha é dividida em setores. Os dados são gravados pela magnetização desse material: são as mudanças na direção da magnetização que representam os bits.
E o que é um bit? É um dígito binário: só pode ser 0 ou 1. Toda informação que o computador guarda é representada assim. Por isso muita gente fala que o computador é “burro”: ele só entende zeros e uns. As fotos, os áudios, os textos e os ícones do seu celular, no final das contas, são zeros e uns. Oito bits formam um byte, e essa história continua no artigo Memória dos nossos Bits e Bytes de cada dia.
Quais são os erros mais comuns com memória e arquivos?
- Achar que a variável guarda o valor para sempre. Tirei do programa em Python as duas linhas que salvam o arquivo e rodei duas vezes: o contador do disco mostrou 1 e 1. Sem salvar, nada fica.
- Esquecer que o arquivo guarda texto. Em Python e em PHP, o que vem do arquivo chega como texto e precisa virar número antes da conta. O que vai para o arquivo, em Python, precisa virar texto antes de ser gravado.
- Confiar no que está no arquivo. Escrevi abc dentro do contador.txt. O Python parou com a mensagem ValueError: invalid literal for int() with base 10: ‘abc\n’. O PHP e o C não reclamaram e mostraram o contador do disco em 1.
- Abrir para escrita sem querer apagar. Em Python, abrir um arquivo no modo “w” apaga o que existia nele.
- Em C, usar o arquivo sem testar o fopen. Se o fopen devolver NULL, o arquivo não foi aberto.
Agora é com você!
No papel: diga onde está cada coisa, na memória RAM ou no disco: uma foto guardada na galeria, um texto que você está digitando e ainda não salvou, um jogo aberto neste momento e o sistema operacional com o computador desligado.
No computador: escolha uma das três linguagens e mude o programa para somar de 10 em 10. Rode três vezes, apague o arquivo contador.txt e rode de novo. Antes de cada execução, escreva no papel o que você espera ver. Tente sozinho, sem pedir a resposta pronta para ninguém, nem para a IA!
Todos os programas que você vai desenvolver, no final das contas, viram zeros e uns para o computador. Como a gente conversa com uma máquina que só conhece zeros e uns? É o assunto do próximo artigo: Programar é conversar com o computador. Apenas Conversar!
Confiança Sempre!!!
Fontes:
- Universidade Federal de Pernambuco, Centro de Informática, Computação L, aula 01, Introdução, com a memória principal, o armazenamento secundário, a comparação entre a memória RAM e as memórias secundárias, o sistema operacional carregado quando o computador é ligado, o bit e o byte (PDF, slides de aula).
- Universidade Federal de Uberlândia, Faculdade de Computação, aula 01, Introdução à Computação, com a memória RAM, volátil, que guarda as instruções e os dados dos programas em execução, e o programa carregado do disco rígido para a memória (PDF, slides de aula).
- Universidade Federal do Rio Grande do Norte, Instituto Metrópole Digital, Sistemas Operacionais, aula 11, Gerenciamento de memória, com o sistema operacional copiado do disco rígido para a memória e o caminho de um arquivo ao ser aberto, editado, salvo e fechado (PDF).
- Instituto Federal da Bahia, Análise e Desenvolvimento de Sistemas, slides sobre memórias, com a diferença entre memória volátil e memória não volátil.
- Universidade Estadual de Campinas, Instituto de Computação, apresentação Tecnologia de Discos Magnéticos, com os pratos recobertos de material magnético, as trilhas, os setores e a gravação dos bits pela magnetização (PDF).
- Universidade Federal de Minas Gerais, Departamento de Estatística, Introdução à Programação, seção 1.3, com a variável como posição na memória que tem nome e valor (PDF, slides de aula).
- Documentação do Python, tutorial, Input and Output, com o open, o modo “w”, que apaga um arquivo existente de mesmo nome, o with, o read, que devolve texto, e o write, que recebe texto.
- Documentação do Python, os.path, com a função exists, que diz se um caminho existe.
- Manual do PHP, file_exists, com a verificação da existência de um arquivo.
- Manual do PHP, file_get_contents, com a leitura do conteúdo inteiro de um arquivo para uma string.
- Manual do PHP, file_put_contents, com a gravação em arquivo, que cria o arquivo se ele não existir e sobrescreve o conteúdo se existir.
- Universidade Federal do Espírito Santo, Departamento de Informática, Programação Básica de Computadores, aula 10, Manipulação de Arquivos, com o fopen, que retorna NULL se ocorreu algum erro, o fscanf e o fclose (PDF).
- Universidade Federal do Vale do São Francisco, Programação para Computação, 13ª aula, Arquivos em C, com o fprintf e o fscanf, que são para o arquivo o que o printf e o scanf são para o console (PDF, slides de aula).
- Universidade Estadual Paulista (Unesp), IBILCE, disciplina de Arquitetura de Computadores, artigo de seminário sobre SSD, com as partes mecânicas do HD, o SSD feito de memória flash e sem partes móveis, a leitura mais rápida e o custo mais alto por unidade de armazenamento (PDF).
- Os exemplos foram executados em Python 3.13, PHP 8.3 e GCC 13.

Continue a conversa