Programmazione Concorrente: Concetti di Base Valter Crescenzi Corso di Programmazione Concorrente.

Slides:



Advertisements
Presentazioni simili
Linguaggio C e C++.
Advertisements

STRUTTURA DEL SISTEMA OPERATIVO
Meccanismi di IPC Problemi classici di IPC
CONCLUSIONE - Nucleo (o Kernel) Interagisce direttamente con lhardware Interagisce direttamente con lhardware Si occupa dellesecuzione.
Il Software.
Gestione della memoria centrale
Capitolo 3 Risorse e Stallo 3.1. Risorse 3.2. Introduzione
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità E1 Dallanalisi del problema alla definizione dellalgoritmo.
Linguaggi algoritmici
Procedure e funzioni A. Ferrari.
Linguaggi di programmazione
Type Checking (1° parte)
Il problema dello stallo
1 Processi e Thread Meccanismi di IPC, Inter Process Communication (1)
1 Processi e Thread Meccanismi di IPC (1). 2 Comunicazioni fra processi/thread Processi/thread eseguiti concorrentemente hanno bisogno di interagire per.
Generalità Linguaggio e Macchina Astratta
DOCUMENTAZIONE DI SCHEMI E/R
Time Sharing Il termine “Time Sharing” proviene dall'inglese e significa letteralmente “partizione di tempo”. Questa è una tecnica sviluppatasi negli.
Concetti di base della Programmazione Concorrente.
La Modifica dei Dati in una Base Dati La modifica dei dati contenuti allinterno di una base dati è unoperazione delicata Infatti, ogni potenziale problema.
Introduzione al calcolo parallelo SISTEMI INFORMATIVI AZIENDALI Pierpaolo Guerra Anno accademico 2009/2010.
Il Software: Obiettivi Programmare direttamente la macchina hardware è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica del computer.
Sistemi basati su conoscenza (agenti intelligenti) Prof. M.T. PAZIENZA a.a
Introduzione allinformatica. Cosè linformatica ? Scienza della rappresentazione e dellelaborazione dellinformazione ovvero Studio degli algoritmi che.
Corso di Laurea in Biotecnologie Informatica (Programmazione)
Corso di Informatica (Programmazione)
Risorse e Stallo.
Corso di Programmazione Concorrente Stallo Valter Crescenzi nz.
Corso di Programmazione Concorrente Problemi Classici Valter Crescenzi nz.
Struttura dei sistemi operativi (panoramica)
Modelli simulativi per le Scienze Cognitive
CAPITOLO 2 INTRODUZIONE AL LINGUAGGIO JAVA E ALL'AMBIENTE HOTJAVA.
3. Architettura Vengono descritte le principali componenti hardware di un calcolatore.
Sincronizzazione fra thread
Sistemi Operativi GESTIONE DEI PROCESSI.
Strutture dei sistemi di calcolo Funzionamento di un sistema di calcolo Struttura di I/O Struttura della memoria Gerarchia delle memorie Architetture di.
Il sistema operativo Vito Perrone
Fondamenti di Informatica1 Software di base Tra il linguaggio macchina (basso livello) e i linguaggi evoluti (alto livello) esiste uno strato di software.
Normalizzazione Le forme normali certificano che la base di dati soddisfa criteri di qualità che mirano ad evitare le ridondanze e i conseguenti effetti.
Reti di Calcolatori L-S Un Sistema Decentrato di Allocazione del Carico per Applicazioni di Calcolo Distribuito Mauro Bampo.
Elementi di Informatica
Concorrenza e Sincronizzazione di Thread e Processi
INTRODUZIONE l sistema operativo è il primo software che lutente utilizza quando accende il computer; 1)Viene caricato nella memoria RAM con loperazione.
1 Programmazione = decomposizione basata su astrazioni (con riferimento a Java)
Lo sviluppo del progetto informatico
Sistemi basati su conoscenza Gestione della conoscenza Prof. M.T. PAZIENZA a.a
Prima di iniziare… Durata attività: due lezioni frontali + una lezione laboratorio + compiti per casa Prerequisiti: elementi base architettura dei calcolatori.
I processi.
Estratto dalle slide di Informatica Industriale - DU - 10
Informatica Lezione 5 Scienze e tecniche psicologiche dello sviluppo e dell'educazione (laurea triennale) Anno accademico:
Gestione del processore (Scheduler)
Tecnologie Informatiche ed Elettroniche per le Produzioni Animali (corso TIE) CORSO LAUREA MAGISTRALE IN SCIENZE E TECNOLOGIE DELLE PRODUZIONI ANIMALI.
Informatica Lezione 8 Scienze e tecniche psicologiche dello sviluppo e dell'educazione Anno accademico:
Sistema operativo Il Sistema Operativo gestisce le risorse hw e sw del sistema di elaborazione Facilita l'interazione tra utente e sistema Esistono diversi.
Algoritmi.
Sistemi basati su conoscenza (agenti intelligenti) Prof. M.T. PAZIENZA a.a
1 Macchine astratte, linguaggi, interpretazione, compilazione.
Sistemi operativi di rete Ing. A. Stile – Ing. L. Marchesano – 1/18.
Progettazione di basi di dati: metodologie e modelli
Il software Claudia Raibulet
1 Risorse e Stallo 2 Risorse (1) Esempi di risorse –stampanti –nastri –tabelle I processi devono accedere alle risorse in un ordine ragionevole Supponiamo.
Hardware Struttura fisica (architettura) del calcolatore formata da parti meccaniche, elettriche, elettroniche.
INTRODUZIONE AI SISTEMI OPERATIVI. Introduzione Il software può essere diviso un due grandi classi: Il software può essere diviso un due grandi classi:
Le basi di dati.
Informatica Problemi e algoritmi. una situazione che pone delle domande cui si devono dare risposte. Col termine problema o situazione problematica s’indica.
Parsing ricorsivo discendente Il parsing ricorsivo discendente (recursive descent parsing) è un metodo di tipo top-down che può essere facilmente codificato.
© 2016 Giorgio Porcu - Aggiornamennto 18/03/2016 I STITUTO T ECNICO SECONDO BIENNIO T ECNOLOGIE E P ROGETTAZIONE Il Sistema Operativo Concorrenza e Grafi.
1 Informatica di Base Facoltà di Lingue e Letterature Straniere Corso di laurea in Relazioni Pubbliche.
Hardware Struttura fisica (architettura) del calcolatore formata da parti meccaniche, elettriche, elettroniche.
Il Sistema Operativo Processi e Risorse
Transcript della presentazione:

