


Studia grazie alle numerose risorse presenti su Docsity
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Prepara i tuoi esami
Studia grazie alle numerose risorse presenti su Docsity
Prepara i tuoi esami con i documenti condivisi da studenti come te su Docsity
Trova i documenti specifici per gli esami della tua università
Preparati con lezioni e prove svolte basate sui programmi universitari!
Rispondi a reali domande d’esame e scopri la tua preparazione
Riassumi i tuoi documenti, fagli domande, convertili in quiz e mappe concettuali
Studia con prove svolte, tesine e consigli utili
Togliti ogni dubbio leggendo le risposte alle domande fatte da altri studenti come te
Esplora i documenti più scaricati per gli argomenti di studio più popolari
Ottieni i punti per scaricare
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
tutte le caratteristiche della programmazione concorrente
Tipologia: Appunti
1 / 4
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!



Modello di esecuzione: parallelismo e non determinismo Il modello di esecuzione del processo è deterministico , cioè è possibile stabilire dopo l’esecuzione di un’istruzione A quale sarà la prossima istruzione che verrà eseguita (se A è un’istruzione condizionale è necessario conoscere anche il valore delle variabili del programma). Il modello di esecuzione dell’Hardware invece è non-deterministico , perchè la prossima istruzione che verrà eseguita può dipendere anche dal verificarsi di eventi il cui esatto istante di accadimento è imprevedibile. Spesso un programma con thread multipli è non-deterministico, cioè non si può dire in base al codice del programma cosa accadrà esattamente, anche in assenza di dipendenza dai dati di input. Grafo delle precedenze Un grafo che descrive l’ordine con cui le azioni (o gli eventi) che costituiscono il processo si eseguono nel tempo prende il nome di grafo delle precedenze. Nei processi sequenziali la sequenza degli eventi che costituisce il processo è totalmente ordinata: il grafo risulterà totalmente ordinato in quanto la sequenza degli eventi è ben determinata, cioè l’ordine con cui vengono eseguiti è sempre lo stesso Nei processi paralleli, invece, l’ordinamento non è completo, in quanto l’esecutore per alcune istruzioni “è libero” di scegliere quali iniziare prima senza che il risultato sia compromesso: possiamo affermare che nella elaborazione parallela l’esecuzione delle istruzioni segue un ordinamento parziale. Architetture e linguaggi per la programmazione concorrente Disponendo di macchine concorrenti (in grado di eseguire più processi sequenziali contemporaneamente) e di un linguaggio di programmazione con il quale descrivere algoritmi non sequenziali, è possibile scrivere e far eseguire programmi concorrenti L’elaborazione complessiva può essere descritta come un insieme di processi sequenziali asincroni interagenti Proprietà di un linguaggio per la programmazione concorrente
proces- so interessato a entrarvi; ◗ Nessun processo deve attendere indefinitamente per poter accedere alla regione critica. Starvation e deadlock Un’ errata sincronizzazione può portare al fallimento delle elaborazioni, genera situazioni di incoerenza dei dati, e può portare a situazioni di blocco dei processi: ◗ Starvation (o blocco individuale): si verifica quando un processo rimane in attesa di un evento che non accadrà mai, e quindi non può portare a termine il proprio lavoro; ◗ Deadlock (stallo o blocco multiplo): si verifica quando due o più processi rimangono in attesa di eventi che non potranno mai verificarsi a causa di condizioni cicliche nel possesso e