[5]. Qual é o benefício de executar vários programas simultaneamente?

Passo 1

O que o enunciado pede: responder qual é o benefício de executar vários programas simultaneamente.
Informações dadas (implícitas no enunciado): há mais de um programa disponível para execução; “executar simultaneamente” pode significar concorrência em um único núcleo (time-sharing) ou execução paralela em múltiplos núcleos. Não foram dadas quantidades, tempos ou arquiteturas específicas — a resposta deve explicar os benefícios gerais e quando eles aparecem.

Passo 2

Conceito básico (explicação didática): quando um único programa roda sozinho, a CPU às vezes está ociosa porque o programa espera por operações lentas (por exemplo, leitura de disco ou entrada do usuário). Executar vários programas simultaneamente permite que, enquanto um programa está esperando (I/O), outro use a CPU. Isso aumenta a utilização do recurso CPU e faz o sistema “aproveitar melhor” o tempo disponível. Em linguagem de prova, “aumenta a utilização de recursos e a produtividade do sistema”.

Passo 3

Explicando termos importantes (passo a passo):
  • I/O (entrada/saída): operações como leitura de disco, acesso à rede ou espera por digitação; normalmente muito mais lentas que a CPU.
  • Tempo de CPU ocupado: período em que a CPU está efetivamente executando instruções.
  • Tempo de espera (ou bloqueio): período em que um programa não pode progredir porque espera por I/O.
  • Concorrência vs paralelismo: concorrência = vários programas aparentam rodar ao mesmo tempo (time-sharing); paralelismo = vários núcleos executam efetivamente ao mesmo tempo.

Passo 4

Mostrando o ganho com um exemplo numérico simples (muito útil na prova):
Suponha que um programa gaste em média \,50\% do tempo usando CPU e \,50\% esperando I/O. Com apenas esse programa rodando, a utilização da CPU é \,50\%. Agora execute dois programas idênticos concorrentemente. A probabilidade de ambos estarem esperando I/O ao mesmo tempo é \,0{,}5\times0{,}5=0{,}25. Portanto a fração do tempo em que a CPU estará ociosa é \,0{,}25, então a utilização da CPU é
1 - 0{,}25 = 0{,}75 = 75\%.
Conclusão do exemplo: com dois programas a CPU passa de \,50\% para \,75\% de utilização. Isso mostra quantitativamente como concorrência aproveita os tempos de espera.

Passo 5

Outro exemplo prático e intuitivo (útil para justificar em prova): um usuário edita um documento (muito tempo esperando por teclado) e ao mesmo tempo um programa faz download na rede (muito I/O). Se só existisse um programa por vez, a CPU ficaria ociosa grande parte do tempo. Executando ambos simultaneamente, enquanto o editor espera por digitação o downloader usa a CPU para processar pacotes, comprimindo dados etc. Resultado: sistema mais responsivo e tarefas terminam mais rapidamente no agregado.

Passo 6

Benefício em sistemas multicore (paralelismo verdadeiro): se houver vários núcleos, programas CPU‑bound podem realmente rodar ao mesmo tempo em núcleos diferentes. Exemplo simples: duas tarefas idênticas que consomem somente CPU e levam T tempo cada em um núcleo; em dois núcleos em paralelo, o tempo de conclusão aproximado cai para T (ambas terminam em tempo T) em vez de 2T. Assim, o throughput do sistema aumenta linearmente até o limite imposto por dependências e recursos compartilhados.

Passo 7

Outros benefícios importantes (liste para prova):
  • Maior throughput: mais trabalho por unidade de tempo (mais programas completados).
  • Melhor responsividade percebida: aplicativos interativos respondem mais rápido porque recebem fatias de CPU mesmo quando há trabalho em background.
  • Máscara da latência de I/O: a latência de dispositivos fica menos penalizadora para o usuário.
  • Compartilhamento e multiplexação de recursos: memória, discos e rede são melhor aproveitados quando múltiplos programas coexistem.
  • Escalabilidade: sistemas multicore e servidores aproveitam simultaneidade para servir muitos clientes.

Passo 8

Limitações e trade‑offs (o que também vale citar na prova para ganhar pontos): executar muitos programas simultaneamente tem custo — troca de contexto, overhead de gerenciamento (escalonador), contenção por memória e caches, e possível degradação por excesso de concorrência. Então o benefício existe até o ponto em que o overhead e a contenção superem o ganho de utilização.

Passo 9

Como responder na prova de forma objetiva e direta (modelo-resposta):
  • Diga a vantagem principal: aumentar a utilização da CPU e o throughput, além de melhorar a responsividade e mascarar latência de I/O.
  • Se quiser pontuar mais, acrescente um pequeno exemplo numérico (como o do Passo 4) e mencione a existência de trade‑offs (overhead de troca de contexto e contenção).

Resposta

Executar vários programas simultaneamente aumenta a utilização da CPU e o throughput do sistema, melhora a responsividade percebida e mascara latências de I/O (ou seja, enquanto um programa espera, outro usa a CPU), além de permitir paralelismo em sistemas multicore — tudo isso resultando em mais trabalho realizado por unidade de tempo; porém há trade‑offs como overhead de troca de contexto e contenção por recursos.

Exercícios relacionados