© 2016 Giorgio Porcu - Aggiornamennto 18/03/2016 I STITUTO T ECNICO SECONDO BIENNIO T ECNOLOGIE E P ROGETTAZIONE Il Sistema Operativo Concorrenza e Grafi di precedenza G IORGIO P ORCU BOZZA: 18/03/2016
© 2016 Giorgio Porcu - Aggiornamennto 18/03/2016 T ECNOLOGIE E P ROGETTAZIONE Il Sistema Operativo Concorrenza e Grafi di precedenza Sommario Elaborazione concorrente Elaborazione sequenziale Elaborazione concorrente Elaborazione parallela Grafi di Precedenza Grafi di Precedenza: Simboli Pseudocodice Grafo di Precedenza Esempi 2
© 2016 Giorgio Porcu - Aggiornamennto 18/03/2016 Concorrenza e Grafi di precedenza T ECNOLOGIE E P ROGETTAZIONE Il Sistema Operativo Elaborazione concorrente 3
© 2016 Giorgio Porcu - Aggiornamennto 18/03/2016 T ECNOLOGIE E P ROGETTAZIONE Il Sistema Operativo Concorrenza e Grafi di precedenza Elaborazione sequenziale Elaborazione Sequenziale Esecuzione di un programma in modo sequenziale attraverso un processo (thread) costituito da una sequenza di istruzioni. E’ tipica dell’architettura di Von Neumann a singola CPU. Prevede che in ogni istante di tempo sia eseguita una sola istruzione, come nella struttura sequenza della programmazione. 4
© 2016 Giorgio Porcu - Aggiornamennto 18/03/2016 T ECNOLOGIE E P ROGETTAZIONE Il Sistema Operativo Concorrenza e Grafi di precedenza Elaborazione concorrente (1/2) Elaborazione Concorrente Esecuzione di più attività (programmi, processi o thread) in contemporanea. Prevede che in ogni istante di tempo possano essere potenzialmente eseguite più istruzioni. Processi Concorrenti Due processi A e B si dicono concorrenti se la prima operazione di B inizia prima del completamento dell’ultima operazione di A. 5
© 2016 Giorgio Porcu - Aggiornamennto 18/03/2016 T ECNOLOGIE E P ROGETTAZIONE Il Sistema Operativo Concorrenza e Grafi di precedenza Elaborazione concorrente (2/2) Concorrenza, Parallelismo ed evoluzione La contemporaneità non significa sempre parallelismo reale, che avviene solo se il sistema: Supporta a livello Hardware più CPU o Core Supporta a livello Software (Kernel del Sistema Operativo) l’esecuzione di thread in parallelo Processi concorrenti possono essere indipendenti, cooperanti o in competizione da un punto di vista dell’evoluzione nel tempo. 6
© 2016 Giorgio Porcu - Aggiornamennto 18/03/2016 T ECNOLOGIE E P ROGETTAZIONE Il Sistema Operativo Concorrenza e Grafi di precedenza Elaborazione parallela Elaborazione Parallela Esecuzione di più attività (programmi, processi o thread) in parallelo. Prevede che in ogni istante di tempo siano eseguite più istruzioni su processori differenti sotto il controllo del Sistema Operativo. Garantisce un migliore utilizzo dell’hardware di sistema e una riduzione dei tempi d’esecuzione ma non è sempre attuabile. 7
© 2016 Giorgio Porcu - Aggiornamennto 18/03/2016 Concorrenza e Grafi di precedenza T ECNOLOGIE E P ROGETTAZIONE Il Sistema Operativo Grafi di precedenza 8
© 2016 Giorgio Porcu - Aggiornamennto 18/03/2016 T ECNOLOGIE E P ROGETTAZIONE Il Sistema Operativo Concorrenza e Grafi di precedenza Grafo di Precedenza: Simboli (1/2) Grafo di Precedenza Rappresentazione grafica della precedenza temporale di esecuzione tra istruzioni. Utilizza i seguenti simboli grafici di base: Blocco di istruzioni (Istruzione, Processo, Thread, Attività): Cerchio. Precedenza: Freccia direzionale Istruzioni in sequenza A precede B B inizia dopo A 9 A BA B A
© 2016 Giorgio Porcu - Aggiornamennto 18/03/2016 T ECNOLOGIE E P ROGETTAZIONE Il Sistema Operativo Concorrenza e Grafi di precedenza Grafo di Precedenza: Simboli (2/2) Grafo di Precedenza Inizio parallelismo A precede sia B che C B e C sono eseguibili in parallelo dopo A Fine parallelismo B e C precedono D D è eseguibile al termine di B e C 10 B A C B A C B D CB D C
© 2016 Giorgio Porcu - Aggiornamennto 18/03/2016 T ECNOLOGIE E P ROGETTAZIONE Il Sistema Operativo Concorrenza e Grafi di precedenza Grafo di Precedenza e concorrenza Il Grafo di Precedenza consente di descrivere le attività concorrenti (potenzialmente parallele) da eseguire su un elaboratore. E’ quindi un utile supporto per: L’analisi e la sintesi della concorrenza nei programmi La programmazione concorrente: l’utente, sfruttando opportuni linguaggi, definisce esplicitamente porzioni di codice parallelizzabili 11
© 2016 Giorgio Porcu - Aggiornamennto 18/03/2016 T ECNOLOGIE E P ROGETTAZIONE Il Sistema Operativo Concorrenza e Grafi di precedenza Pseudocodice Grafo di Precedenza Pseudocodice Grafo di precedenza Una prima applicazione pratica dei Grafi di precedenza consiste in: 1.Analizzare lo pseudocodice di un programma sequenziale Lo pseudocodice è una rappresentazione di un algoritmo simile al codice di un linguaggio di programmazione 2.Trasformarlo in un Grafo di precedenza che utilizzi il parallelismo al massimo livello 12
© 2016 Giorgio Porcu - Aggiornamennto 18/03/2016 T ECNOLOGIE E P ROGETTAZIONE Il Sistema Operativo Concorrenza e Grafi di precedenza Realizzare un Grafo di Precedenza Realizzare un Grafo di precedenza Per realizzare il Grafo di Precedenza occorre ragionare con logica su alcuni aspetti: Eseguire in parallelo solo istruzioni che non utilizzino la stessa variabile. Un accesso condiviso a una porzione di memoria è difatti potenziale causa di errore Preservare la precedenza temporale delle istruzioni stabilita nel pseudocodice Garantire la corretta precedenza tra istruzioni sulla stessa variabile per evitare che assuma valori non coerenti 13
© 2016 Giorgio Porcu - Aggiornamennto 18/03/2016 T ECNOLOGIE E P ROGETTAZIONE Il Sistema Operativo Concorrenza e Grafi di precedenza Grafo di Precedenza: Esempio 1 (1/3) Consideriamo il seguente algoritmo in pseudocodice per calcolare e visualizzare il maggiore tra 3 numeri letti da tastiera: inizio 1.Leggi X; 2.Leggi Y; 3.Leggi Z; 4.K Max(X,Y);// richiama funzione Max() 5.K Max(K,Z); 6.Scrivi K; fine 14 Esempio tratto da: Camagni, Nikolassy Tecnologie e progettazione di sistemi informatici e di telecomunicazioni Hoepli – ISBN
© 2016 Giorgio Porcu - Aggiornamennto 18/03/2016 T ECNOLOGIE E P ROGETTAZIONE Il Sistema Operativo Concorrenza e Grafi di precedenza Grafo di Precedenza: Esempio 1 (2/3) Un possibile Grafo di precedenza che lo descrive sfruttando il parallelismo è il seguente: 15 Esempio tratto da: Camagni, Nikolassy Tecnologie e progettazione di sistemi informatici e di telecomunicazioni Hoepli – ISBN
© 2016 Giorgio Porcu - Aggiornamennto 18/03/2016 T ECNOLOGIE E P ROGETTAZIONE Il Sistema Operativo Concorrenza e Grafi di precedenza Grafo di Precedenza: Esempio 1 (3/3) In alternativa, è altrettanto corretto descrivere lo pseudocodice con questo Grafo di precedenza: 16 Esempio tratto da: Camagni, Nikolassy Tecnologie e progettazione di sistemi informatici e di telecomunicazioni Hoepli – ISBN
© 2016 Giorgio Porcu - Aggiornamennto 18/03/2016 T ECNOLOGIE E P ROGETTAZIONE Il Sistema Operativo Concorrenza e Grafi di precedenza Grafo di Precedenza: Esempio 2 (1/2) Consideriamo il seguente algoritmo in pseudocodice che esegue un’espressione matematica: inizio 1.(2*6) + (1+4) * (5-2); fine In questo caso per realizzare il Grafo di precedenza ragioniamo sulla naturale priorità tra operatori matematici: prima si eseguono le operazioni tra parentesi, poi le moltiplicazioni/divisioni, infine le addizioni/sottrazioni 17 Esempio tratto e adattato da: Camagni, Nikolassy Tecnologie e progettazione di sistemi informatici e di telecomunicazioni Hoepli – ISBN
© 2016 Giorgio Porcu - Aggiornamennto 18/03/2016 T ECNOLOGIE E P ROGETTAZIONE Il Sistema Operativo Concorrenza e Grafi di precedenza Grafo di Precedenza: Esempio 2 (2/2) Ne traiamo il seguente Grafo di precedenza che lo descrive sfruttando il parallelismo: 18 Esempio tratto da: Camagni, Nikolassy Tecnologie e progettazione di sistemi informatici e di telecomunicazioni Hoepli – ISBN