Qual é a diferença entre multithreading e multitarefa?

Multi-rosqueamento

uma técnica pela qual um único conjunto de códigos pode ser usado por vários processadores em diferentes estágios de execução.

Exemplo em tempo real

é usar o Microsoft word -> você pode digitar uma palavra ao mesmo tempo em que verifica a ortografia no plano de fundo e na gramática da frase.

Exemplo do Quora: lendo uma resposta e verificando a foto da tela para o escritor (quão quente ela é.)

Multitarefa

é um conceito de executar várias tarefas (também conhecidas como processos) durante um certo período de tempo, executando-as simultaneamente.

Exemplo em tempo real

para humanos está recebendo ligações enquanto digita um e-mail.

Exemplo do Quora: Fazendo uma pergunta "Qual é o seu maior segredo?" e pesquisando no Facebook uma nova namorada e um aplicativo do Tinder no telefone para novos gostos.

Basicamente, não há muita diferença entre esses 2u, pode-se dizer multiencadeamento como uma forma especificada de multitarefa.Um programa multiencadeado contém 2 ou mais encadeamentos sendo executados simultaneamente. processo é uma tarefa altamente ponderada que requer seu próprio espaço de endereço. A comunicação entre processos é muito cara e os contextos mudam de um processo para outro processo, pois são executados em diferentes espaços de endereço. intérpretes

Tarefas são como trabalhos. Portanto, multitarefa significa realizar vários trabalhos ao mesmo tempo. Os threads são executados em um processo ou tarefa. Portanto, multi-threading significa muitas subtarefas sendo executadas dentro de uma tarefa principal.

Assim, usar o Microsoft word e o Powerpoint é multitarefa enquanto, digitar e usar a gramática e a verificação ortográfica significa que você está executando 2 threads no Microsoft word.

Principais diferenças entre multitarefa e multithreading no SO

  • A diferença básica entre multitarefa e multithreading é que, na multitarefa, o sistema permite executar vários programas e tarefas ao mesmo tempo, enquanto que, na multithreading, o sistema executa vários threads do mesmo ou de diferentes processos ao mesmo tempo.
  • Na multitarefa, a CPU precisa alternar entre vários programas para que pareça que vários programas estão sendo executados simultaneamente. Por outro lado, na CPU multithreading, é necessário alternar entre vários threads para fazer parecer que todos os threads estão em execução simultaneamente.
  • A multitarefa aloca memória e recursos separados para cada processo / programa, enquanto que, nos threads de multithreading pertencentes ao mesmo processo, compartilham a mesma memória e recursos do processo.

MultiTasking

é o compartilhamento de recursos do computador entre o número de processos ou a execução de diferentes processos ao mesmo tempo, como

trabalhando no MSOffice enquanto o VLC player está sendo executado

enquanto que

MultiThreading

é a execução de várias tarefas diferentes dentro de um mesmo processo como

no MSWord enquanto você escreve, a autocorreção é realizada simultaneamente

.

Multitarefa:

A capacidade de executar vários programas simultaneamente, potencialmente utilizando vários processadores, mas predominantemente, compartilhando o tempo de seus requisitos de recursos.

Um exemplo está no seu desktop, onde você pode ter um navegador da Web, cliente de e-mail, reprodutor de áudio, processador de texto, planilha e quem sabe o que mais está no ar ao mesmo tempo. Eles podem entrar e sair do processador para si muitas vezes por segundo, porque nenhum deles precisa de tudo isso por muito tempo.

Multithreading:

A capacidade de executar várias funções de um único programa simultaneamente, predominantemente utilizando vários processadores, mas potencialmente, compartilhando o tempo de seus requisitos de recursos.

Um exemplo seria um servidor da Web, em que as respostas a todas as solicitações recebidas precisam da mesma lógica e estado do programa, mas diferentes identificadores em algumas coisas (soquete de rede, ID do chamador, qualquer outra coisa). Compartilhar o maior número de dados pertencentes ao programa, mas ter cópias dedicadas de uma pequena quantidade de itens particulares, permite que os threads sejam gerados e destruídos muito rapidamente e permite um aumento no poder de processamento disponível para aumentar o número de solicitações respondidas sem exigir cópias adicionais do programa do servidor para execução.

Esses são basicamente dois lados da mesma moeda, a diferença no vocabulário se deve principalmente a programas (processos) inteiros, sendo uma unidade maior de estado armazenado, com uma carga de trabalho correspondentemente maior necessária para alternar entre processadores e / ou memória.

Ambos exigem algum mecanismo de agendamento de O / S para rastrear qual processo / encadeamento vai a seguir, vai aonde e quando, mas as diferenças no custo de manipulação de processos e encadeamentos significam que a melhor política para um não é necessariamente boa para o outro. Portanto, eles recebem nomes diferentes e podem ser discutidos como coisas diferentes, dentro de um contexto implícito na palavra escolhida atualmente.