Programmazione Concorrente: Concetti di Base Valter Crescenzi Corso di Programmazione Concorrente

Programmi e Flussi di Esecuzione Programma: descrizione statica, ovvero che non cambia nel tempo, di un flusso di esecuzione Flusso di Esecuzione: concetto dinamico, ovvero che evolve nel tempo un flusso di esecuzione scaturisce con lesecuzione di un programma da parte di un esecutore ad un medesimo programma possono corrispondere molteplici flussi di esecuzione Un flusso di esecuzione per poter avanzare necessita di risorse, prima tra tutte, lesecutore

Risorse Servono per lavanzamento dei flussi di esecuzione Lesecutore è una di queste risorse, ma ne esistono di molti altri tipi Consideriamo, per concretezza, esempi di risorse hardware, ma ragionamenti analoghi si possono fare anche con altri tipi di risorse, ad esempio risorse software

Prerilasciabilità delle Risorse Prerilasciabili si possono sottrarre al flusso di esecuzione che le sta usando senza causare il fallimento dellesecuzione in atto risorsa non seriale: molteplicità della risorsa > 1 es. memoria virtuale, processore virtuale Non Prerilasciabili se sottratte al flusso di esecuzione che le sta usando, lesecuzione fallisce risorse seriali; molteplicità = 1 es. stampante, masterizzatore Molteplicità di una risorsa: numero massimo di flussi di esecuzione che la possono usare concorrentemente senza comprometterne l'utilizzo

Risorse di Molteplicità Finita Per le risorse di molteplicità finita, affinché lutilizzo risulti costruttivo, è necessario che gli accessi alla risorsa siano controllati Si prevede Un gestore della Risorsa Un protocollo di accesso alla Risorsa richiesta ed ottenimento della risorsa utilizzo della risorsa rilascio della risorsa

Programmazione Sequenziale La programmazione è di solito insegnata con riferimento ad un esecutore sequenziale Un esecutore sequenziale svolge una sola azione alla volta sulla base di un programma sequenziale Lesecuzione di un programma sequenziale origina un flusso di esecuzione sequenziale che conferisce un ordinamento totale alle azioni eseguite La programmazione di un esecutore concorrente, ovvero in grado di eseguire più istruzioni contemporaneamente, sebbene più difficile di quella tradizionale, ha forti motivazioni didattiche e pratiche

