Multiprogramação e Tempo Compartilhado
Gabarito: letra B. Em um sistema típico de multiprogramação, a UCP alterna rapidamente entre os processos, executando cada um por dezenas ou centenas de milissegundos — é exatamente essa alternância que define o conceito de tempo compartilhado (time-sharing), uma extensão lógica da multiprogramação. As demais alternativas confundem multiprogramação com multiprocessamento, que exige múltiplos núcleos ou UCPs.
A multiprogramação é uma técnica de gerenciamento de processos que surgiu na terceira geração de computadores (1965-1980) para resolver um problema concreto: quando um processo realizava uma operação de entrada/saída (E/S), a UCP ficava ociosa, desperdiçando tempo de processamento. A solução foi manter vários programas na memória simultaneamente, de modo que, enquanto um processo espera por E/S, outro utiliza a UCP. Isso aumenta a utilização do processador e o throughput do sistema.
O tempo compartilhado (time-sharing) é uma evolução da multiprogramação voltada para a interação com o usuário. Em vez de apenas maximizar o uso da UCP, o sistema alterna a execução dos processos em fatias de tempo (time slices) tão curtas que o usuário tem a impressão de que seu programa é o único em execução. Essa alternância é feita pelo escalonador do sistema operacional, que decide qual processo recebe a UCP e por quanto tempo.
É fundamental distinguir multiprogramação de multiprocessamento. Na multiprogramação, há apenas uma UCP (ou um núcleo), e os processos são executados de forma intercalada — em cada instante, apenas um processo está em execução. No multiprocessamento, há duas ou mais UCPs (ou núcleos) que executam processos verdadeiramente em paralelo. A confusão entre esses dois conceitos é a principal armadilha desta questão.
A pegadinha da banca está em associar a multiprogramação à necessidade de múltiplos processadores ou núcleos. Na verdade, a multiprogramação funciona perfeitamente com uma única UCP, pois a execução é intercalada no tempo, não simultânea no espaço. O que exige múltiplos núcleos é o multiprocessamento, que permite execução paralela real.
Guarde a fronteira entre multiprogramação (uma UCP, execução intercalada) e multiprocessamento (várias UCPs, execução paralela): é exatamente nela que as alternativas se dividem.
Alternativa A — ❌ Incorreta
A principal vantagem da multiprogramação não é permitir que vários programadores elaborem seus programas simultaneamente. Isso é uma característica de sistemas multiusuário, que permitem que vários usuários acessem o sistema ao mesmo tempo. A multiprogramação visa aumentar a utilização da UCP, evitando que ela fique ociosa durante operações de E/S.
Alternativa B — ✅ Correta ⟵ GABARITO
Esta alternativa descreve com precisão o funcionamento do tempo compartilhado, que é uma extensão da multiprogramação. A UCP alterna rapidamente entre os processos, executando cada um por dezenas ou centenas de milissegundos (time slices). Essa alternância é tão rápida que o usuário não percebe que outros processos estão em execução.
Alternativa C — ❌ Incorreta
A multiprogramação não exige que a UCP possua diversos núcleos. Ela funciona com uma única UCP, pois os processos são executados de forma intercalada no tempo. A necessidade de múltiplos núcleos é característica do multiprocessamento, que permite execução paralela real.
Alternativa D — ❌ Incorreta
A multiprogramação não exige duas ou mais UCPs. Ela é uma técnica que maximiza o uso de uma única UCP, alternando a execução dos processos. O requisito de múltiplas UCPs é do multiprocessamento, não da multiprogramação.
Alternativa E — ❌ Incorreta
A divisão de programas em partes executadas por processadores diferentes é uma característica de sistemas distribuídos ou de multiprocessamento, não da multiprogramação. Na multiprogramação, os programas são executados integralmente, de forma intercalada, por uma única UCP.
Gabarito: letra B