Estou achando difícil diferenciar claramente entre Multiprogramação e Multitarefa.
Minha fonte principal é a Wikipedia , mas o artigo do WP parece estar um pouco em desacordo com algumas fontes menos respeitáveis (como meu professor universitário).
Enquanto eu leio o WP, a multiprogramação é uma maneira rudimentar de aumentar a taxa de transferência da CPU, alternando o contexto quando um processo aguarda a E / S.
A multiprogramação não garante que um programa seja executado em tempo hábil. De fato, o primeiro programa pode muito bem ser executado por horas sem precisar acessar um periférico.
O compartilhamento de tempo cooperativo , sinônimo de multitarefa cooperativa , é uma melhoria na multiprogramação (com a qual não é sinônimo). O contexto da CPU alterna regularmente para dar a impressão de execução simultânea, mas os processos ainda precisam ser gerados - e programas mal projetados podem passar fome pelo resto do sistema.
A multitarefa preemptiva assume um controle mais agressivo do agendamento, priorizando alguns processos em detrimento de outros, etc.
- Esta visão geral está correta? Caso contrário, é porque o WP está incorreto ou porque eu li o WP errado?
- Por que algumas fontes parecem conflitar entre multiprogramação e multitarefa?
Respostas:
Eles são mais ou menos sinônimos. A multiprogramação é mais usada quando uma CPU está envolvida, que está sendo alternada de um processo para outro, processos que são redigitados na memória simultaneamente. Junto vieram tópicos, e ele não estava mais alternando entre programas ...
Os processadores, principalmente a linha intel, possuíam os mecanismos para verdadeira multitarefa (interrupção do timer, instruções privilegiadas) desde pelo menos o 80286. O M68000 usado no primeiro Mac era um processador com capacidades multitarefas completas. Este não é um desenvolvimento recente em arquiteturas. Observe que, na primeira vez em que os sistemas compartilhados trocaram os programas do usuário, eles não eram realmente multiprogramas no sentido de ter vários programas na memória ao mesmo tempo.
A idéia é ter vários programas que residem na memória simultaneamente, para que quando um produz a CPU (ao terminar ou aguardando) há outros prontos para usar a CPU, aumentando assim a utilização da CPU (e como você pode considerar que cada burst de CPU seja preparando-se para o uso de E / S, aumente o uso geral). Isso fornece melhor rendimento (importante em sistemas em lote).
Além do tempo compartilhado, vários usuários interativos se conectaram à máquina. A mesma idéia, mantenha seus programas por perto, mas alterne entre eles com rapidez suficiente para ter a ilusão de "ter um computador para si". Requer um timer que interrompa a CPU para evitar a monopolização.
Em máquinas pessoais, não havia muito incentivo para executar vários programas ao mesmo tempo, pelo menos inicialmente (um usuário na frente de uma máquina severamente limitada não esperava muito). À medida que as máquinas cresciam, uma maneira de contornar isso e permitir vários programas por vez sem alterar muito o sistema operacionalera "multitarefa cooperativa", em que todo programa deveria render periodicamente ao sistema operacional para selecionar outro para executar. Como o programa que está fazendo isso está sob controle total, ele pode optar por fazer isso quando nada pode ser prejudicado por outras pessoas. Desnecessário dizer que um programa que "esquece" de cumprir seu dever de obter um aumento interessante no desempenho ... os primeiros sistemas Mac funcionavam dessa maneira e, pelas razões acima, isso não durou muito. Em sistemas embarcados com nenhum ou apenas sistema operacional rudimentar e um conjunto rigidamente controlado de programas em execução, essa é certamente uma opção atraente.
fonte
Diferença entre multitarefa e multiprogramação? Multitarefa é uma extensão lógica da multiprogramação. Classicamente, em um ambiente de multiprogramação, mais de um usuário compartilha a CPU e a CPU muda rapidamente de um usuário para outro, fornecendo uma transparência completa um do outro. Na multitarefa, o usuário é substituído por programas, ou seja, mais de um programa compartilha o processador e o processador muda rapidamente de um programa para outro. Na verdade, um software que reside no disco é um programa. Quando introduzido na RAM para execução é conhecido como processo ou tarefa e quando está dentro da CPU e em execução, é conhecido como thread. Portanto, a multiprogramação é basicamente para multiusuários e a multitarefa é para um único usuário com vários programas. Como a maioria dos sistemas operacionais modernos suporta os dois, eles geralmente são ortográficos de forma intercambiável.
fonte
Existem muitas diferenças entre multitarefa e multiprogramação.
A multitarefa está executando mais de uma tarefa por vez. Por exemplo, você está ouvindo uma música, imprimindo um papel e digitando no MS-Word ao mesmo tempo.
Durante a multiprogramação, nesse tipo de sistema operacional, aprimoramos a utilização da CPU usando buffer e spool. Na execução seqüencial, a CPU fica ociosa após a execução de um programa e carrega o próximo programa da memória principal. Durante as operações de E / S, a CPU também fica ociosa, a CPU também fica ociosa, mas, usando um ambiente de multiprogramação, a CPU alterna para o próximo programa e o processa. Esta é uma técnica usada com a ajuda de buffer e spool.
fonte