Programmazione Concorrente: Motivazioni Migliorare la comprensione di un SO che regola diverse attività parallele Sfruttare le prestazioni ottenibili da architetture multi- processor un programma sequenziale non giova di una architettura parallela Migliorare la reattività delle applicazioni allinput dellutente durante lunghe operazioni di I/O o di elaborazione La maggiore naturalezza con la quale si possono scrivere alcune tipologie di applicazioni (server, robotica, giochi, simulazioni di attività concorrenti)

Utilizzo dei Processori: Applicazione mono-thread

Utilizzo dei Processori: Applicazione multi-thread

Istruzione ed Area Memoria Per ragionare a vari livelli di granularità, consideriamo astrattamente i due concetti di istruzione ed area di memoria Istruzione; alcune possibili esemplificazioni: istruzione macchina istruzione firmware uno statement java un metodo di una classe java un intero programma una stored-procedure di un DBMS la scrittura di un blocco del gestore della concorrenza di un DBMS Area di Memoria; alcune possibili esemplificazioni: un bit, un byte, una parola macchina un campo di una struttura dati, una struttura dati intera un attributo, una tupla, una tabella, un intero db un blocco di un dispositivo di memoria secondaria

Flussi di Esecuzione Paralleli o Concorrenti Un f.d.e. sequenziale definisce un ordinamento totale sulle istruzioni Un f.d.e. parallelo definisce un ordinamento parziale sulle istruzioni su alcune istruzioni lesecutore è libero di scegliere quali iniziare prima e/o di eseguirle contemporaneamente Esempio: consideriamo un banale programma per calcolare e stampare le prime quattro potenze di un valore X. Si supponga di disporre di tre sole tipologie di istruzione: leggi scrivi *

Diagramma delle Precedenze begin 1. leggi X; 2. scrivi X; 3. X2 X * X; 4. scrivi X2; 5. X3 X2 * X; 6. scrivi X3; 7. X4 X2 * X2; 8. scrivi X4; end Algoritmo sequenziale leggi X scrivi X scrivi X 2 X 3 X 2 *X scrivi X 3 scrivi X 4 X 2 X*X X 4 X 2 *X 2 Algoritmo parallelo

Esercizi Esercizio: costruire un diagramma delle precedenze che esprima il massimo grado di parallelismo nel calcolo delle seguenti espressioni sullo stile dellesempio appena visto: a) (A+B)*(C+D) b) A*X^4+B*X^3+C*X^2+D*X+E c) ( -B-SQRT(B^2-4*A*C) )/(2*A)

Esecuzioni Sequenziali e Parallele Sia i una generica istruzione, in generale può essere divisibile in istruzioni più elementari Siano I i e F i gli eventi di inizio e fine esecuzione Date due istruzioni a e b consideriamo i 6 possibili ordinamenti in cui occorrono i quattro eventi I a, F a, I b, F b I a I b F a F b I a F a I b F b I a I b F b F a I b F b I a F a I b I a F a F b I b I a F b F a esecuzioni sequenzialiesecuzioni parallele

Sequenze di Esecuzione Ammissibili Una sequenza di esecuzione ammissibile è una sequenza di questi eventi che rispetta i vincoli espressi dal diagramma delle precedenze Ad un certo diagramma delle precedenze corrispondono molteplici sequenze di esecuzione ammissibili Ad es., con riferimento al precedente diagramma: Ii1Fi1Ii2Ii3Fi2Fi3Ii4Ii7Ii5Fi5Fi7Fi4Ii6Fi6Ii8Fi8Ii1Fi1Ii2Ii3Fi2Fi3Ii4Ii7Ii5Fi5Fi7Fi4Ii6Fi6Ii8Fi8

Sequenze di Interleaving Un caso speciale ma rilevante di sequenza di esecuzione ammissibile; consideriamo: un solo esecutore fisico istruzioni indivisibili due flussi di esecuzione sequenziali A e B con istruzioni a 1 a 2 a 3 a 4… b 1 b 2 b 3 b 4… Diciamo sequenza di interleaving la sequenza scelta dallesecutore, ad esempio: a 1 b 1 b 2 a 2 b 3 a 3 a 4 b 4… Analogamente per tre o più flussi di esecuzione

Processori Virtuali Astrazione dei servizi offerti dai sistemi operativi moderni Molteplici esecutori virtuali possono essere implementati con uno o più processori fisici attraverso tecniche di context-switching In base al numero di processori fisici disponibili ed al numero di f.d.e. esistenti, risultano possibili varie situazioni per farli avanzare concorrentemente interleaving overlapping una combinazione di queste due

