Modulo sulla concorrenza

Slides:



Advertisements
Presentazioni simili
STRUTTURA DEL SISTEMA OPERATIVO
Advertisements

Stefano Leonardi Ricevimento: Tel.:
Meccanismi di IPC Problemi classici di IPC
CONCLUSIONE - Nucleo (o Kernel) Interagisce direttamente con lhardware Interagisce direttamente con lhardware Si occupa dellesecuzione.
Il Software.
Linguaggi algoritmici
Recupero debito quarto anno Primo incontro
Semantica di linguaggi di programmazione Ne esistono differenti stili a seconda di paradigma di programmazione uso (validazione, prototyping, verifica.
Java: programmazione concorrente con condivisione di memoria
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
Corso di Laurea in Informatica Gabriella Pasi e Carla Simone
1 Il punto di vista Un sistema è una parte del mondo che una persona o un gruppo di persone, durante un certo intervallo di tempo, sceglie di considerare.
1 Istruzioni, algoritmi, linguaggi. 2 Algoritmo per il calcolo delle radici reali di unequazione di 2 o grado Data lequazione ax 2 +bx+c=0, quali sono.
DIFFICOLTA’ DEL LINGUAGGIO
Il Software: Obiettivi Programmare direttamente la macchina hardware è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica del computer.
2 luglio 2006URM2 – ING- OOP0304 OL G. Cantone e A. Lomartire 1 Programmazione Orientata agli Oggetti Processi, task e thread Java (ed esempi) Università
Corso di Laurea in Biotecnologie Informatica (Programmazione)
Corso di Informatica (Programmazione)
Lettura e scrittura - Stream
1: Introduction1 Condivisione file P2P r Allinizio del 2004 P2P era responsabile di un volume di traffico maggiore a qualunque altra applicazione Internet.
Struttura dei sistemi operativi (panoramica)
Il Linguaggio Macchina
CAPITOLO 2 INTRODUZIONE AL LINGUAGGIO JAVA E ALL'AMBIENTE HOTJAVA.
Capitolo 1: Introduzione ai computer e a Java
Sincronizzazione fra thread
Sistemi Operativi GESTIONE DEI PROCESSI.
1 LINUX: struttura generale The layers of a UNIX system. User Interface.
Daniel Stoilov Tesi di Laurea
Concurrency: concurrent execution1 ©Magee/Kramer const N = 1 intervallo T = 0..N intervallo R = 0..2*N SUM = (in[a:T][b:T]->TOTAL[a+b]), TOTAL[s:R] = (out[s]->SUM).
Concurrency: introduction1 ©Magee/Kramer Semantica operazionale di FSP Consideriamo i costrutti FSP e diamo la loro traduzione in Reti SA.
Composizione parallela - alternanza di azioni
Da Problema a Programmazione
ELEMENTI DI PROGRAMMAZIONE
INTRODUZIONE l sistema operativo è il primo software che lutente utilizza quando accende il computer; 1)Viene caricato nella memoria RAM con loperazione.
Università degli Studi di Bari Laurea in Chimica Di spense di Informatica - Dott. F. Mavelli Programmare in Matlab Funzioni di Libreria Funzioni definite.
Modulo 1 - Hardware u.d. 3 (syllabus – 1.3.5)
INFORMATICA MATTEO CRISTANI.
Lo sviluppo del progetto informatico
IPOTESI DI LAVORO GRUPPO n° 3: LEO, RIBATTEZZATO, ROSSI, SCIANGUETTA
CONCETTI DI BASE 1.0 FONDAMENTI 1.1 HARDWARE 1.2 SOFTWARE 1.3 RETI
1 Lucidi delle esercitazioni di Sistemi di Elaborazione in Rete Università degli Studi della Calabria Corso di Laurea in Ingegneria Gestionale A.A. 2003/2004.
Linguaggi per COMUNICARE
Programma di Informatica Classi Prime
Informatica Lezione 4 Scienze e tecniche psicologiche dello sviluppo e dell'educazione Anno accademico:
Gli Algoritmi L’algoritmo è un insieme ordinato di operazioni non ambigue ed effettivamente computabili che, quando eseguito, produce un risultato e si.
I processi.
Docente: G. Ianni Esercitatori: A. Martello (Sistemi Operativi), V. Lio (Reti) Sito del corso: Google ‘sistemi operativi e reti unical’ Gruppo FB («Sistemi.
la traduzione dei programmi
Introduzione a Javascript
Informatica Lezione 5 Scienze e tecniche psicologiche dello sviluppo e dell'educazione (laurea triennale) Anno accademico:
PROBLEMA: sviluppare un’applicazione che permetta agli alunni, interagendo con il mouse, di visualizzare la corretta serie delle alternanze dei passaggi.
Informatica Lezione 8 Scienze e tecniche psicologiche dello sviluppo e dell'educazione Anno accademico:
Algoritmi.
Sistemi operativi di rete Ing. A. Stile – Ing. L. Marchesano – 1/18.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie.
1 Linguaggi: guardando la semantica §esistono un insieme di concetti semantici e di strutture di implementazione in termini dei quali si descrivono in.
Automi temporizzati.
Informatica Lezione 6 Psicologia dello sviluppo e dell'educazione (laurea magistrale) Anno accademico:
LA FILOSOFIA DEL SAS Concepito per essere facilmente accessibile.
I primi elaboratori Anni ‘50 Rigidamente sequenziali
Problemi, algoritmi e programmazione
Dal problema al programma
Programmazione dei Calcolatori Elettronici
Il computer RAM: Unità di misura MByte e GByte MHz Processore: Unità di misura Singolo o multiprocessore 32/64 bit velocità GHz Mouse tastiera video stampante.
Programmazione orientata agli Oggetti Introduzione a Java.
UNIMORE University of Modena and Reggio Emilia Scratch Simone Calderara
© 2016 Giorgio Porcu - Aggiornamennto 18/03/2016 I STITUTO T ECNICO SECONDO BIENNIO T ECNOLOGIE E P ROGETTAZIONE Il Sistema Operativo Concorrenza e Grafi.
Introduzione alle Classi e agli Oggetti in Java 1.
Transcript della presentazione:

Modulo sulla concorrenza Gabriella Pasi e Carla Simone (dai lucidi tratti dal sito del libro di Jeff Magee e Jeff Kramer)

Libro di testo Concurrency: State Models & Java Programs Jeff Magee & Jeff Kramer WILEY

Obbiettivi di questo modulo In questo modulo di lezioni sono presentano i concetti fondamentali relativi alla definizione di specifiche (modelli) di programmi concorrenti. NON sono presentati aspetti di programmazione concorrente in Java, che saranno affrontati nel corso di sistemi operativi. Gli aspetti di modellazione sono di estrema importanza per una corretta comprensione e definizione di sistemi concorrenti, e per ragionare in termini di concorrenza

Programma Concetti Modelli Esempi Costrutti grafici si presenta un approccio modellistico alla specifica e alla costruzione di programmi concorrenti Modelli Labelled Transition Systems (LTS) Costrutti grafici Reti di Petri SA (ad automi sovrapposti) Finite State Process (FSP) notazione algebrica Esempi

Cos’è un programma concorrente? Un programma sequenziale ha un singolo “thread” di controllo. Un programma concorrente ha più “thread” di controllo che permettono sia la realizzazione di computazioni multiple sia il controllo di attività esterne che si presentano contemporaneamente.

Thread: filone, filo del discorso [1] Una delle parti di un processo (applicazione in fase di esecuzione). Ogni thread dispone di una parte di memoria e di un gruppo di registri della CPU. Quando il thread termina (quando cioè termina la singola fase all'interno dell'esecuzione dell'applicazione) la memoria e gli oggetti di sistema che utilizzava vengono liberati. Quando termina l'ultimo thread di un processo, termina anche il processo, e quindi l'applicazione. Il termine multithreading denota l’esecuzione contemporanea di più thread [2] In un newsgroup Usenet (in Internet) identifica i messaggi con un medesimo argomento.

Perché la Programmazione Concorrente? Migliori prestazioni in caso di hardware multiprocessore parallelismo Applicazioni distribuite Incremento velocità di trasferimento dati (throughput) tra applicazioni Incremento dei tempi di risposta delle applicazioni thread di alta priorità per le richieste utenti. Strutturazione nel caso di programmi che interagiscono con l’ambiente, controllo di attività multiple e gestione di eventi multipli.

modelli Un modello è una rappresentazione semplificata della realtà. focalizzazione su un aspetto di interesse - concorrenza animazione dei modelli per verificare un comportamento verifica di proprietà (ad esempio sicurezza & vivezza)

modelli In questo contesto i modelli sono descritti per mezzo di automi a stati finiti. Diversi metodi di rappresentazione grafica: Labelled Transition Systems LTS. Da un punto di vista notazionale in alcuni casi un processo non è ben distinto dal suo comportamento Da un punto di vista notazionale un processo è sempre ben distinto dal suo comportamento Reti di Petri Un modello grafico può essere descritto linguisticamente mediante il linguaggio FSP (finite state processes) e, se denotato mediante LTS, può essere visualizzato e analizzato per mezzo dello strumento di analisi LTSA.

http://www-dse.doc.ic.ac.uk/concurrency/ Materiale su Web esempi in Java esempi di modelli a stati Il tool “Labelled Transition System Analyser (LTSA)” per animare i modelli LTS e per verificarne le proprietà.

Capitolo 2 Processi & Thread

Processi concorrenti I sistemi complessi sono strutturati come insiemi di attività semplici ognuna rappresentata come processo sequenziale. I processi possono sovrapporsi o essere concorrenti. La concorrenza può essere intrinseca al mondo fisico, oppure introdotta per ottimizzare i tempi di esecuzione o per gestire comunicazioni. La programmazione concorrente è complessa e può facilmente introdurre errori. Un approccio rigoroso è essenziale Processo come sequenza di azioni Modellazione di processi come macchine a stati finiti A livello di programmazione: thread in Java.

Modellazione di Processi Modelli descritti mediante macchine a stati, quali Reti di Petri e Labelled Transition Systems LTS. Queste possono essere descritte linguisticamente per mezzo di una notazione algebrica, detta finite state processes (FSP) Notazioni con espressività diversa! Vedremo perchè LTS - Reti di Petri forma grafica FSP - forma algebrica

Modellazione di Processi Un processo è l’esecuzione di un programma sequenziale. E’ modellato come una macchina a stati finiti che transita da stato a stato per mezzo dell’esecuzione di azioni atomiche. Un interruttore Reti di Petri on off LTS onoffonoffonoff ………. Una sequenza di azioni o “trace” comportamento

FSP - azioni e processi Se x è un’azione e P un processo (x-> P) descrive un processo che inizialmente esegue l’azione x e poi si comporta esattamente come P. ATTIVAZIONEUNICA = (unavolta -> STOP). Convenzione: le azioni hanno lettera iniziale minuscola i PROCESSI hanno lettera iniziale maiuscola

FSP - ricorsione Un comportamento ripetitivo si modella mediante ricorsione: ATTIVAZIONE = OFF, OFF = (on -> ON), ON = (off -> OFF). Definizione più sintetica: ATTIVAZIONE = OFF, OFF = (on -> (off -> OFF)). E ancora: ATTIVAZIONE = (on -> off -> ATTIVAZIONE).

Animazione per mezzo del “tool” LTSA Il programma LTSA può essere usato per produrre una “trace”. Nella rappresentazione LTS associata, l’ultima azione è evidenziata in rosso.

rossogialloverdegiallorossogialloverde … FSP - action prefix modello FSP di un semaforo : SEMAFORO = (rosso->giallo->verde->giallo->SEMAFORO). rosso giallo verde LTS : Reti di Petri rosso giallo verde Trace: rossogialloverdegiallorossogialloverde …

FSP - costrutto di selezione Se x e y sono azioni, (x-> P | y-> Q) descrive un processo che inizialmente realizza una delle due azioni x o y. Dopo l’esecuzione della prima azione, il comportamento successivo è descritto da P se la prima azione è stata x, da Q se la prima azione è stata y. Chi o che cosa compie la scelta? C’è una differenza tra azioni di input e output?

Modello FSP di una macchina distributrice di bevande: FSP - scelta Modello FSP di una macchina distributrice di bevande: DISTRIBUTORE = (rosso->caffè->DISTRIBUTORE |blu-> thè-> DISTRIBUTORE). rosso blu caffè thè Reti di Petri LTS rosso blu caffè thè

Scelta non deterministica Lanciare una moneta Il processo (x-> P | x -> Q) descrive un’azione iniziale x e un comportamento successivo modellato da P o Q. LANCIOMONETA = (lancio->TESTA|lancio->CROCE), TESTA = (vistesta->LANCIOMONETA), TAILS= (viscroce->LANCIOMONETA).

Scelta non deterministica Lanciare una moneta Reti di Petri LTS : lancio vistesta viscroce A) lancio viscroce vistesta lancio vistesta viscroce B)

