Concorrenza e parallelismo

Slides:



Advertisements
Presentazioni simili
2 luglio 2006URM2 – ING- OOP0304 OL G. Cantone e A. Lomartire 1 Programmazione Orientata agli Oggetti Processi, task e thread Java (ed esempi) Università
Advertisements

Giuseppe Andronico CCR-WS10 Santa Tecla, 18 Maggio 2010 Introduzione MPI & GPU.
Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica FONDAMENTI DI INFORMATICA Domenico Talia
Progettare e programmare PROF.SENAREGA. Progettazione nella scuola  Processo mirato a definire e descrivere le finalità e le caratteristiche o modalità.
IL SISTEMA OPERATIVO (seconda parte) PROGRAMMI UTENTE INTERPRETE COMANDI FILE SYSTEM GESTIONE DELLE PERIFERICHE GESTIONE DELLA MEMORIA GESTIONE DEI PROCESSI.
CONTROLLO DELLA CONCORRENZA
1. (RI-) DILEMMI SOCIALI POINT: a volte la massimizzazione indipendente, razionale e auto-interessata porta risultati ‘disastrosi’ a livello sociale.
IL CORPO UMANO COME UNA MACCHINA
Raggruppamento un insieme di individui co-presenti, cioè un insieme di individui reciprocamente influenzati nel comportamento dalla loro mutua presenza.
Valutazione delle rimanenze
Alcune note, dalla rete, sui Sistemi cellulari
COMUNICAZIONE E CONOSCENZA
Algoritmi Avanzati a.a.2013/2014 Prof.ssa Rossella Petreschi
LA TEORIA GENERALE DEI SISTEMI
Algoritmi Avanzati a.a.2012/2013 Prof.ssa Rossella Petreschi
Rielaborato da Atzeni et al., Basi di dati, Mc-Graw Hill
Cartesio – Back End Farine Antoine Giulietti Raffaello Libro Pietro
Il Sistema Operativo Programmazione Concorrente
Algoritmi Avanzati a.a.2015/2016 Prof.ssa Rossella Petreschi
GLI STRUMENTI AUSILIARI
Insiemi e logica Insiemi e operazioni insiemistiche
Università di Messina - C.E.C.U.M.
DIRIGERE L’INNOVAZIONE
Sistema di riferimento su una retta
Premere un tasto per continuare
Il lavoro di gruppo Cfr - Tratto da materiale corso di formazione su: organizzazione aziendale dott. Stefano Colferai.
Argomento: SISTEMA METRICO DECIMALE
I programmi sono testi? Copyright Stefano Penge 2010 CC BY-NC-SA
* Il Sistema Operativo GNU/Linux * Sistema Operativo e Applicazioni
Anita D’Agnola Vallan e Daria Mingarelli
I BUS È un insieme di fili conduttori che permette il passaggio di dati tra le varie periferiche del pc.
Tipo di dato: array Un array è un tipo di dato usato per memorizzare una collezione di variabili dello stesso tipo. Per memorizzare una collezione di 7.
IL CODING e il Pensiero Computazionale
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
analizzatore di protocollo
La pianificazione aziendale
Premere un tasto per continuare
MODULO 1 – Computer essentials
Psicologia dell’apprendimento
[Nome progetto] Relazione finale
Programmare.
VIDEOGIOCHI A SCUOLA Andrea capitani e marco giorgini.
RETE TELEMATICA IMPRESE FORMATIVE SIMULATE
Strutture di Controllo
Gli automi.
Procedura di gestione appuntamenti tramite web.
Corso di Laurea in Economia
L’APPROCCIO FAMILIARE NEL CLUB
Scheduling in Linux (Kernel 2.4 e 2.6)
© 2007 SEI-Società Editrice Internazionale, Apogeo
[Nome progetto] Relazione finale
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Lezione N° 6 L’organizzazione
L’ATTIVITÀ DI PIANIFICAZIONE E CONTROLLO
Definizione di linguaggio di programmazione
UN CASO REALE Un gruppo di 3 amici si trova in pizzeria per festeggiare un compleanno. Ordinano una pizza ciascuno ma, mentre stanno iniziando a mangiare,
Strapazziamo le immagini…
Esercizi sulla Web MIDI API
Lezione N° 6 L’organizzazione
Premere un tasto per continuare
1. (RI-) DILEMMI SOCIALI POINT: a volte la massimizzazione indipendente, razionale e auto-interessata porta risultati ‘disastrosi’ a livello sociale.
Parti interne del computer
Processi decisionali e funzioni di controllo
L’ATTIVITÀ DI PIANIFICAZIONE E CONTROLLO
Ing. Maurizio Bassani LOGISTICA - Capitolo 3 - Modulo 1
Il protocollo informatico e il Manuale di Gestione
Lezione N° 6 L’organizzazione
A cura di: Alessandro Hinna
Lezione N° 6 L’organizzazione
IL PERCORSO LOGICO DI UN PROGETTO
Transcript della presentazione:

