Programmazione distribuita e concorrente
La programmazione distribuita implica la conoscenza della programmazione concorrente
- che coinvolge diversi processi che vengono eseguiti insieme
Tre tipi di programmazione concorrente
- programmazione concorrente eseguita su calcolatori diversi
- processi concorrenti sulla stessa macchina (multitastikg)
- processo padre che genera processi figli per
fork()
- programmazione concorrente nello stesso processo
- processi lightweight all’interno del processo → thread
Multitasking
SO multitasking → creano l’illusione (per l’utente) di una macchina completamente dedicata
- ma durante l’interazione dell’utente con il proprio programma il SO ha il tempo di servire altri utenti
Multithread
Il multithread è l’estensione del multitask riferita ad un singolo programma
- in grado di eseguire più thread contemporaneamente
Thread, anche detti processi lightweight
- a differenza dei processi hanno a disposizione e condividono gli stessi dati
Meccanismo di comunicazione attraverso memoria condivisa
- strumento efficace per costruire programmi che necessitano di svolgere in parallelo più computi
- ma fonte di possibili problemi