TECNOLOGIE E PROGETTAZIONE Il Sistema Operativo Concorrenza e

  • Slides: 18
Download presentation
TECNOLOGIE E PROGETTAZIONE Il Sistema Operativo Concorrenza e Grafi di precedenza 16 0 2

TECNOLOGIE E PROGETTAZIONE Il Sistema Operativo Concorrenza e Grafi di precedenza 16 0 2 / 3 0 / 8 BOZZA: 1 GIORGIO PORCU www. thegiorgio. it © 2016 Giorgio Porcu - Aggiornamennto ISTITUTO TECNICO SECONDO BIENNIO

TECNOLOGIE E PROGETTAZIONE Il Sistema Operativo Concorrenza e Grafi di precedenza Sommario • Elaborazione

TECNOLOGIE E PROGETTAZIONE Il Sistema Operativo Concorrenza e Grafi di precedenza Sommario • Elaborazione concorrente © 2016 Giorgio Porcu - Aggiornamennto § Elaborazione sequenziale § Elaborazione concorrente § Elaborazione parallela • Grafi di Precedenza § Grafi di Precedenza: Simboli § Pseudocodice Grafo di Precedenza § Esempi 2

Il Sistema Operativo Concorrenza e Grafi di precedenza © 2016 Giorgio Porcu - Aggiornamennto

Il Sistema Operativo Concorrenza e Grafi di precedenza © 2016 Giorgio Porcu - Aggiornamennto TECNOLOGIE E PROGETTAZIONE Elaborazione concorrente 3

TECNOLOGIE E PROGETTAZIONE Il Sistema Operativo Concorrenza e Grafi di precedenza Elaborazione sequenziale ©

TECNOLOGIE E PROGETTAZIONE Il Sistema Operativo Concorrenza e Grafi di precedenza Elaborazione sequenziale © 2016 Giorgio Porcu - Aggiornamennto • 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

TECNOLOGIE E PROGETTAZIONE Il Sistema Operativo Concorrenza e Grafi di precedenza • Elaborazione Concorrente

TECNOLOGIE E PROGETTAZIONE Il Sistema Operativo Concorrenza e Grafi di precedenza • 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 Elaborazione concorrente (1/2)

TECNOLOGIE E PROGETTAZIONE Il Sistema Operativo Concorrenza e Grafi di precedenza Elaborazione concorrente (2/2)

TECNOLOGIE E PROGETTAZIONE Il Sistema Operativo Concorrenza e Grafi di precedenza Elaborazione concorrente (2/2) © 2016 Giorgio Porcu - Aggiornamennto • 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

TECNOLOGIE E PROGETTAZIONE Il Sistema Operativo Concorrenza e Grafi di precedenza Elaborazione parallela ©

TECNOLOGIE E PROGETTAZIONE Il Sistema Operativo Concorrenza e Grafi di precedenza Elaborazione parallela © 2016 Giorgio Porcu - Aggiornamennto • 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

Il Sistema Operativo Concorrenza e Grafi di precedenza © 2016 Giorgio Porcu - Aggiornamennto

Il Sistema Operativo Concorrenza e Grafi di precedenza © 2016 Giorgio Porcu - Aggiornamennto TECNOLOGIE E PROGETTAZIONE Grafi di precedenza 8

TECNOLOGIE E PROGETTAZIONE Il Sistema Operativo Concorrenza e Grafi di precedenza Grafo di Precedenza:

TECNOLOGIE E PROGETTAZIONE Il Sistema Operativo Concorrenza e Grafi di precedenza Grafo di Precedenza: Simboli (1/2) § Blocco di istruzioni (Istruzione, Processo, Thread, Attività): Cerchio. © 2016 Giorgio Porcu - Aggiornamennto • Grafo di Precedenza Rappresentazione grafica della precedenza temporale di esecuzione tra istruzioni. Utilizza i seguenti simboli grafici di base: A § Precedenza: Freccia direzionale § Istruzioni in sequenza A precede B B inizia dopo A A A B B 9

TECNOLOGIE E PROGETTAZIONE Il Sistema Operativo Concorrenza e Grafi di precedenza Grafo di Precedenza:

TECNOLOGIE E PROGETTAZIONE Il Sistema Operativo Concorrenza e Grafi di precedenza Grafo di Precedenza: Simboli (2/2) A B C § Inizio parallelismo A precede sia B che C B e C sono eseguibili in parallelo dopo A B § Fine parallelismo C B e C precedono D D è eseguibile al termine di B e C D A B C © 2016 Giorgio Porcu - Aggiornamennto • Grafo di Precedenza D 10

