Qual é a diferença entre Multiprogramação e Multitarefa


10

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.

  1. Esta visão geral está correta? Caso contrário, é porque o WP está incorreto ou porque eu li o WP errado?
  2. Por que algumas fontes parecem conflitar entre multiprogramação e multitarefa?

11
"com algumas fontes menos respeitáveis ​​(como meu professor da faculdade)" - oh querido. Espero que ele seja mais respeitável do que a Wikipedia, que possui muito conteúdo incompleto no CS.
Raphael

"multiprogramação" parece ser mais uma abordagem histórica. a multitarefa moderna está realmente relacionada ao bloqueio de E / S, mas é apenas um dos fatores usados ​​para manipular os processos. além disso, quase todas as multitarefas modernas são preventivas com o suporte da CPU (que nem sempre possuía esse suporte anos atrás, e processos bem comportados deveriam chamar métodos de espera baseados em SO que apoiavam a cooperação).
vzn

2
@ Rafael, você pode fazer um favor ao mundo inteiro assando-os com perfeição.
vonbrand

11
@ vonbrand Eu tentei, mas infelizmente existem especialistas meio cozidos suficientes para conter essas tentativas.
Raphael

@Raphael, e essa multidão não aparece aqui também?
vonbrand

Respostas:


9

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.


o artigo do WP parece sugerir que a multiprogramação não possui memória virtual, em oposição à multitarefa (sistemas). Historicamente, pode ser verdade, mas a definição é ortogonal?
didierc

11
Tivemos um IBM S / 370 multiprogramado aqui nos anos 70, e ele definitivamente não tinha memória virtual (eu me lembro que ele tinha um disco usado apenas para spool). A memória virtual permite que você tenha ainda mais programas na RAM limitada (já que você mantém apenas as partes "mais usadas"), melhor utilização dessa maneira. Então, sim, eu consideraria aqueles totalmente independentes; mas na prática hoje você não encontrará um sem o outro. Exceto talvez em seu roteador Wi-Fi ou celular ...
vonbrand

Está bem. Eu também pensava assim. Na verdade, os sistemas embarcados geralmente carecem de proteção de memória adequada, eu sabia disso. No entanto, com programas bem comportados, não deve ser um problema. Isso, é claro, depende dos fornecedores do programa.
26413 didierc

@didierc orthogonal? você quer dizer certo mutuamente exclusivo?
Jsj #

2

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.


0

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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.