← Todos os guias

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
Compuzilla sorrindo ao lado de um diagrama: Programa, processo e thread: qual a diferença.

Programa, processo e thread: qual a diferença

  1. Programa disponível
  2. Processo com recursos
  3. Threads de execução
Threads pertencem à execução do processo. O desenho não promete paralelismo em todas as configurações. Ilustração: equipe Compuzilla.

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.

Continue aprendendo

  • Verbete Software — Software é o conjunto de programas e outros elementos lógicos que orientam o funcionamento de um sistema computacional. Inclui aplicativos, sistemas operacionais e bibliotecas; sua execução depende de recursos físicos e de um ambiente compatível.
  • Verbete Processo — Processo é uma execução de programa com recursos e estado administrados pelo sistema operacional. Pode ter memória, arquivos abertos e uma ou mais threads. O arquivo do programa e o processo que o executa são coisas diferentes.
  • Verbete Thread — Thread é uma sequência de execução dentro de um processo. Threads de um mesmo processo podem compartilhar memória e recursos, mas têm estado de execução próprio. Essa organização permite concorrência e, em condições adequadas, paralelismo.
  • Verbete Kernel — Kernel é o núcleo de um sistema operacional: a parte que administra recursos e oferece mecanismos para processos usarem memória, dispositivos e outras funções. O sistema completo também inclui ferramentas, bibliotecas e serviços além desse núcleo.

Fontes para aprofundar