Questão de Sistemas Operacionais — Threads (SO) — VUNESP 2023
Sistemas Operacionais›Threads (SO)
Código
vu196470
Banca
VUNESP
Órgão
EPC
Ano
2023
Cargo
Ana ( )
Os threads apresentam diversas características, dentre elas:
Asão entidades executadas em quase paralelo, que possuem a capacidade de compartilharem um espaço de endereçamento e todos os seus dados entre si.
Bsão mais leves do que os processos e são de criação mais rápida e destruição mais lenta do que eles.
Ccada processo pode empregar um único thread.
Deles não podem ser utilizados em sistemas com múltiplas CPUs, onde o paralelismo real é possível.
Eo ganho de desempenho quando threads são empregadas é de cerca de 95% em relação a aplicações que não as empregam.
Revelar gabarito e comentário▾
GabaritoA — são entidades executadas em quase paralelo, que possuem a capacidade de compartilharem um espaço de endereçamento e todos os seus dados entre si.
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
Threads em Sistemas Operacionais
Gabarito: letra A. Threads são entidades executadas em quase paralelo que compartilham o mesmo espaço de endereçamento e todos os dados do processo ao qual pertencem — essa é a característica central que as distingue de processos independentes. As demais alternativas contêm erros conceituais: threads são mais rápidas tanto para criar quanto para destruir, um processo pode ter múltiplos threads, e elas são especialmente úteis em sistemas com múltiplas CPUs.
Thread (ou linha de execução) é a menor unidade de execução dentro de um processo. Enquanto um processo tradicional possui um único fluxo de execução, um processo multithread pode ter vários fluxos que rodam concorrentemente. A grande vantagem é que todos os threads de um mesmo processo compartilham o mesmo espaço de endereçamento, ou seja, as mesmas variáveis globais, arquivos abertos, sinais e demais recursos do processo. Isso permite que cooperem de forma íntima e eficiente, sem a necessidade de mecanismos complexos de comunicação entre processos (IPC).
Na prática, imagine um processador de texto: um thread pode ficar responsável por interagir com o usuário (capturar teclado e mouse), enquanto outro thread reformata o documento em segundo plano e um terceiro faz backups automáticos. Todos compartilham o mesmo documento em memória, então as alterações feitas por um são imediatamente visíveis aos outros. Se fossem processos separados, seria necessário usar pipes, filas ou memória compartilhada explícita para trocar dados — muito mais custoso e complexo.
A criação e destruição de threads é mais rápida que a de processos porque threads não possuem recursos próprios associados (como espaço de endereçamento separado, tabela de arquivos, etc.). Elas apenas compartilham os recursos do processo pai. Por isso, o overhead de criar e destruir uma thread é muito menor. Além disso, a troca de contexto entre threads do mesmo processo é mais rápida que entre processos, pois não há mudança de espaço de endereçamento.
Threads são particularmente úteis em sistemas com múltiplas CPUs (multicore), onde podem ser executadas verdadeiramente em paralelo, aproveitando o hardware. Mesmo em sistemas com uma única CPU, elas dão a ilusão de simultaneidade através do chaveamento rápido. O ganho de desempenho, no entanto, não é um valor fixo como 95% — depende da aplicação, do número de threads, da carga de trabalho e do hardware. Não existe um percentual padrão.
A pegadinha desta questão está em inverter relações e inventar números: a alternativa B diz que threads são de "destruição mais lenta" (na verdade, são mais rápidas também para destruir), e a alternativa E inventa um ganho de 95% (não há base técnica para esse número). A alternativa A é a única que descreve corretamente a característica fundamental dos threads.
Threads
1Características
Compartilham espaço de endereçamento
Compartilham dados do processo
Execução concorrente (quase paralela)
Mais leves que processos
Criação e destruição mais rápidas
Úteis em múltiplas CPUs (paralelismo real)
2Erros comuns em questões
Destruição mais lenta que processos
Um único thread por processo
Não funcionam em múltiplas CPUs
Ganho fixo de 95%
LEVEL · soulevel.com.br
Alternativa A — ✅ Correta ⟵ GABARITO
Esta alternativa descreve com precisão a característica central dos threads: eles são executados em quase paralelo (concorrentemente) e compartilham o espaço de endereçamento e todos os dados do processo. Isso é exatamente o que os distingue de processos independentes, que possuem espaços de endereçamento separados. O compartilhamento é total: variáveis globais, arquivos abertos, sinais, etc.
Alternativa B — ❌ Incorreta
A alternativa afirma que threads são de "destruição mais lenta" que processos. Isso é falso: threads são mais rápidas tanto para criar quanto para destruir, pois não possuem recursos próprios associados. O erro está na inversão do termo "destruição" — a banca trocou "mais rápida" por "mais lenta" para confundir o candidato.
Alternativa C — ❌ Incorreta
Afirma que cada processo pode empregar um único thread. Na verdade, um processo pode ter múltiplos threads — é exatamente isso que caracteriza o multithreading. Um processo com apenas um thread é chamado de single-thread, mas não é uma limitação; é apenas uma configuração.
Alternativa D — ❌ Incorreta
Diz que threads não podem ser utilizados em sistemas com múltiplas CPUs. É o oposto: threads são especialmente úteis em sistemas multicore, onde podem ser executadas em paralelo real, aproveitando os múltiplos processadores. A alternativa inverte completamente a utilidade dos threads.
Alternativa E — ❌ Incorreta
Afirma que o ganho de desempenho com threads é de cerca de 95%. Esse número é inventado — não há um percentual fixo de ganho. O desempenho depende de vários fatores, como a natureza da aplicação, o número de threads, a carga de trabalho e o hardware. A banca criou um número específico para tentar induzir o candidato ao erro.
PEGA ESSA DICA!
Para questões sobre threads, lembre-se dos três pilares: (1) compartilham espaço de endereçamento e dados; (2) são mais leves e rápidas de criar/destruir que processos; (3) permitem paralelismo real em múltiplas CPUs. Desconfie de qualquer alternativa que inverta essas relações ou invente números absolutos de desempenho.