Processos e Threads
Gabarito: letra A. A diferença fundamental é que threads de um mesmo processo compartilham o mesmo espaço de endereçamento e recursos, enquanto cada processo possui seu próprio espaço de endereçamento isolado. Isso torna a comunicação entre threads mais simples e eficiente (memória compartilhada) comparada à comunicação entre processos (IPC).
O conteúdo de apoio confirma: "Tarefas associadas ao mesmo processo podem trocar informações facilmente, pois compartilham as mesmas áreas de memória. Todavia, isso não é possível entre tarefas associadas a processos distintos."
Critério | Processos | Threads |
|---|
Espaço de endereçamento | Próprio e isolado | Compartilhado (mesmo processo) |
Comunicação | IPC (pipes, filas, semáforos) | Memória compartilhada (direta) |
Eficiência na comunicação | Menos eficiente | Mais eficiente |
Criação de novos elementos | Sim (ex.: fork()) | Sim (ex.: pthread_create) |
Execução em múltiplos núcleos | Sim (paralelismo) | Sim (paralelismo) |
Distribuição entre computadores | Possível (sistemas distribuídos) | Não (padrão: mesma máquina) |
Alternativa A — ✅ Correta ⟵ GABARITO
Exatamente a definição clássica. Threads compartilham recursos (memória, arquivos abertos) do processo pai, enquanto cada processo tem seu próprio espaço de endereçamento isolado. Essa característica é a base para a diferença de comunicação e sincronização.
Alternativa B — ❌ Incorreta
Afirma o contrário do que ocorre. Threads são mais eficientes em comunicação e sincronização do que processos, pois podem acessar diretamente a memória compartilhada sem necessidade de mecanismos complexos de IPC (como pipes, filas de mensagens ou semáforos de sistema). A banca inverte a relação.
Alternativa C — ❌ Incorreta
Threads não são distribuídas entre computadores — elas existem dentro de um único processo e, portanto, dentro de uma mesma máquina (a menos que haja um sistema de threads distribuídas, o que não é o conceito padrão). Processos podem ser distribuídos através de rede (sistemas distribuídos). A afirmação está errada.
Alternativa D — ❌ Incorreta
Tanto processos quanto threads podem executar em paralelo em múltiplos núcleos de CPU. Threads de um mesmo processo podem ser executadas simultaneamente em diferentes núcleos (modelo 1:1 ou N:M). A afirmação de que threads são sempre sequenciais é falsa.
Alternativa E — ❌ Incorreta
Ambos podem criar novos: processos podem iniciar outros processos (chamada de sistema fork()), e threads podem iniciar novas threads (ex.: pthread_create). A afirmação está errada ao negar a capacidade dos processos.
Gabarito: letra A.