01/09/2024
A principal mensagem é que "Concorrência não é Paralelismo", destacando que esses conceitos, embora relacionados, não são a mesma coisa. Vamos traduzir e explicar cada seção da imagem.
1. Não Concorrente, Não Paralelo (Not Concurrent, Not Parallel)
Um núcleo de CPU executa cada tarefa sequencialmente, de modo que a Tarefa A termine antes da Tarefa B
Neste cenário, uma única CPU com um único núcleo (Core 1) executa tarefas de forma sequencial. Isso significa que uma tarefa deve ser completamente concluída antes que a próxima comece. Não há sobreposição de execução de tarefas, e elas são processadas uma após a outra. Esse é o modo mais básico de processamento, sem concorrência e sem paralelismo.
2. Concorrente, Não Paralelo (Concurrent, Not Parallel)
Um núcleo de CPU executa cada tarefa sequencialmente, de modo que Tarefa A e Tarefa B possam terminar aproximadamente ao mesmo tempo.
Neste caso, ainda temos uma única CPU com um único núcleo, mas agora ela alterna entre as tarefas, dividindo o tempo de execução entre elas. Embora as tarefas ainda sejam executadas uma de cada vez (não paralelamente), elas são intercaladas de maneira que pareçam estar sendo executadas simultaneamente. Este é um exemplo de concorrência sem paralelismo, pois há sobreposição temporal na execução das tarefas, mas elas não estão sendo executadas ao mesmo tempo.
Dois núcleos de CPU executam cada tarefa sequencialmente, de modo que a Tarefa A termine antes da Tarefa B.
Aqui, temos duas CPUs (ou dois núcleos de CPU) e cada núcleo está executando uma tarefa separada. No entanto, cada núcleo executa sua tarefa de maneira sequencial, sem alternância entre diferentes tarefas. Assim, cada núcleo lida com uma tarefa de cada vez, mas como há dois núcleos, duas tarefas podem ser executadas em paralelo. Isso é paralelismo sem concorrência, pois as tarefas estão sendo executadas simultaneamente, mas sem divisão de tempo entre diferentes tarefas em um núcleo.
Dois núcleos de CPU executam cada tarefa simultaneamente, de modo que ambas as tarefas possam terminar aproximadamente ao mesmo tempo.
Neste cenário, há duas CPUs (ou dois núcleos de CPU) que estão executando várias tarefas ao mesmo tempo. Cada núcleo pode alternar entre suas próprias tarefas (concorrência), e como há dois núcleos, tarefas em diferentes núcleos são executadas simultaneamente (paralelismo). Este é o exemplo de concorrência e paralelismo combinados, onde múltiplas tarefas são gerenciadas ao mesmo tempo em múltiplos núcleos.
A imagem destaca a diferença fundamental entre concorrência e paralelismo:
É possível ter sistemas que são apenas concorrentes, apenas paralelos, ou ambos concorrentes e paralelos. Entender essa distinção é crucial para otimizar o desempenho de programas e sistemas, especialmente em ambientes de computação intensiva.