1. Il Concetto di Concorrenza (Concurrency)
La concorrenza descrive una struttura di programma o un sistema in cui più attività logiche sembrano progredire simultaneamente. Tuttavia, su un singolo processore mono-core, questo avviene tramite l'interleaving (alternanza rapida): il sistema operativo alterna l'esecuzione dei processi assegnando brevi quanti di tempo (Time Slicing), dando all'utente l'illusione della simultaneità.
Un sistema è concorrente se può gestire più di un task in corso di esecuzione senza che uno debba necessariamente attendere la conclusione completa dell'altro prima che il successivo possa iniziare.
2. Il Concetto di Parallelismo (Parallelism)
Il parallelismo, d'altra parte, richiede hardware fisico multi-core o multiprocessore. Significa che due o più calcoli o istruzioni vengono eseguiti letteralmente nello stesso istante temporale su core differenti del processore.
- Concorrenza: Riguarda la struttura e la gestione logica dei task (molte cose in corso di gestione). Può esistere anche su un solo core.
- Parallelismo: Riguarda l'esecuzione fisica simultanea (molte cose che avvengono nello stesso identico nanosecondo grazie a core fisici distinti).
3. Simulatore Interattivo: Concorrenza vs Parallelismo
Confronta visivamente come un processore a Singolo Core gestisce la concorrenza tramite interleaving rispetto a un processore Dual-Core che esegue task in vero parallelismo.
Singolo Core (Concorrenza / Interleaving)
I task Task-A e Task-B si alternano a turno sullo stesso core.
Multi-Core (Parallelismo Reale)
Task-A e Task-B vengono eseguiti contemporaneamente su core separati.