Questão de Sistemas Operacionais — Conceitos de Gerência de Processos (SO) — CESPE / CEBRASPE 2024
- Código
- ce404114
- Banca
- CESPE / CEBRASPE
- Órgão
- CTI
- Ano
- 2024
- Cargo
- Tecno P1 ( )
- CCerto
- EErrado
GabaritoC — Certo
Gabarito: letra C (CERTO). Em um sistema multithread, um processo pode ter múltiplas threads, e essas threads são executadas concorrentemente — ou seja, partes distintas do mesmo processo podem ser executadas ao mesmo tempo, seja em paralelo real (em múltiplos núcleos) ou de forma intercalada (em um único núcleo). O conceito central é a concorrência, que não exige paralelismo físico.
Para entender a afirmação, é preciso distinguir dois conceitos que frequentemente se confundem: concorrência e paralelismo. Concorrência significa que múltiplas tarefas progridem em intervalos de tempo sobrepostos — elas avançam "ao mesmo tempo" do ponto de vista lógico, mesmo que em um único núcleo apenas uma execute por vez, alternando rapidamente. Paralelismo, por outro lado, exige múltiplos núcleos de processamento, onde cada tarefa executa fisicamente ao mesmo tempo. A afirmação da questão usa a expressão "ao mesmo tempo", que no contexto de sistemas operacionais é interpretada como execução concorrente — e isso é exatamente o que o multithreading proporciona.
Um processo tradicional (single-thread) tem um único fluxo de execução: o programa segue uma sequência de instruções do início ao fim. Já um processo multithread possui várias threads, cada uma com seu próprio contador de programa, pilha e conjunto de registradores, mas compartilhando o mesmo espaço de endereçamento (código, dados, arquivos abertos). Isso permite que, por exemplo, um navegador web tenha uma thread para renderizar a página, outra para baixar arquivos e outra para responder a cliques do usuário — todas "ao mesmo tempo", melhorando a responsividade e o aproveitamento do processador.
A distinção crucial que a banca explora é entre processo e thread. Processos são unidades independentes, com espaços de endereçamento separados e comunicação via mecanismos de IPC (como pipes e sockets). Threads são unidades de execução dentro de um mesmo processo, compartilhando memória — o que torna a comunicação entre elas mais simples e rápida, mas também exige sincronização para evitar condições de corrida. A afirmação fala de "partes distintas de um mesmo processo", o que aponta diretamente para threads, não para processos.
A pegadinha aqui é sutil: o candidato pode pensar que "ao mesmo tempo" exige múltiplos processadores, e marcar ERRADO. Mas o termo correto no contexto de SO é concorrência, que inclui tanto o paralelismo real quanto o intercalamento em um único núcleo. O próprio texto de apoio reforça: "processos só podem estar executando simultaneamente caso o sistema seja multiprocessado, já que, em cada instante de tempo, apenas um processo está em execução em um processador ou núcleo". Essa observação vale para processos, mas para threads a lógica é a mesma: em um núcleo único, apenas uma thread executa por vez, mas todas progridem concorrentemente. A afirmação está correta porque o multithreading permite que partes do processo sejam executadas concorrentemente, independentemente do número de núcleos.
Guarde a fronteira entre concorrência (lógica, intercalada) e paralelismo (física, simultânea): é exatamente nela que esta questão se decide. A banca afirma que partes do mesmo processo são executadas "ao mesmo tempo" — e isso é verdadeiro no sentido de concorrência, que é o que o multithreading oferece.
A afirmação está correta. Em um sistema multithread, o processo é dividido em múltiplas threads, cada uma representando um fluxo de execução independente. Essas threads são escalonadas pelo sistema operacional e podem executar concorrentemente: em um sistema com múltiplos núcleos, elas podem rodar em paralelo real; em um sistema com um único núcleo, elas se intercalam rapidamente, dando a impressão de simultaneidade. Em ambos os casos, "partes distintas de um mesmo processo" (as threads) estão sendo executadas "ao mesmo tempo" no sentido de concorrência. O compartilhamento do espaço de endereçamento é o que caracteriza as threads como partes do mesmo processo, diferenciando-as de processos independentes.
A alternativa E afirma que o item é errado, mas isso não procede. O erro do candidato que marca E é interpretar "ao mesmo tempo" como exigência de paralelismo físico (múltiplos núcleos). No entanto, o conceito de concorrência — que é o que o multithreading implementa — não exige paralelismo. Mesmo em um processador de núcleo único, as threads de um processo são executadas de forma intercalada, com o sistema operacional alternando entre elas em intervalos de tempo muito curtos, criando a ilusão de execução simultânea. Portanto, a afirmação é verdadeira, e a alternativa E está incorreta.
Gabarito: letra C (CERTO).
Link permanente: /questoes/ce404114