Multiprogramação

Multiprogramação é uma forma rudimentar de processamento paralelo em que vários programas são executados ao mesmo tempo em um uniprocessador. Como existe apenas um processador, não pode haver uma verdadeira execução simultânea de diferentes programas. Ao invés disso, o sistema operacional executa parte de um programa, depois parte de outro, e assim por diante. Para o usuário parece que todos os programas estão executando ao mesmo tempo.

Se a máquina tem a capacidade de causar uma interrupção após um intervalo de tempo especificado, então o sistema operacional executará cada programa por um determinado período de tempo, recuperará o controle, e então executará outro programa por um determinado período de tempo, e assim por diante. Na ausência deste mecanismo, o sistema operacional não tem escolha a não ser começar a executar um programa com a expectativa, mas não a certeza, de que o programa irá eventualmente retornar o controle para o sistema operacional.

Se a máquina tem a capacidade de proteger a memória, então um bug em um programa tem menos probabilidade de interferir com a execução de outros programas. Em um sistema sem proteção de memória, um programa pode alterar o conteúdo do armazenamento atribuído a outros programas ou mesmo o armazenamento atribuído ao sistema operacional. As falhas de sistema resultantes não são apenas disruptivas, elas podem ser muito difíceis de depurar uma vez que pode não ser óbvio qual dos vários programas está em falha.

Veja também: Multithreading, multitarefa, multiprocessamento