Letra E.
Multiprogramação
2.1 - Mecanismo básico
Vários programas são mantidos na memória principal (RAM) ao mesmo tempo.
Quando o programa (ou processo) em execução faz uma chamada de sistema (isto ocorre a todo instante), o sistema operacional é acionado para atender a solicitação. Muitas vezes o sistema operacional aciona algum periférico para atender a solicitação feita pela chamada de sistema do processo. Esta solicitação é atendida muito rapidamente (para nós humanos). Para a escala de tempo da CPU (que funciona a alguns gigahertz de freqüência) o serviço prestado pelo periférico (um acesso ao disco rígido por exemplo) "demora muito". Este tempo pode ser precioso para executar outras tarefas, outros programas ou rotinas do próprio sistema operacional. Deste modo, o programa que fez a chamada de sistema é colocado no estado que se chama bloqueado, até que a solicitação que fez seja atendida. Durante este período de bloqueio, outros programas são executados. Isto é a multiprogramação.
Objetivo da multiprogramação: Aproveitar momentos ociosos de CPU (tipicamente existentes durante operações de entrada e saída (E/S , ou input/output - I/O) para processar outros programas (mais corretamente chamados de processos).
Existe também a situação em que o programa é retirado da CPU sem ter feito uma chamada de sistema, para que outro programa seja executado. Isto é compartilhamento de tempo (time sharing) e também é multiprogramação.
Todos os computadores modernos podem fazer várias coisas "ao mesmo tempo". Enquanto executa um programa do usuário, um computador também pode estar lendo a partir do disco e dando saída a texto para uma tela ou impressora. Em um sistema de multiprogramação, a CPU também alterna de um programa para outro, executando cada um por dezenas ou centenas de milissegundos. Enquanto, estritamente falando, em qualquer instante de tempo, a CPU está executando só um programa, no curso de 1 segundo, ela pode funcionar para vários programas, dando aos usuários a ilusão de paralelismo.
Às vezes, as pessoas falam de pseudoparalelismo querendo referir-se a essa rápida alternância da CPU entre programas, em contraste com o paralelismo verdadeiro em hardware dos sistemas multiprocessadores (que têm duas ou mais CPUs compartilhando a mesma memória física). Monitorar múltiplas atividades paralelas é um problema complicado. Assim, com os anos, os projetistas de sistemas operacionais (S.O.) desenvolveram um modelo (processos seqüenciais) que torna o paralelismo mais fácil de tratar.
Fonte: http://www.jabour.com.br/uss/so/so_b.html