LA SINCRONIZZAZIONE TRA PROCESSI

Programmazione concorrente

Correttezza temporale

Errori dipendenti dal tempo

Conciliare l'affidabilità del software all'esigenza di massimizzare l'efficienza di elaborazione;

Realizzazzione

Determinismo: i risultati devono essere uguali per ogni esecuzione, indipendentemente dalla sequenza di schedulazione.

Timing-constraint: i risultati devono essere prodotti entro certi limiti di tempi fissati (deadlines). (specifica dei sist. real time)

Caratteristiche

Latenti: si presentano con sequenze rare;

Difficili da verificare e testare;

Irriproducibilità: gli errori si presentano solo con determinate sequenza;

Indeterminati: il risultato dipende dalla sequenza seguita;

Gli accessi a una risorsa devono avvenire in modo non divisibile, cioè che le operazioni che un processo deve effettuare sulla risorsa, per esmpio l'aggiornamento di un dato, non vengano interrotte neppure dallo scheduler ma si possa garantire l'accesso in mutua esclusione.
L'inisme delle op. che devono essere ininterrompilbili devono essere programmate come sezioni critiche, utilizzando meccanismi di sincronizzazione offerti dal linguaggop di programmazione.

Interleaving

Overlapping

Si presenta nei sistemi multiprocessore e in questo caso i processi vengono eseguiti simultaneamente su processori diversi. Abbiamo un parallelismo fisico.

image

Si presenta nei sistemi monoprocessore multiprogrammati e in questo caso i processi si alternano nel tempo ma con velocità taòi che sembra dare l'impressione di avere un multiprocessore. abbiamo un parallelismo virtuale.

image

Sono degli errori che possono essere generati ad esempio a causa della schedulazione della CPU, un dato viene prodotto ma gli viene tolta la CPU prima che viene registrato (es.produttore consumatore).

Condizioni di Bernstein

Sono dei vincoli che devono essere soddisfatti per avere un esecuzione concorrente tra i processi.
Se 2 o più istruzioni soddisfano le condizioni il risultato è indipendente dalla particolare sequenza di esecuzione eseguita dai processori e sarà identico alla loro esecuzione seriale.

problemi di sincronizzazione

Deadlock: situazione di blocco multiplo e ciclico o stallo dei thread

Starvation: situazione di blocco individuale dei thread

Meccanismi di sincronizzazione

Safeness

Liveness