1 Esercitazione Sistemi distribuiti: sistemi che risisedono su più calcolatori interconnessi da una rete di comunicazione Algoritmi distribuiti: programmi.

Slides:



Advertisements
Presentazioni simili
Meccanismi di IPC Problemi classici di IPC
Advertisements

1 Introduzione ai calcolatori Parte II Software di base.
Procedure e funzioni A. Ferrari.
Unità D2 Database nel web. Obiettivi Comprendere il concetto di interfaccia utente Comprendere la struttura e i livelli che compongono unapplicazione.
Algoritmi e Programmazione
1 Classi di memorizzazione. 2 Definiscono le regole di visibilità delle variabili e delle funzioni quando il programma è diviso su più file Stabiliscono.
Gestione del processore
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.
1 System Call per Comunicazione tra Processi Pipe.
Scheduling della CPU Concetti di base Criteri di scheduling
Programmazione Procedurale in Linguaggio C++
Algoritmi Paralleli e Distribuiti a.a. 2008/09 Lezione del 29/05/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI.
Algoritmi Paralleli e Distribuiti a.a. 2008/09
Algoritmi Paralleli e Distribuiti a.a. 2008/09 Lezione del 05/05/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI.
Algoritmi Paralleli e Distribuiti a.a. 2008/09 Lezione del 10/03/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI.
File.
U V U V (a) |cfc|=2 prima e dopo (b) |cfc|=2 prima e |cfc|=1 dopo
1 Programmazione ad oggetti in Java E.Mumolo, DEEI
1 Corso di Informatica (Programmazione) Lezione 13 (21 novembre 2008) Programmazione in Java: stringhe e array.
Risorse e Stallo.
Installazione pacchetti sotto Linux. Linux: Installare le applicazioni Adesso che abbiamo configurato Linux vogliamo imparare a installare qualche programma.
Progetto e Sviluppo di un algoritmo per la gestione della Federazione Interdominio in unarchitettura di Service Discovery Candidato: XXX Roma, Febbraio.
Posta elettronica ( ) chiocciola" comunemente letta at Identificativo dellutente Identificativo del computer centrale sul quale risiede.
Struttura dei sistemi operativi (panoramica)
Modelli simulativi per le Scienze Cognitive
Oggetti e dati primitivi Programmazione Corso di laurea in Informatica.
Informatica Generale Susanna Pelagatti
Unità Didattica 2 I Linguaggi di Programmazione
memoria gestita staticamente:
Le classi Definizione di classe Attributi e metodi di una classe Costruttori e distruttori Private e public Funzioni friend Il puntatore this.
Sincronizzazione fra thread
1 LINUX: struttura generale The layers of a UNIX system. User Interface.
Strutture di controllo in C -- Flow Chart --
Espressioni condizionali
Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX Shell: uso avanzato e script Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica.
INSIEMI NUMERABILI L’analisi matematica introduce il concetto di insieme numerabile come insieme i cui elementi possono essere “contati” ossia che possiede.
Corso di PHP.
Reti di Calcolatori L-S Un Sistema Decentrato di Allocazione del Carico per Applicazioni di Calcolo Distribuito Mauro Bampo.
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.
Elementi di Informatica di base
CODIFICA Da flow-chart a C++.
1 Scheduling in Windows 2000 Un thread entra in modalità kernel e chiama lo scheduler quando: Si blocca su un oggetto di sincronizzazione (semaforo, mutex,
Configurazione in ambiente Windows Ing. A. Stile – Ing. L. Marchesano – 1/23.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 K 4 è planare? Sì!
File system distribuito transazionale con replicazione
BIOINFO3 - Lezione 331 SUBROUTINE IN PERL Una subroutine (funzione, metodo, procedura o sottoprogramma), e` una prozione di codice all`interno di un programma.
Costruzione di una semplice Agenda telefonica Elettronica Esercizio sull'uso delle principali system call Unix.
Complessità di un algoritmo
1 Il Sistema Operativo: Esempio n Le operazioni effettuate sembrano abbastanza semplici ma … n Provocano una serie di eventi in cui vengono coinvolte sia.
Sistema Operativo (Software di base)
1 Il Buffer Cache Unix (Bach: the Design of the Unix Operating System (cap: 3)
Prima di iniziare… Durata attività: due lezioni frontali + una lezione laboratorio + compiti per casa Prerequisiti: elementi base architettura dei calcolatori.
Sistemi e Tecnologie Informatiche Ricorsione Umberto Ferraro Petrillo.
Il linguaggio Fortran 90: 3. Procedure e Funzioni
I processi.
Programmazione ad oggetti
1 Le applicazioni. 2 Quali sono tipici programmi applicativi ? Hardware Sistema Operativo Applicazioni È il livello di SW con cui interagisce l’utente.
1. 2 Variabili statiche e dinamiche Un programma è un processo in esecuzione a cui il sistema operativo assegna una certa zona di memoria. Tale zona può.
Dal problema all’ algoritmo
GLI ALGORITMI VISIBILE SUL BLOG INFORMATICA ANNO SCOLASTICO 2013 / 2014 GABRIELE SCARICA 2°T.
1 Esercitazione finale per il corso di Sistemi Operativi (A.A. 2001/2002)
Allievi Elettrici - AA Le funzioni ricorsive in C
1 SC che operano su processi Getpid, fork, exec, wait, waitpid, exit, dup, dup2.
1 Il linguaggio C Precisazioni sull’esperienza in laboratorio.
Supporto per la replicazione attiva di servizi Progetto per il corso di Reti di Calcolatori LS Montanari Mirko Matr:
STUDIO SULLA REPLICAZIONE DEGLI AGENTI NEL SISTEMA SOMA Andrea Sambi.
Algoritmi Avanzati a.a.2011/2012 Prof.ssa Rossella Petreschi Algoritmi distribuiti Lezione n°9.
Transcript della presentazione:

1 Esercitazione Sistemi distribuiti: sistemi che risisedono su più calcolatori interconnessi da una rete di comunicazione Algoritmi distribuiti: programmi costituiti da più processi in esecuzione ciascuno su una macchina diversa. I processi non condividono memoria primaria nè secondaria Gli algoritmi distribuiti utilizzano un processo coordinatore per svolgere funzioni quali la mutua esclusione o la ricerca di deadlock

2 Esercitazione Quando il processo coordinatore termina in modo anomalo l’algoritmo distribuito può continuare a funzionare correttamente solo se uno dei processi rimasti diviene il nuovo processo coordinatore La scelta del nuovo processo coordinatore viene fatta tramite un algoritmo distribuito di elezione messo in atto dai processi che partecipano all’algoritmo distribuito.

3 Esercitazione: Scopo dell’esercitazione è l’implementazione di una simulazione di un algoritmo distribuito di elezione noto come ring algorithm Il nome deriva dal fatto che i processi che implementano l’algoritmo sono organizzati in uno schema ad anello, in cui ogni processo comunica solo con il processo adiacente (a destra o a sinistra)

4 Osservazioni generali: Ad ogni processo nel sistema distribuito è assegnata una priorità unica e nota solo a quel processo Il processo coordinatore è sempre quello con valore di priorità più grande Ogni processo conosce solo la propria priorità e non quella degli altri processi attivi, eccetto che durante l’esecuzione della procedura di elezione

5 Considerazioni generali: Per il corretto funzionamento dell’algoritmo distribuito, tutti i processi devono conoscere l’identità del processo coordinatore I processi sono organizzati in un anello circolare unidirezionale: ogni processo può inviare messaggi solo al suo vicino di destra o di sinistra (ma non ad entrambi)

6 Esempio di configurazione: P1, 5 P2, 7P3, 2

7 Considerazioni generali: La struttura dati principale usata dall’algoritmo di elezione è l’active list che è formata da un elenco di coppie, una coppia per ogni processo coinvolto nell’algoritmo Ogni processo possiede una copia della active list, identica per tutti i processi.

8 Considerazioni generali: Non può esistere una copia della active list in memoria condivisa o in un file (si ricordi che si sta simulando una situazione con processi che girano su macchine diverse, che quindi non condividono nessun tipo di memoria) Al termine dell’algoritmo di elezione la active list contiene informazioni aggiornate su tutti i processi attivi e ogni processo può individuare il nuovo coordinatore

9 L’algoritmo da implementare: Passo 1. –Quando un processo Pi con priorità p scopre che il processo coordinatore non è più attivo, fa partire l’algoritmo di elezione, creando un propria active list inizialmente vuota. –Poi invia un messaggio elect(Pi,p) al suo vicino, in modo da proporsi come nuovo processo coordinatore, e aggiunge la propria priorità e identificatore alla active list

10 L’algoritmo da implementare: Passo 2. –Se un processo Pi riceve un messaggio elect(Pj,q) dal suo vicino, capisce che è in corso una procedura di elezione, e deve rispondere in uno dei seguenti tre modi: a)Se questo è il primo messaggio elect che ha visto o mandato, Pi crea una propria active list con i valori (Pi,p) e (Pj,q). Poi manda il messaggio elect(Pi,p) seguito dal messaggio elect(Pj,q). (attenzione, l’ordine è importante. Perchè?)

11 L’algoritmo da implementare: ( Passo 2 cont.: caso in cui questo non è il primo messaggio elect che Pi riceve/invia) b)Se Pi != Pj allora Pi aggiunge (Pj,q) alla lista e inoltra il messaggio al suo vicino (manda elect(Pj,q)) c)Se Pi=Pj, allora la active list di Pi contiene tutte le informazioni sui processi attivi nel sistema. Passo 3: –Il processo Pi può determinare il coordinatore cercando il processo con priorità massima nella active list.