Overlapping ed Interleaving Lesecutore può eseguire più istruzioni concorrentemente mediante overlapping interleaving combinazione CPU 0 CPU 1 CPU 0 CPU 1 CPU 0 t t t t t t PaPa PbPb PaPa PbPb PaPa PbPb

Legge di Amdahl F: frazione del lavoro seriale N: numero di processori

Commenti alla legge di Amdahl E' un modello estremamente semplice ma efficace per stimare il miglioramento ottenibile parallelizzando un algoritmo sequenziale Trascura numerosissimi elementi (es. transitori, costi del contex-switching) ed in effetti è utilizzabile solo quando il problema è di dimensioni talmente grandi da renderli trascurabili Ogni programma concorrente contiene sempre una percentuale di lavoro intrinsecamente non parallelizzabile Ad esempio la componente che si occupa di sincronizzare i flussi tra cui è stato ripartito il lavoro Questa componente seriale limita il massimo speed-up ottenibile e rende antieconomico aumentare il numero di processori fisici oltre un certo numero

Fork & Join Per esprimere attività concorrenti si possono usare diversi costrutti. Nella forma più semplice, bastano: fde_id = fork crea un f.d.e. figlio di quello attuale mediante lattivazione del programma specificato. Restituisce lidentificatore del f.d.e. figlio appena creato. Padre e figlio continuano indipendentemente il loro avanzamento. join fde _id il f.d.e. corrente rimane bloccato sino a quando non termina il f.d.e. con l'identificatore specificato In genere ciascun flusso di esecuzione è dotato di proprie aree di memoria dati (record di attivazione) mentre il codice può essere condiviso. In questo caso si parla di programmi o procedure rientranti

Traduzione di un Diagramma delle Precedenze con fork & join concurrent Procedure P 1 begin ; end concurrent Procedure P 2 begin ; end … begin P 1 ; fork P 2 ; fork P 3 ; join P 2 ; join P 3 ; P 4 ; end P3P3 P2P2 P1P1 P4P4

Esercizi Esercizio: tradurre con fork e join il diagramma delle precedenze per il calcolo e la stampa delle prime quattro potenze di un dato numero. Esercizio: disegnare il diagramma delle precedenze per il calcolo e la stampa progressiva delle prime N potenze di un dato numero; tradurre con fork e join il diagramma delle precedenze trovato. Ragionare sulla presenza del ciclo di iterazione, come esprimerlo ed interpretarlo in un diagramma delle precedenze. Esercizio: disegnare il diagramma delle precedenze per il calcolo del prodotto di due matrici interi; tradurre con fork e join il diagramma delle precedenze trovato.

Esercizi P3P3 P2P2 P1P1 P4P4 P2P2 P3P3 P1P1 P6P6 P4P4 P5P5 Esercizio: tradurre con fork e join i diagrammi delle precedenze mostrati accanto.

Fork & Join: Espressività Queste due primitive sono sufficienti a tradurre un qualsiasi diagramma delle precedenze Vantaggi: flessibilità espressività Svantaggi: basso livello di astrazione Rispetto al diagramma delle precedenze, il programmatore è costretto a specificare la creazione dei flussi non impongono alcuna particolare struttura al programma concorrente

Altri Costrutti per Esprimere Programmi Concorrenti cobegin P 1 || P 2 || … || P n coend P1P1 P2P2 PnPn … Esegue n istruzioni concorrentemente Non sono sufficientemente espressive da esprimere qualsiasi diagramma delle precedenze Risulteranno comode per esprimerne alcuni

Quando Eseguire Concorrentemente? Dato un programma sequenziale, non è difficile costruire un equivalente diagramma delle precedenze Tuttavia è opportuno stabilire un criterio generale per capire se due istruzioni possono essere eseguite concorrentemente o meno: per ottenere diagrammi delle precedenze che esprimono il massimo grado di parallelismo possibile per automatizzare il calcolo dei vincoli che esprimono Quando è lecito eseguire concorrentemente due istruzioni i a e i b ?

Dominio e Rango Indichiamo con A, B, … X, Y, … unarea di memoria Una istruzione i dipende da una o più aree di memoria che denotiamo domain( i ), ovvero dominio di i altera il contenuto di una o più aree di memoria che denotiamo range( i ) di i, ovvero rango di i Ad es. per la procedura P procedure P begin X A + X; Y A * B; end domain( P )= {A, B, X} range( P )= {X, Y}