Concorrenza e parallelismo Vogliamo studiare linguaggi (e relativa semantica) per programmare l’esecuzione parallela di processi (agenti/demoni…). Lo scenario comprende quindi una comunità di attori (unità di esecuzione) che manipolano delle risorse comuni agendo simultaneamente in maniera per quanto possibile indipendente. Questo porta dei vantaggi in termini di rapidità di esecuzione e semplicità di programmazione del singolo attore, che può essere programmato per svolgere una singola attività specifica fra le tante che porteranno al risultato finale (corrispondente in un paradigma sequenziale ad un modulo). D’altra parte progettare un attore in modo da funzionare indipendentemente dalle alterazioni che gli altri attori possono introdurre nell’ambiente presenta notevoli complicazioni. I linguaggi che studieremo sono minimali nel senso che presentano il minimo indispensabile di costrutti per capire quali sono i problemi (e le soluzioni) dovuti al parallelismo; non sono certo linguaggi realistici per la programmazione di agenti/processi.

Esempio non informatico Consideriamo un caso di parallelismo dal “mondo reale”: una coppia di sposi conduce le sue attività giornaliere. Lei pianifica di riordinare la casa, andare a fare shopping oppure in palestra, passare a prendere due pizze e cenare a casa col marito. Lui pianifica di lavorare mezza giornata, incontrare la sua amante, portarla a casa (approfittando dell’assenza della moglie), uscire a comprare delle bevande e tornare a cenare con la moglie. In questo esempio si vedono in concreto alcuni concetti tipici della concorrenza: sincronizzazione: marito e moglie devono essere a cena assieme azioni asincrone: marito e moglie possono svolgere gran parte delle attività che hanno pianificato in maniera del tutto indipendente risorse condivise: la casa viene usata da entrambi gli attori in competizione fra loro cooperazione: la cena sarà pronta per la cooperazione fra moglie (che acquista le pizze) e marito (che acquista da bere) non determinismo: la moglie non ha ancora deciso se fare shopping o palestra e a seconda della sua scelta alla fine della giornata il bilancio familiare sarà diverso. Inoltre, a seconda dei tempi effettivi di esecuzione delle attività rispettive, l’andamento della giornata può essere ben diverso, perché se il riordino della casa si protrae … Quest’ultimo punto fa capire che la semantica del sistema (coppia) non può essere definita in termini della semantica delle parti se quest’ultima si limita (come nel caso sequenziale) ad osservare i cambiamenti fra stato iniziale e finale

Parallelismo in informatica Tutti i sistemi attuali hanno un certo grado di parallelismo (multitasking), quanto meno fra i vari pezzi del sistema operativo. Il parallelismo può essere “virtuale” in caso di sistemi monoprocessore (interleaving) o effettivo per i sistemi multiprocessore o distribuiti. A livello di utente, però, il parallelismo è spesso nascosto: ciscun task (applicazione, finestra…) lavora su una sua macchina virtuale e le interazioni fra queste macchine sono gestite dal sistema operativo. Noi vogliamo studiare proprio questi meccanismi di gestione di cooperazione e competizione. Ci sono due famiglie di modelli per la concorrenza distinte dal metodo usato per permettere interazione fra le componenti: Memoria condivisa (shared memory): i vari processi usano le stesse “locazioni”, per cui le modifiche fatte da uno possono essere usate da altri (il cui comportamento, quindi risulta influenzato…) Scambio di messaggi (message passing): ciascun processo vive in splendido isolamento e comunica con (influenza) gli altri mandando e ricevendo messaggi, che possono contenere valori, sottoprocessi… A seconda di quale sia il modello che si ha in mente, servono differenti primitive per la concorrenza (in un caso per modificare la memoria, nell’altro per scambiare messaggi). Quindi vedremo due linguaggi uno adatto al modello a memoria condivisa (ParWhile) e l’altro per il modello con scambio di messaggi (CCS).