Questão de Sistemas Operacionais — Algoritmo de Escalonamento — FGV 2024
Sistemas Operacionais›Algoritmo 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:
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;
Bimplementar um algoritmo de escalonamento de threads baseado em prioridades, onde threads que realizam operações críticas para o desempenho recebem maior prioridade;
Cforçar todas as threads a executarem em um único núcleo para evitar a sobrecarga associada à troca de contexto entre diferentes núcleos;
Dutilizar um modelo de programação baseado em eventos em vez de threads, eliminando a necessidade de gerenciamento de threads;
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.