Condizioni di Bernstein Quando è lecito eseguire concorrentemente due istruzioni i a e i b ? se valgono le seguenti condizioni, dette Condizioni di Bernstein: – range( i a ) range( i b ) = Ø – range( i a ) domain( i b ) = Ø – domain( i a ) range( i b ) = Ø

Condizioni di Bernstein (2) Si osservi che non si impone alcuna condizione su domain( i a ) domain( i b ) Sono banalmente estendibili al caso di tre o più istruzioni Esempi di violazione per le due istruzioni: X Y + 1;X Y – 1; (violano la 1.) X Y + 1;Y X - 1 ;(violano la 2. e la 3.) scrivi X; X X + Y;(violano la 3.)

Effetti delle Violazioni Quando un insieme di istruzioni soddisfa le condizioni di Bernstein, il loro esito complessivo sarà sempre lo stesso indipendentemente dallordine e dalle velocità relative con cui vengono eseguite in altre parole, indipendentemente dalla particolare sequenza di esecuzione seguita dai processori ovvero, sarà sempre equivalente ad una loro esecuzione seriale Al contrario, in caso di violazione, gli errori dipendono dallordine e dalle velocità relative generando il fenomeno dellinterferenza

Esempio di Interferenza (1) procedure Prenota begin R a POSTI - 1; POSTI R a ; end La disponibilità di un volo di una compagnia aerea è memorizzata in POSTI=1. Due signori nel medesimo istante ma da due postazioni distinte, chiedono rispettivamente di prenotare lultimo posto e di disdire la prenotazione già effettuata Le due richieste vengono tradotte in queste sequenze di istruzioni elementari indivisibili: procedure Disdici begin R b POSTI + 1; POSTI R b ; end

Esempio di Interferenza (2) Lesecuzione concorrente da luogo ad una qualsiasi delle possibili sequenze di interleaving. Consideriamo un campione di tre sequenze: R a POSTI - 1; R b POSTI + 1; POSTI R b ; POSTI R a ; (POSTI=0) R a POSTI - 1; POSTI R a ; R b POSTI + 1; POSTI R b ; (POSTI=1) R b POSTI + 1; R a POSTI - 1; POSTI R a ; POSTI R b ; (POSTI=2) esecuzione sequenziale

Interferenza Si ha interferenza in presenza di due o più flussi di esecuzione almeno un flusso di esecuzione eseguente scritture Perché un flusso esegue un cambio di stato dellarea di memoria in maniera non atomica gli stati transienti che intercorrono tra quello iniziale a quello finale sono visibili a flussi di esecuzione diversi da quello che li sta producendo N.B. Le piattaforme a cui facciamo riferimento non offrono la possibilità di fare aggiornamenti atomici

Origine dei Fenomeni di Interferenza stato consistente iniziale stato consistente finale flusso di esecuzione flusso di esecuzione scrittore stato transiente

Errori Dipendenti dal Tempo Linterferenza causa errori particolarmente temibili perché dipendenti dalla sequenza di interleaving effettivamente eseguita Temibili perché ciascuna sequenza di esecuzione può produrre effetti diversi la scelta della particolare sequenza adottata è (dal punto di vista del programmatore) casuale

Caratteristiche degli Errori Dipendenti dal Tempo irriproducibili: possono verificarsi con alcune sequenze e non con altre indeterminati: esito ed effetti dipendono dalla sequenza latenti: possono presentarsi solo con sequenze rare difficili da verificare, e testare: perché le tecniche di verifica e testing si basano sulla riproducibilità del comportamento

Il Programmatore e gli Errori Dipendenti dal Tempo Il programmatore non può fare alcuna assunzione: sulla particolare sequenza di interleaving eseguita, ovvero sulle velocità relative dei vari processori virtuali su un qualsiasi altro tipo di sincronismo legato alla specifica implementazione dei processori virtuali Un programma che implicitamente od esplicitamente basa la propria correttezza su ipotesi circa la velocità relativa dei vari processori, è scorretto Esiste una sola assunzione che possono fare i programmatori sulla velocità dei processori virtuali…

Assunzione di Progresso Finito Tutti i processori virtuali hanno una velocità finita non nulla Questa assunzione è lunica che si può fare sui processori virtuali e sulle loro velocità relative