12 I processi Pi Il generico processo Pi esegue un ciclo infinito in cui dorme per un breve periodo di tempo e quando si sveglia controlla se l’algoritmo di elezione è stato iniziato (cioè se è arrivato un messaggio elect) –Se sì vi partecipa, –se no torna a dormire. Esempio di codice: while (1) { sleep(5); if (check_election()) partecipate(); }

13 Avvio dell’algoritmo di elezione Il fallimento del processo coordinatore è segnalato ad un processo qualunque tra quelli attivi tramite l'invio del segnale SIGUSR1 da parte dell'utente. Il processo che riceve il segnale inizia l’algoritmo di elezione. La procedura di gestione del segnale SIGUSR1 può quindi ospitare il codice dell’algoritmo di elezione.

14 Terminazione dell’algoritmo di elezione Al termine dell’algoritmo, i processi scrivono su un file di log comune l’identificatore del nuovo processo coordinatore Il corretto funzionamento dell’algoritmo di elezione è segnalato dal fatto che tutti i processi hanno eletto lo stesso coordinatore

15 Cose da fare Per l’implementazione dell’algoritmo di elezione si deve progettare un meccanismo per lo scambio di messaggi tra i processi (si consiglia l’uso di una o più code di messaggi, o in alternativa, di file di tipo pipe). Si deve prevedere uno script shell per l'attivazione dei processi che compongono il sistema distribuito che permetta di avere: –un numero di processi parametrico –l’assegnamento di una priorità diversa a ciascuno dei processi creati

16 Cose da fare Si deve prevedere la possibilità che nuovi processi si aggiungano a quelli attivi Si deve prevedere la possibilità che se anche un processo termina anzi tempo il meccanismo di elezione continua a funzionare.

17 Costruzione dell’anello di processi: Mediante un processo supervisor che stabilisce chi comunica con chi, e gestisce anche l’ingresso di nuovi processi e il caso in cui uno dei processi esistenti scompaia. Il supervisor inizializza le code di messaggi e le mette a disposizione dei processi che devono comunicare fra loro.

18 Sviluppo di Applicativi in Unix Come si compila un programma C –gcc nomefile.c : compila, link e genera file eseguibile a.out –gcc -o exefile nomefile.c : come prima, ma genera file eseguibile exefile –gcc -c nomefile.c : compila soltanto e genera file oggetto nomefile.o –gcc -o exefile nomefile.c -lm : compila, link con libreria matematica (-lm) e genera eseguibile exefile –gcc -o exefile nomefile.o -lm : link con libreria matematica (-lm) e genera eseguibile exefile

19 Il comando make Permette di ricompilare solo i moduli che hanno subito delle modifiche. Si basa sul concetto di regole di dipendenza tra file Le regole specificano delle dipendenze e i comandi da eseguire per aggiornarle Le regole che esso utilizza devono essere inserite in un file denominato "Makefile". –make : esegue le regole descritte nel file Makefile (default) –make -f nomefile : esegue le regole nel file nomefile

20 Un esempio di Makefile # Makefile #commands COMP = gcc -c LINK = gcc -o #directories DIREXE =../bin # pippo dipende da stringa.h, pippo.c e routines.o ${DIREXE}/pippo : stringa.h pippo.c routines.o rm -f ${DIREXE}/pippo ${LINK} ${DIREXE}/pippo pippo.c routines.o # routines.o dipende da stringa.h e routines.c routines.o : stringa.h routines.c ${COMP} routines.c