Multitarefa

A capacidade de executar vários programas simultaneamente, potencialmente utilizando vários processadores, mas predominantemente, compartilhando o tempo de seus requisitos de recursos.

Um exemplo está no seu desktop, onde você pode ter um navegador da Web, cliente de e-mail, reprodutor de áudio, processador de texto, planilha e quem sabe o que mais está no ar ao mesmo tempo. Eles podem entrar e sair do processador para si muitas vezes por segundo, porque nenhum deles precisa de tudo isso por muito tempo.

Multithreading

A capacidade de executar várias funções de um único programa simultaneamente, predominantemente utilizando vários processadores, mas potencialmente, compartilhando o tempo de seus requisitos de recursos.

Um exemplo seria um servidor da Web, em que as respostas a todas as solicitações recebidas precisam da mesma lógica e estado do programa, mas diferentes identificadores em algumas coisas (soquete de rede, ID do chamador, qualquer outra coisa). Compartilhar o maior número de dados pertencentes ao programa, mas ter cópias dedicadas de uma pequena quantidade de itens particulares, permite que os threads sejam gerados e destruídos muito rapidamente e permite um aumento no poder de processamento disponível para aumentar o número de solicitações respondidas sem exigir cópias adicionais do programa do servidor para execução.

Esses são basicamente dois lados da mesma moeda, a diferença no vocabulário se deve principalmente a programas (processos) inteiros, sendo uma unidade maior de estado armazenado, com uma carga de trabalho correspondentemente maior necessária para alternar entre processadores e / ou memória.

Ambos exigem algum mecanismo de agendamento de O / S para rastrear qual processo / encadeamento vai a seguir, vai aonde e quando, mas as diferenças no custo de manipulação de processos e encadeamentos significam que a melhor política para um não é necessariamente boa para o outro. Portanto, eles recebem nomes diferentes e podem ser discutidos como coisas diferentes, dentro de um contexto implícito na palavra escolhida atualmente.

Geralmente, multitarefas é referido como um recurso do SO, enquanto multithreading é o recurso de processo, que é chamado de tarefa desde cedo, quando não existe algo chamado thread e multithreading.

Portanto, multitarefa significa que um sistema operacional pode ter vários processos (tarefas) executados simultaneamente, da maneira que desejar. Multithreading significa que em qualquer processo único, vários threads são permitidos e, novamente, podem ser executados simultaneamente. A multitarefa é o compartilhamento de recursos de computação (CPU, memória, dispositivos etc.) entre processos, enquanto a multithreading é o compartilhamento de recursos de computação entre os segmentos de um único processo.

Se você quiser exemplos, o Linux é um sistema operacional multitarefa, como você pode ver alguns dos processos em execução ao mesmo tempo, por exemplo, eu tenho esses processos java em execução na minha máquina ao mesmo tempo.

  1. $ ps u -C javaUSER PID% CPU% MEM VSZ RSS TTY STAT STAND COMMANDxxxxxxxx 8039 0.0 0.0 1437400 47912 pts / 2 Sl + Dec24 0:01 / usr / java / jdk / bin / java-server .... xxxx 29380 0.0 0,5 1445984 382700 pts / 36 Sl + dez de14 0:33 / usr / java / jdk / bin / servidor java ....

E o processo 8039, por sua vez, é um processo de multithreading, como mostrado, o fato de os pids nas folhas não aparecerem no comando anterior significa que eles são threads em vez de subprocessos do 8039:

  1. $ pstree -lp 8039java (8039) ─┬─ {java} (8048) {─ {java} (8049) ├─ {java} (8050) ├─ {java} (8051) {─ {java} (8052) ├ ─ {java} (8053) ├─ {java} (8054) ├─ {java} (8055) ├─ {java} (8056) ├─ {java} (8057) ├─ {java} (8058) {─ { java} (8059) {─ {java} (8060) {─ {java} (8061) {─ {java} (8062) {─ {java} (8063) ├─ {java} (8064) {─ {java} (8065) ​​├─ {java} (8066) {─ {java} (8067) {─ {java} (8068) {─ {java} (8069) ├─ {java} (8074) {─ {java} (8075 ) └─ {java} (8076)

Qual é a relação entre os dois? Bem, multithreading depende de multitarefa. Primeiro, vamos esclarecer o termo tarefa, que se refere a uma entidade em execução, que era um processo nas idades em que não havia multithreading e um processo é uma única entidade em execução. Com a introdução do multithreading, um único processo não é mais uma entidade em execução; os threads dele são, como resultado, a tarefa é de fato threads! O sistema operacional multitarefa que agenda tarefas agora atualmente agenda threads. O processo atua mais como um contêiner, é a unidade de alocação e separação de recursos. Threads do mesmo processo compartilham o mesmo recurso, mas processos diferentes podem se comunicar apenas através do IPC (Inter-Process Communication).

Para mais informações sobre threads e processos, consulte: