Guia · Sistemas operacionais
Programa, processo e thread: qual a diferença?
Programa descreve instruções; processo é uma execução com recursos administrados pelo sistema; thread é uma sequência de execução dentro dele. Essa distinção explica por que um aplicativo pode aparecer várias vezes nas ferramentas do sistema.
Escrito pela equipe Compuzilla
Publicado em . Atualizado em .
Nesta leitura

Programa, processo e thread: qual a diferença
- Programa disponível
- Processo com recursos
- Threads de execução
Comece pelo programa guardado
Você instala um editor de texto. Seus arquivos ficam no armazenamento e podem existir sem que o editor esteja aberto. Esse conjunto fornece instruções e recursos; não é ainda uma atividade executando continuamente na CPU.
Quando você inicia o editor, o sistema organiza uma execução. Ela pode ler configurações, reservar memória e abrir documentos. Agora existe estado que muda ao longo do uso.
O processo reúne a execução e seus recursos
No Linux, um processo tem identificação e informações disponíveis por interfaces como /proc. Memória, arquivos abertos e situação de execução ajudam a descrever seu estado. Ele pode estar trabalhando ou esperando um evento.
Abrir duas instâncias do mesmo programa pode criar processos diferentes. Aplicativos também podem criar processos auxiliares. Uma janela, portanto, não é uma unidade confiável para contar processos.
A thread organiza uma sequência dentro do processo
Um processo pode ter várias threads. Imagine uma sequência esperando uma resposta da rede enquanto outra lida com trabalho disponível. Elas podem compartilhar dados do processo, mas precisam de estado próprio e coordenação.
Se duas threads alteram uma lista sem regras adequadas, a ordem das ações pode afetar o resultado. Compartilhar memória facilita certas trocas e também exige cuidado para manter coerência.
Concorrência e paralelismo
Atividades podem avançar de modo intercalado mesmo com um único recurso de execução. Isso é concorrência. Executar operações ao mesmo tempo é paralelismo e depende de recursos e regras do ambiente.
No Python, a documentação descreve limites de algumas implementações para execução de código por threads e diferenças entre configurações. A existência de várias threads não basta para concluir que todas operem em núcleos separados ao mesmo tempo.
Próxima leitura
Leia kernel para entender a administração de recursos que sustenta essas execuções.
Fontes para aprofundar
- Linux — /proc, seção 1.1: processos, memória e threads (fonte primária)
- Python — threading: introdução, memória compartilhada e limites de paralelismo (fonte primária)
- Python — os: interfaces de arquivos, diretórios e processos (fonte primária)