UniTO/anno2/YearI/MCAD/lesson1-03102017.md
Francesco Mecca c340eec727 mcad portatil
2019-01-23 12:03:37 +01:00

2.4 KiB

Introduzione - Programmazione Concorrente

Concorrenza

La concorrenza di un programma e' l'interleaving di istruzioni atomiche. In questo corso l'ipotesi generale e' che l'operazione (statement) di assegnazione e' atomico.

Atomicita'

Differenti architetture supportano differenti granularita' di atomicita'. La granularita' e' la piu' piccola istruzione atomica eseguibile dall'architettura.

  • Monoprocessore -> istruzione macchina
  • Multiprocessore (memoria comune) -> accesso alla memoria comune (microistruzioni LOAD/STORE)

-> Per valutare la correttezza di un programma concorrente e' necessario conoscere alcuni dettagli architetturali.

Correttezza di un programma concorrente

La correttezza di un programma concorrente e' l'assenza di problematiche legate alla concorrenza/accesso alle risorse. Pertanto, un programma concorrente e' corretto se non produce deadlock, starvation, race conditions, etc.

Proprieta'

Gli statements di Lamport definiscono le due proprieta' di correttezza di un programma concorrente:

  • Safety: la proprieta P deve sempre essere vera, in ogni istante della computazione.
  • Liveness: la proprieta P prima o poi deve essere vera, in un determinato istante della computazione.

Legata alla proprieta' di liveness c'e' la Proprieta di Fairness: Una computazione che per ogni suo stato ha uno statement abilitato che prima o poi sara' eseguito. Questo vuol dire che ogni statement viene eseguito (e quindi non ci sono statement che subiscono starvation). Richiede conoscenze hardware (Arbitro di Memoria, architettura processore, scheduler per single core, etc)

Linguaggi Concorrenti

Deve implementare moduli sequenziali asincroni interagenti. (vedi slides, banale)

Macchina Concorrente

Macchina virtuale o astratta, spesso basata su una macchina fisica molto piu' semplice.

  • il Kernel e' la parte SW che si identifica come supporto run time, fornendo multiprogrammazione e sincronizzazione di moduli.

Due configurazioni di memoria:

  • Comune, unica per le unita' di elaborazione
  • Modello a Rete, elaboratori collegati da una sottorete di comunicazione, non condividono memoria.

Nota: modello a rete non implica piu' processori, puo' essere costruito su qualunque architettura. Un monoprocessore puo' effettivamente costituire un modello a reti nel caso la memoria sia separata per ogni processo.

(vedi slides per tabella di architettura)