Pular para o conteúdo principal

Questão de Sistemas Operacionais — Algoritmo de Escalonamento — FGV 2024

Sistemas OperacionaisAlgoritmo de Escalonamento
Código
fg077387
Banca
FGV
Órgão
CVM
Ano
2024
Nível
Superior
Cargo
Analista - Perfil 8 - TI / Sistemas e Desenvolvimento - Tarde
No contexto de um sistema operacional que suporta execução paralela, o analista Léo é encarregado de otimizar um aplicativo que faz uso intensivo de threads. O aplicativo em questão tem experimentado tempos de resposta inconsistentes, suspeitando-se de uma ineficiência na forma como as threads são gerenciadas e escalonadas.Considerando um ambiente com múltiplos núcleos de CPU, para melhorar o desempenho do aplicativo, o analista Léo deve:
  1. Aincrementar o número de threads para igualar o número de núcleos de CPU disponíveis, partindo do princípio de que mais threads resultarão em melhor paralelismo e desempenho;
  2. Bimplementar um algoritmo de escalonamento de threads baseado em prioridades, onde threads que realizam operações críticas para o desempenho recebem maior prioridade;
  3. Cforçar todas as threads a executarem em um único núcleo para evitar a sobrecarga associada à troca de contexto entre diferentes núcleos;
  4. Dutilizar um modelo de programação baseado em eventos em vez de threads, eliminando a necessidade de gerenciamento de threads;
  5. Ereduzir a prioridade do processo do aplicativo no gerenciador de tarefas do sistema operacional para que outros processos possam ser executados com maior eficiência, partindo do princípio de que isso indiretamente melhorará o desempenho do aplicativo multithreaded ao otimizar o uso geral de recursos do sistema.
Revelar gabarito e comentário

GabaritoB — implementar um algoritmo de escalonamento de threads baseado em prioridades, onde threads que realizam operações críticas para o desempenho recebem maior prioridade;

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”.

Escalonamento de Threads em Sistemas Multinúcleo

Gabarito: letra B. Em sistemas operacionais com múltiplos núcleos, threads que executam operações críticas devem receber maior prioridade no escalonamento para otimizar o desempenho geral, conforme os conceitos de escalonamento por prioridade e gerenciamento de threads presentes na literatura de sistemas operacionais (multitarefa, escalonador). As demais alternativas apresentam equívocos comuns sobre paralelismo, troca de contexto e gerenciamento de concorrência.

Alternativa A — ❌ Incorreta

Aumentar o número de threads para igualar o número de núcleos não garante melhoria de desempenho. Pode haver overhead de criação, sincronização e troca de contexto, especialmente se as threads não forem independentes. O paralelismo eficiente depende da natureza do aplicativo, não apenas da quantidade de threads.

Alternativa B — ✅ Correta ⟵ GABARITO

Implementar um escalonamento baseado em prioridades, atribuindo maior prioridade a threads que realizam operações críticas, é uma estratégia válida para melhorar o desempenho. O escalonador do sistema operacional pode usar algoritmos como múltiplas filas com prioridades (conforme descrito no contexto sobre escalonadores) para garantir que tarefas importantes recebam mais tempo de CPU.

Alternativa C — ❌ Incorreta

Forçar todas as threads a executarem em um único núcleo subutiliza os demais núcleos, aumentando a contenção e anulando os benefícios do paralelismo. A troca de contexto entre threads no mesmo núcleo ainda ocorre e pode piorar o desempenho.

Alternativa D — ❌ Incorreta

Modelos baseados em eventos (como programação assíncrona) podem reduzir a necessidade de threads, mas não eliminam completamente o gerenciamento de concorrência. Além disso, não são adequados para todos os tipos de aplicações e podem introduzir complexidade adicional.

Alternativa E — ❌ Incorreta

Reduzir a prioridade do processo do aplicativo piora seu desempenho, pois ele receberá menos tempo de CPU. Isso não melhora indiretamente o desempenho do próprio aplicativo; ao contrário, prejudica sua execução.

PEGA ESSA DICA!

Em questões sobre otimização de threads, lembre-se de que mais threads nem sempre é melhor — o equilíbrio entre paralelismo e overhead de sincronização é crucial. Escalonamento por prioridade é uma técnica clássica, mas deve ser usada com critério.

Link permanente: /questoes/fg077387