Prévia do material em texto
<p>Com base nas observações do gerenciador de tarefas e nos</p><p>conhecimentos adquiridos sobre processos e seus estados, este</p><p>problema pode ser causado por um excesso de chamadas de E/S</p><p>realizadas pela aplicação? Justifique sua resposta.</p><p>● A explicação para o alto consumo de CPU estar relacionado a tarefas</p><p>computacionalmente intensas, e não a operações de entrada/saída (E/S), faz</p><p>sentido. Quando uma aplicação realiza muitas operações de E/S, como ler ou gravar</p><p>dados no disco, a CPU frequentemente fica em estado de espera ("idle") até que</p><p>essas operações sejam concluídas. Durante esse tempo, o uso da CPU permanece</p><p>baixo, já que o processador não está sendo ativado para cálculos ou processamento</p><p>enquanto aguarda essas operações. Assim, se há um uso elevado da CPU, é</p><p>provável que a aplicação esteja realizando tarefas que demandam processamento</p><p>intenso, e não apenas operações de E/S.</p><p>Por que em um dos computadores o consumo de CPU chega a 100% e</p><p>inviabiliza o uso da interface gráfica do sistema operacional, e no outro</p><p>computador a mesma aplicação aparenta usar menos processamento e</p><p>o sistema continua usável, ainda que a aplicação em si esteja quase</p><p>travada?</p><p>● A diferença no uso da CPU e na responsividade entre os dois computadores pode</p><p>ser explicada pelo número de núcleos do processador. No primeiro computador, que</p><p>possui apenas um núcleo, toda a carga de trabalho da aplicação e do sistema</p><p>operacional deve ser processada em sequência. Como a aplicação utiliza quase</p><p>100% desse único núcleo, o sistema operacional tem pouca capacidade para</p><p>processar outras tarefas, resultando em uma interface gráfica lenta ou não</p><p>responsiva. No segundo computador, com quatro núcleos, a carga de trabalho pode</p><p>ser distribuída entre eles, o que permite que o sistema operacional e a interface</p><p>gráfica permaneçam funcionais, mesmo que uma aplicação esteja consumindo</p><p>quase um núcleo inteiro. Isso ocorre porque os núcleos restantes ainda podem</p><p>atender às necessidades do sistema, preservando a usabilidade.</p><p>Qual tipo de erro, a nível de código, pode estar causando este</p><p>problema? Justifique sua resposta.</p><p>1. Loops infinitos: Um loop que não tem uma condição de parada adequada ou que está</p><p>mal implementado pode entrar em uma execução sem fim, fazendo com que o</p><p>processador fique preso nesse ciclo. Isso consome recursos da CPU continuamente,</p><p>sem progresso efetivo.</p><p>2. Falta de sincronização entre threads: Em aplicações multithread, a falta de sincronização</p><p>pode fazer com que múltiplas threads tentem acessar ou modificar os mesmos recursos</p><p>ao mesmo tempo, resultando em condições de corrida ou bloqueios (deadlocks). Isso</p><p>pode gerar um consumo excessivo de CPU, pois as threads podem ficar tentando obter</p><p>acesso repetidamente a recursos bloqueados, levando a uma competição que consome</p><p>processamento.</p>