Starvation & Deadlock (1) Esistono due diverse situazioni che possono invalidare lassunzione di progresso finito starvation: quando un f.d.e. rimane in attesa di un evento che pure si verifica infinite volte un sistema di f.d.e. che garantisce contro questa evenienza si dice che gode della proprietà di fairness deadlock (o stallo): quando due o più f.d.e. rimangono in attesa di eventi che non potranno mai verificarsi a causa di condizioni cicliche nei f.d.e. e nella richiesta di risorse esempio classico: un processo P a possiede una risorsa R 1 e richiede una risorsa R 2 già posseduta da un altro processo P b ; questultimo a sua volta richiede luso di R 1

Starvation & Deadlock (2) proprietà di fairness – Accezione stringente, non bastano argomentazioni probabilistiche: se esiste anche una sola sequenza di esecuzione ammissibile in cui un flusso non avanza mai un algoritmo è considerato unfair – Per semplicità chiamiamo unfair anche una simile sequenza Osservazioni: un algoritmo unfair ma che dal punto di vista probabilistico sembra produrre solo seq. unfair con probabilità tendenti allo zero potrebbe nella pratica causare uno di questi scenari: Starvation: le seq. unfair diventa probabile a causa di fattori trascurati nella modellazione Forte varianza nei tempi di attesa di un f.d.e. >> deadlock (o stallo)

Unfairness: conseguenze Forte impatto nelle performance Varianza dei tempi di esecuzione Il contesto decide cosa risulta più opportuno Varianza dei tempi di esecuzione Tempo di esecuzione

Divisibilità delle Istruzioni ed Assunzione di Progresso Finito Salvo diverso ed esplicito avviso in senso contrario, assumeremo che tutte le istruzioni di cui faremo uso, in qualsiasi linguaggio di programmazione utilizzato nel corso, astratto o concreto, siano divisibili – N.B. anche le più elementari Ipotesi diverse richiederebbero una conoscenza di dettaglio dei linguaggi e delle piattaforme utilizzate

Interazione tra Flussi di Esecuzione Concorrenti Due flussi di esecuzione possono essere: disgiunti interagenti competizione: due o più flussi di esecuzione chiedono luso di una risorsa comune riusabile e di molteplicità finita cooperazione: due o più flussi di esecuzione cooperano per raggiungere un obiettivo comune

Competizione La competizione occorre ogni qualvolta che cè una risorsa riusabile condivisa e di molteplicità finita (spesso seriale) incrocio stradale sportellista alle poste stampante dipartimentale rete ethernet In presenza di competizione è necessario gestire i possibili fenomeni di interferenza

Caratteristiche Rilevanti dellEsecutore Quale strategia risulta più opportuna per gestire linterferenza dipende largamente dalla tollerabilità degli effetti dalla rilevabilità dei fenomeni di interferenza dalla recuperabilità degli effetti eventualmente cancellando, ripetendo e disfacendo alcune operazioni Ad esempio i DBMS moderni possiedono interi sotto-sistemi unicamente dedicati alla gestione della concorrenza con diverse politiche

Strategie per Gestire lInterferenza La strategia migliore per gestire l'interferenza dipende fortemente dal contesto, ed in particolare da almeno questi elementi La natura delle conseguenze La possibilità di recuperarla La possibilità di rilevare l'interferenza Il livello di competizione Le strategie si classificano in Ottimistiche/try-and-see Pessimistiche/Conservatrici/check-and-act

Strategie per Gestire lInterferenza Conseguenze inaccettabili ad es. incrocio stradale trascurabili applicazioni non critiche rilevabili e controllabili ad es. iteratori rilevabili e recuperabili ad es. rete ethernet … Strategie evitare qls interferenza conservatrici ignorare rilevare ed evitare fail-fast rilevare e ripetere ottimistiche...

Tecniche per la Gestione dellInterferenza Le strategie trovano concretezza in alcune tecniche di programmazione per la scrittura di codice privo di interferenza immutabilità delle aree di memoria confinamento degli aggiornamenti per flusso di esecuzione per aree di memoria … esclusione delle sequenze di interleaving (sincronizzazione)

Programmazione Concorrente ed Architetture degli Elaboratori Architetture più diffuse SMP data-flow, per il calcolo vettoriale cluster Scenario più comune e di riferimento per questo corso: pochi processori, f.d.e. a grana grossa Flussi di esecuzione sequenziali debolmente connessi...Tuttavia alla fine del corso parleremo anche di framework per la decomposizione parallela che a senso usare anche nello scenario opposto