TECNOLOGIE E PROGETTAZIONE Il Sistema Operativo Concorrenza e Grafi di precedenza Grafo di Precedenza

TECNOLOGIE E PROGETTAZIONE Il Sistema Operativo Concorrenza e Grafi di precedenza Grafo di Precedenza e concorrenza © 2016 Giorgio Porcu - Aggiornamennto • 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

TECNOLOGIE E PROGETTAZIONE Il Sistema Operativo Concorrenza e Grafi di precedenza • Pseudocodice Grafo

TECNOLOGIE E PROGETTAZIONE Il Sistema Operativo Concorrenza e Grafi 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 Pseudocodice Grafo di Precedenza

TECNOLOGIE E PROGETTAZIONE Il Sistema Operativo Concorrenza e Grafi di precedenza • Realizzare un

TECNOLOGIE E PROGETTAZIONE Il Sistema Operativo Concorrenza e Grafi 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 Realizzare un Grafo di Precedenza

TECNOLOGIE E PROGETTAZIONE Il Sistema Operativo Concorrenza e Grafi di precedenza Consideriamo il seguente

TECNOLOGIE E PROGETTAZIONE Il Sistema Operativo Concorrenza e Grafi di precedenza Consideriamo il seguente algoritmo in pseudocodice per calcolare e visualizzare il maggiore tra 3 numeri letti da tastiera: 1. 2. 3. 4. 5. 6. inizio Leggi X; Leggi Y; Leggi Z; K Max(X, Y); K Max(K, Z); Scrivi K; fine Esempio tratto da: Camagni, Nikolassy Tecnologie e progettazione di sistemi informatici e di telecomunicazioni Hoepli – ISBN 9788820351571 // richiama funzione Max() 14 © 2016 Giorgio Porcu - Aggiornamennto Grafo di Precedenza: Esempio 1 (1/3)

TECNOLOGIE E PROGETTAZIONE Il Sistema Operativo Concorrenza e Grafi di precedenza Grafo di Precedenza:

TECNOLOGIE E PROGETTAZIONE Il Sistema Operativo Concorrenza e Grafi di precedenza Grafo di Precedenza: Esempio 1 (2/3) © 2016 Giorgio Porcu - Aggiornamennto Un possibile Grafo di precedenza che lo descrive sfruttando il parallelismo è il seguente: Esempio tratto da: Camagni, Nikolassy Tecnologie e progettazione di sistemi informatici e di telecomunicazioni Hoepli – ISBN 9788820351571 15

TECNOLOGIE E PROGETTAZIONE Il Sistema Operativo Concorrenza e Grafi di precedenza Grafo di Precedenza:

TECNOLOGIE E PROGETTAZIONE Il Sistema Operativo Concorrenza e Grafi di precedenza Grafo di Precedenza: Esempio 1 (3/3) © 2016 Giorgio Porcu - Aggiornamennto In alternativa, è altrettanto corretto descrivere lo pseudocodice con questo Grafo di precedenza: Esempio tratto da: Camagni, Nikolassy Tecnologie e progettazione di sistemi informatici e di telecomunicazioni Hoepli – ISBN 9788820351571 16

TECNOLOGIE E PROGETTAZIONE Il Sistema Operativo Concorrenza e Grafi di precedenza Grafo di Precedenza:

TECNOLOGIE E PROGETTAZIONE Il Sistema Operativo Concorrenza e Grafi di precedenza Grafo di Precedenza: Esempio 2 (1/2) inizio 1. (2*6) + (1+4) * (5 -2); fine © 2016 Giorgio Porcu - Aggiornamennto Consideriamo il seguente algoritmo in pseudocodice che esegue un’espressione matematica: Esempio tratto e adattato da: Camagni, Nikolassy Tecnologie e progettazione di sistemi informatici e di telecomunicazioni Hoepli – ISBN 9788820351571 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

TECNOLOGIE E PROGETTAZIONE Il Sistema Operativo Concorrenza e Grafi di precedenza Grafo di Precedenza:

TECNOLOGIE E PROGETTAZIONE Il Sistema Operativo Concorrenza e Grafi di precedenza Grafo di Precedenza: Esempio 2 (2/2) © 2016 Giorgio Porcu - Aggiornamennto Ne traiamo il seguente Grafo di precedenza che lo descrive sfruttando il parallelismo: Esempio tratto da: Camagni, Nikolassy Tecnologie e progettazione di sistemi informatici e di telecomunicazioni Hoepli – ISBN 9788820351571 18