Modellare errori (eccezioni) Come si può modellare un canale di comunicazione inaffidabile che accetta un input (in) e produce un output solo nel cas in cui non si presenti un errore? Uso del non-determinismo ... CHAN = (in->CHAN |in->out->CHAN). LTS : Reti di Petri in error out

FSP - processi e azioni indicizzati Buffer che prende in input un valore nell’intervallo 0 .. 3 e restituisce in output quel valore: BUFF = (in[i:0..3]-> out[i]-> BUFF). equivalente a: BUFF = (in[0]->out[0]->BUFF |in[1]->out[1]->BUFF |in[2]->out[2]->BUFF |in[3]->out[3]->BUFF ). O, usando un parametro di processo con valore di default: BUFF(N=3) = (in[i:0..N]->out[i]-> BUFF).

FSP - selezione su condizione La selezione (when B x -> P | y -> Q) significa che quando la condizione B è verificata allora è possibile scegliere sia l’azione x sia l’azione y, altrimenti se B non è verificata l’azione x non può essere scelta. COUNT (N=3) = COUNT[0], COUNT[i:0..N] = (when(i<N) inc->COUNT[i+1] |when(i>0) dec->COUNT[i-1] ).

FSP - selezione su condizione Valore 0 inc Valore 1 dec inc Valore 2 dec inc Valore 3 dec