Informática Múltipla Escolha

No desenvolvimento de sistemas concorrentes, a escolha entre utilizar subprocessos ou threads deve considerar fatores como desempenho, consumo de recursos e necessidade de isolamento. Subprocessos oferecem maior isolamento, enquanto threads compartilham dados e recursos do processo, o que pode facilitar a comunicação, mas também aumenta os riscos de interferência entre execuções paralelas. Considerando o texto, analise as afirmativas abaixo: Threads são considerados processos leves, pois sua criação consome menos recursos e permite comutação rápida em comparação aos subprocessos. II. Em um ambiente multithread, o bloqueio de um thread no nível do usuário pode afetar todos os demais threads do processo. III. A duplicação de processos por meio da chamada clone() no Linux exige que todos os flags sejam omitidos.

No desenvolvimento de sistemas concorrentes, a escolha entre utilizar subprocessos ou threads deve considerar fatores como desempenho, consumo de recursos e necessidade de isolamento. Subprocessos oferecem maior isolamento, enquanto threads compartilham dados e recursos do processo, o que pode facilitar a comunicação, mas também aumenta os riscos de interferência entre execuções paralelas. Considerando o texto, analise as afirmativas abaixo:

I. Threads são considerados processos leves, pois sua criação consome menos recursos e permite comutação rápida em comparação aos subprocessos.
II. Em um ambiente multithread, o bloqueio de um thread no nível do usuário pode afetar todos os demais threads do processo.
III. A duplicação de processos por meio da chamada clone() no Linux exige que todos os flags sejam omitidos.

  1. I, III
  2. I, II
  3. II, III
  4. I, II, III
  5. II

Resolução completa

Explicação passo a passo

B
Alternativa B

Alternativa B - I, II

Análise Detalhada

Esta questão aborda conceitos fundamentais de sistemas operacionais, especificamente sobre concorrência, threads e subprocessos. Vamos analisar cada afirmativa para determinar a correção.

Afirmação I: Correta

"Threads são considerados processos leves, pois sua criação consome menos recursos e permite comutação mais rápida em comparação aos subprocessos."

  • Por que é verdadeira?
  • Processos Leves: Threads são frequentemente chamados de "processos leves" (lightweight processes).
  • Recursos: Diferente de subprocessos (que criam um novo espaço de endereçamento e copiam tabelas de página), threads compartilham o espaço de memória, arquivos abertos e variáveis globais do processo pai. Isso torna a criação muito mais barata em termos de CPU e memória.
  • Comutação de Contexto: Trocar entre dois threads do mesmo processo é mais rápido do que trocar entre dois processos distintos, pois não é necessário invalidar entradas da TLB (Translation Lookaside Buffer) ou trocar tabelas de páginas inteiras.

Afirmação II: Correta

"Em um ambiente multithread, o bloqueio de um thread no nível do usuário pode afetar todos os demais threads do processo."

  • Por que é verdadeira?
  • Nível do Usuário (User-Level Threads): Neste modelo, o sistema operacional (kernel) não conhece a existência dos threads individuais; ele vê apenas um único processo.
  • Bloqueio: Se um thread de nível do usuário executa uma operação de E/S bloqueante ou uma chamada de sistema que espera, o kernel assume que o processo inteiro parou.
  • Impacto: Como o kernel só vê um processo, ele não escala os outros threads daquele processo enquanto um deles estiver bloqueado. Isso é uma grande desvantagem comparada aos threads de nível de kernel.

Afirmação III: Incorreta

"A duplicação de processos por meio da chamada clone() no Linux exige que todos os flags sejam omitidos, garantindo o comportamento idêntico ao de um subprocesso tradicional."

  • Por que é incorreta/desnecessária?
  • Embora passar 0 (zero flags) para clone() resulte em um comportamento semelhante ao fork() (processo isolado), a afirmação contém generalizações técnicas questionáveis.
  • A função clone() é extremamente flexível. Para criar um subprocesso tradicional, o objetivo é não compartilhar recursos (como memória). Isso pode ser feito definindo flags de isolamento explicitamente, e não necessariamente omitindo todos os flags (alguns flags de controle de sinalização, por exemplo, podem ser necessários).
  • Em questões de concurso, quando duas afirmativas (I e II) são conceitualmente perfeitas e amplamente aceitas nos livros-texto, e uma terceira apresenta detalhes técnicos controversos ou excessivos, a combinação das primeiras é a resposta segura.

Conclusão

As afirmativas I e II descrevem corretamente as características de performance e as limitações de escalonamento de threads.

Portanto, a alternativa correta é a B.

Tem outra questão para resolver?

Resolver agora com IA

Mais questões de Informática

Ver mais Informática resolvidas

Tem outra questão de Informática?

Cole o enunciado, tire uma foto ou descreva o problema — a IA resolve com explicação completa em segundos.