Multiprogramação é uma técnica de design de sistema operacional em que vários programas são executados simultaneamente em um computador. Isto contrasta com a programação única, na qual apenas um programa é executado por vez.
A multiprogramação é possível graças ao uso de uma
unidade de gerenciamento de memória (MMU) , que permite ao sistema operacional dividir a memória disponível entre vários programas. Cada programa recebe sua própria porção de memória e a MMU garante que nenhum programa possa acessar a memória de outro programa.
Para que a multiprogramação funcione de forma eficaz, o sistema operacional também deve fornecer um mecanismo de
agendamento os programas para que sejam executados de forma justa e eficiente. O agendador normalmente usa um
round-robin algoritmo, que dá a cada programa um intervalo de tempo de igual duração para ser executado. Quando o intervalo de tempo de um programa termina, ele é interrompido e o próximo programa na fila tem a chance de ser executado.
A multiprogramação tem várias vantagens sobre a programação única. Primeiro, melhora o rendimento geral do sistema, uma vez que vários programas podem ser executados ao mesmo tempo. Em segundo lugar, reduz o tempo que um usuário precisa esperar até que um programa comece a ser executado, já que o sistema operacional pode alternar entre programas muito rapidamente. Terceiro, torna possível executar vários programas ao mesmo tempo, mesmo que alguns programas exijam mais E/S do que outros.
A principal desvantagem da multiprogramação é que ela pode aumentar a sobrecarga associada ao sistema operacional, uma vez que o sistema operacional precisa gerenciar a memória e o agendamento de vários programas. No entanto, esta sobrecarga é normalmente pequena e os benefícios da multiprogramação superam em muito os custos.
Aqui está um exemplo simplificado de como funciona a multiprogramação: 1. O sistema operacional aloca uma porção de memória para cada um dos programas que serão executados.
2. O sistema operacional coloca o primeiro programa na fila de programas prontos.
3. A CPU executa o primeiro programa por um intervalo de tempo de duração especificada.
4. Quando o intervalo de tempo termina, o sistema operacional antecipa o primeiro programa e o coloca no final da fila de programas prontos.
5. O sistema operacional então coloca o próximo programa na fila de programas prontos no início da fila e fornece a ele um intervalo de tempo com duração especificada.
6. O processo se repete até que todos os programas tenham sido executados.