Appunti Classe Quarta Parte Due

38
Risorse e condivisione

description

Concorrenza

Transcript of Appunti Classe Quarta Parte Due

Page 1: Appunti Classe Quarta Parte Due

Risorse e condivisione

Page 2: Appunti Classe Quarta Parte Due

I processi sono i programmi in evoluzione. Per poter evolvere hanno bisogno delle risorse del sistema di elaborazione: si può immaginare il sistema di elaborazione come composto da un insieme di risorse da assegnare ai processi affinché questi possano svolgere il proprio compito

Si può definire risorsa: ogni componente, riusabile o no, sia hardware che software, necessario al processo o al sistema

Page 3: Appunti Classe Quarta Parte Due

Per accedere alle risorse i processi sono in competizione in quanto spesso esse non sono sufficienti per tutti e pertanto risulta necessaria una forma di condivisione affinché tutti possano utilizzarle; per esempio, i processi competono per avere a disposizione la RAM e per utilizzare l’interfaccia di rete e soprattutto il processore

Le risorse disponibili possono essere suddivise in classi e le risorse appartenenti alla stessa classe sono equivalenti, come per esempio i bytes della memoria o stampanti dello stesso tipo

Risorse

Suddivisione in classi

Classe

Classe Classe

Classe

ClasseClasse

Classe

Page 4: Appunti Classe Quarta Parte Due

Risorse

Suddivisione in classiClasse

Le risorse di una classe vengono dette istanze della classeIl numero di risorse in una classe viene detto molteplicità di una risorsa

Quando un processo necessita di una risorsa generalmente non può chiedere una particolare risorsa ma soltanto una istanza di una specifica classe: quindi una richiesta di risorse viene fatta per una classe di risorse e può essere soddisfatta da parte del SO assegnando al richiedente una qualsiasi istanza di quel tipo

Classe e istanze

Istanze

Page 5: Appunti Classe Quarta Parte Due

In altre parole, la molteplicità di una risorsa indica il numero massimo di processi che la possono utilizzare contemporaneamente: se il numero dei processi è maggiore di quello della molteplicità allora essa deve essere condivisa tra i processi che vi accedono concorrentemente

In un pc è presente un solo microprocessore e di conseguenza la molteplicità della sua risorsa è uguale ad uno: il numero massimo di processi che possono evolvere contemporaneamente è pertanto uno e quando si ha la necessità di far evolvere più processi assieme questi condividono l’unica istanza della risorsa e competono per ottenerla

Esempio

Page 6: Appunti Classe Quarta Parte Due

Per risorse di elaborazione condivise si intendono dispositivi assegnati alternativamente ai singoli processi che le richiedono

Risulta quindi necessaria una gestione delle risorse che può essere organizzata in fasi, alcune delle quali sono di natura statica e riguardano la loro assegnazione (pianificazione) mentre altre sono di natura dinamica e sono relative al loro utilizzo (controllo)

Le attività elencate sopra vengono svolte dal SO e per le risorse di molteplicità finita è necessario controllare gli accessi a ciascuna di esse in modo che il loro utilizzo sia costruttivo

Per ogni risorsa il SO mette a disposizione

• un gestore della risorsa: programma che ne regola l’utilizzo

• protocollo di accesso alla risorsa: procedura con la quale un processo effettua la richiesta della risorsa, la ottiene, la utilizza e la rilascia affinché possa essere utilizzata da altri processi

Page 7: Appunti Classe Quarta Parte Due

I processi competono nell’accesso alle risorse, effettuando dellerichieste per ottenere l’assegnazione di quanto gli necessita perevolvere

• Classificazione delle richieste Secondo il numero

Singola: è il caso riferito alla singola risorsa di una classe definita, il processo richiede una singola risorsa alla volta

multipla: si riferisce a una o più classi e per ogni classe a una o più risorse e deve essere soddisfatta integralmente; esso è il caso in cui il processo richiede contemporaneamente almeno due risorse per evolvere

Classificazione delle richieste

Una risorsa alla volta

Almeno due risorse

Page 8: Appunti Classe Quarta Parte Due

Secondo il tipo di richiesta Bloccante: è il caso in cui il processo necessita

immediatamente di quella risorsa e se non gli viene assegnata immediatamente si sospende, passa nello stato di attesa e la sua richiesta viene accodata e considerata nuovamente dal gestore della risorsa ogni volta che essa viene rilasciata dal processo che la sta utilizzando

Non bloccante: caso in cui viene effettuata una notifica di non disponibilità di una risorsa ma il processo continua la propria elaborazione anche in mancanza di essa

Classificazione delle richieste

Page 9: Appunti Classe Quarta Parte Due

L’assegnazione delle richieste avviene in due modalità

Statica: essa avviene nel momento della creazione di un processo stesso e rimane ad esso dedicata fino alla sua terminazione

Dinamica: caso in cui i processi utilizzano le risorse che vengono loro assegnate e le rilasciano quando non sono più necessarie (avviene soprattutto quando le risorse sono condivise)

Classificazione dell’assegnazione

Page 10: Appunti Classe Quarta Parte Due

In base alla mutua esclusività Seriali: è il caso delle risorse che non possono essere

assegnate a più processi contemporaneamente ma ognuno di essi deve attenderne la disponibilità (coda dei processi, come ad esempio le stampanti o i cd-rom)

Non seriali: ammettono l’accesso contemporaneo di più processi e quindi possono considerarsi di molteplicità infinita (ad esempio i file di lettura)

Classificazione delle risorse

Page 11: Appunti Classe Quarta Parte Due

In base alla modalità di utilizzo Risorse prerilasciabile: viene detta prerilasciabile o

preemptable una risorsa che mentre viene utilizzata da un processo può ad esso essere sottratta prima che abbia terminato di utilizzarla, senza che ciò danneggi il lavoro che sta effettuando, riprendendo il lavoro dal punto in cui è stato interrotto nel momento in cui gli viene restituita

Risorse non prerilasciabili: non prerilasciabili o non-preemptable sono risorse che una volta assegnate ad un processo non possono essere ad esso sottratte senza provocare un danno al compito che stava eseguendo (esempio masterizzatore)

Classificazione delle risorse

Page 12: Appunti Classe Quarta Parte Due

Grafo di Holt

Il grafo di Holt (1972), detto anche grafo di allocazione risorse o grafo delle attese, permette di rappresentare tutte le situazioni in cui si possono venire a trovare i processi e le richieste di risorse. Esso è particolarmente utile al fine di individuare situazioni di criticità tra processi e risorse

Nel grafo di Holt risorse e processi costituiscono due sottoinsiemi e sono rappresentati mediante nodi di due tipi:

• di forma quadrata le risorse (o di forma rettangolare nel caso di classi di risorsa e/o con risorsa multipla);

• di forma rotonda i processi

Page 13: Appunti Classe Quarta Parte Due

Risorse e processi del grafo di Holt vengono collegati mediante frecce

• la freccia che connette una risorsa al processo indica che la risorsa è assegnata al processo

• la freccia che connette un processo ad una risorsa indica che il processo ha richiesto la risorsa e che non gli viene assegnata poiché al momento della richiesta non è disponibile

R PRR PR PR

RP

R

Page 14: Appunti Classe Quarta Parte Due

Il grafo di Holt così ottenuto è orientato diretto (directed graph), con le frecce che hanno una sola direzione, e bipartito, in modo che non esistano frecce che collegano nodi dello stesso sottoinsieme: esse possono solo connettere nodi di diverso tipo

Se sono presenti più istanze della medesima classe di risorse si effettua una ripartizione della risorsa indicando la molteplicità con dei punti all’interno del box della risorsa (Grafo di Holt generale)

R1

P1

P1 richiede R1 // gli viene assegnata

P2 richiede R2 // gli viene assegnata

P3 richiede R1 // non gli viene assegnata

Esempio

R2

P2

R3

P3

Page 15: Appunti Classe Quarta Parte Due

Si supponga di avere classi di risorse con molteplicità diversa, come

• classe R1 con molteplicità 2;

• classe R2 con molteplicità 1;

• classe R3 con molteplicità 3

e la situazione sia

P1 richiede R1 // gli viene assegnata

P2 richiede R1 // gli viene assegnata

P2 richiede R2 // gli viene assegnata

P2 richiede R3 // gli viene assegnata

P2 richiede R3 // gli viene assegnata

P3 richiede R1 // non gli viene assegnata, rimane in attesa

P1 richiede R2 // non gli viene assegnata, rimane in attesa

Esempio grafo di Holt

Page 16: Appunti Classe Quarta Parte Due

Allora la rappresentazione mediante il grafo di Holt diventa

Esempio grafo di Holt

R1

P1 P2 P3

R2

R3

Si nota come nei grafi di Holt le frecce uscenti dai processi non rappresentano le richieste che possono essere soddisfatte ma soltanto quelle pendenti: esse infatti indicano quelle “mancanti” ai processi per evolvere, poiché assegnate ad altri

Page 17: Appunti Classe Quarta Parte Due

Riducibilità di un grafo di Holt

Il concetto fondamentale che sta alla base della riduzione di un grafo di Holt è la certezza che un processo, per evolvere, prima o poi terminerà sicuramente la sua elaborazione rilasciando le risorse che sta utilizzando e quindi non è un ostacolo per quei processi che utilizzano la stessa risorsa e la stanno aspettando: le risorse diventeranno libere e il grafo ridotto evidenzia questa situazione. Esso risulta utile perché permette di individuare situazioni critiche di blocco del sistema (stallo)

Il grafo ridotto è ottenuto eliminando le situazioni in cui un processo è in grado di evolvere e in cui libererà le risorse che sta utilizzando a favore di altri processi: un processo non attende nessuna risorsa e ha pertanto solo frecce entranti nei processi (risorse assegnate) senza quelle uscenti (risorse in sospeso)

Un grafo di Holt si dice riducibile se esiste almeno un nodo di tipo processo con solo frecce entranti

Page 18: Appunti Classe Quarta Parte Due

Si supponga di avere classi di risorse con molteplicità diversa, come

• classe R1 con molteplicità 3;

• classe R2 con molteplicità 1;

e la situazione sia

P1 richiede R1 // gli viene assegnata

P1 richiede R1 // gli viene assegnata

P1 richiede R2 // gli viene assegnata

P2 richiede R1 // gli viene assegnata

P2 richiede R2 // non gli viene assegnata, rimane in attesa

Esempio grafo di Holt ridotto

Page 19: Appunti Classe Quarta Parte Due

Si ha che al processo P1 sono associate tre risorse e, dato che non è in attesa di altre, sta evolvendo, quindi presto lascerà quelle che sta utilizzando

P1 P2

R1

R2

Esempio grafo di Holt ridotto

Effettuando una riduzione per P1 si ottiene un nuovo grafo di Holt, nel quale si considera terminata l’elaborazione di P1: vengono eliminate le frecce entranti in 1 e di conseguenza si rilasciano le corrispondenti risorse utilizzate

Page 20: Appunti Classe Quarta Parte Due

Riducendo rispetto a P1 allora:

P1 P2

R1

R2

Esempio grafo di Holt ridotto

Adesso anche il processo P2 è in grado di evolvere, dal momento che ha tutte le risorse che gli sono necessarie, e quindi è possibile continuare riducendo per P2

Page 21: Appunti Classe Quarta Parte Due

Riducendo poi rispetto a P2 si ottiene:

P1 P2

R1

R2

Esempio grafo di Holt ridotto

La successiva applicazione delle riduzioni ha portato ad un grafo di Holt ridotto nella quale non si individuano situazioni critiche per il sistema (nessuno stallo)

Come detto in precedenza, il grafo di Holt di partenza era riducibile e questo poiché aveva almeno un nodo di tipo processo con solo frecce entranti

Page 22: Appunti Classe Quarta Parte Due

Dato il grafico di Holt della figura sottostante:

Verifica per casa

R1

P1 P2 P3

R2

R3

1. indicare per quale processo è possibile farne una riduzione

2. rappresentare il grafo di Holt ridotto

3. rappresentare l’evoluzione della riduzione del grafo di Holt in Java

4. Indicare la condizione in cui il grafo di Holt non potrebbe essere ridotto

Gruppo 1

Page 23: Appunti Classe Quarta Parte Due

Dato il grafico di Holt della figura sottostante:

Verifica per casa

R1

P1 P2 P3

R2

R3

1. indicare per quale processo è possibile farne una riduzione

2. rappresentare il grafo di Holt ridotto

3. rappresentare l’evoluzione della riduzione del grafo di Holt in Java

4. Indicare la condizione in cui il grafo di Holt non potrebbe essere ridotto

Gruppo 2

Page 24: Appunti Classe Quarta Parte Due

Dato il grafico di Holt della figura sottostante:

Verifica per casa

R1

P1 P2 P3

R2

R3

1. indicare per quale processo è possibile farne una riduzione

2. rappresentare il grafo di Holt ridotto

3. rappresentare l’evoluzione della riduzione del grafo di Holt in Java

4. Indicare la condizione in cui il grafo di Holt non potrebbe essere ridotto

Gruppo 3

Page 25: Appunti Classe Quarta Parte Due

Dato il grafico di Holt della figura sottostante:

Verifica per casa

R1

P1 P2 P3

R2

R3

1. indicare per quale processo è possibile farne una riduzione

2. rappresentare il grafo di Holt ridotto

3. rappresentare l’evoluzione della riduzione del grafo di Holt in Java

4. Indicare la condizione in cui il grafo di Holt non potrebbe essere ridotto

Gruppo 4

Page 26: Appunti Classe Quarta Parte Due

Dato il grafico di Holt della figura sottostante:

Verifica per casa

R1

P1 P2 P3

R2

R3

Indicare se è possibile farne una riduzione

Un grafo di Holt si dice riducibile se esiste almeno un nodo di tipo processo con

sole frecce entranti

Page 27: Appunti Classe Quarta Parte Due

Elaborazione sequenziale e concorrente

Page 28: Appunti Classe Quarta Parte Due

Una elaborazione sequenziale è tale quando svolge una sola azione alla volta sulla base di un programma, detto anch’esso sequenziale“Con il termine elaborazione sequenziale si intende l’esecuzione di un programma sequenziale che genera un processo sequenziale con ordinamento totale alle azioni che vengono eseguite”

L’elaborazione sequenziale è pertanto un concetto fondamentale nell’informatica in quanto gli algoritmi computati sono composti da una sequenza finita di istruzioni in corrispondenza delle quali, durante la loro esecuzione, l’elaboratore passa attraverso una sequenza di stati (traccia dell’esecuzione)

Page 29: Appunti Classe Quarta Parte Due

Non tutti gli elaboratori hanno una singola CPU e inoltre alcune attività del processore possono essere parallelizzate, come per esempio le lunghe fasi di input che provocano enorme spreco di tempo macchina nei processi ad alta interattività con l’utente, applicazioni che per loro natura necessitano di attività parallele come i server, i games multiplayer, e per essi la codifica sequenziale delle attività propria della programmazione sequenziale non è in grado di adempiere opportunamente alle presenti situazioni.

Esse necessitano di un diverso modello in grado di effettuare la programmazione di un esecutore concorrente, ovvero un elaboratore in grado di eseguire più istruzioni in contemporanea

Page 30: Appunti Classe Quarta Parte Due

Per programmazione concorrente si indicano le tecniche e gli strumenti impiegati per descrivere il comportamento di più attività o processi che si intende far eseguire contemporaneamente in un sistema di calcolo (processi paralleli)

In realtà si è nella situazione di elaborazione contemporanea reale soltanto nel caso in cui l’esecutore sia dotato di una architettura multiprocessore, cioè con più processori che possono eseguire ciascuno un singolo programma: nei sistemi monoprocessore il parallelismo avviene solo virtualmente, grazie alla multiprogrammazione, e più processi evolvono in parallelo solo attraverso il tempo che viene loro assegnato dallo scheduling del SO

Page 31: Appunti Classe Quarta Parte Due

Il SO è per eccellenza l’esempio di programmazione concorrente: esso infatti assegna le risorse hardware dell’elaboratore ai processi utente che ne fanno richiesta e uso cercando di massimizzarne l’efficienza nella loro utilizzo. Le attività del SO devono essere eseguite concorrentemente in modo da consentire l’esecuzione contemporanea di più programmi utente: ogni attività interagisce con le altre sia in modo indiretto, occupando le risorse comuni, sia in modo diretto, scambiando informazioni in merito allo stato delle risorse e dei programmi utente per realizzare la multiprogrammazione

In un sistema multiprogrammato i programmi d’utente e le singole funzioni svolte dal SO possono essere considerati come un insieme di processi che competono per le stesse risorse

Page 32: Appunti Classe Quarta Parte Due

Quindi

• per sistema concorrente si intende un sistema software implementato su vari tipi di hardware che evolve in contemporanea una molteplicità di attività diverse, tra loro correlate, che possono cooperare ad un obiettivo comune oppure possono competere per utilizzare risorse diverse• due processi si dicono concorrenti se la prima operazione di uno di essi ha inizio prima del completamento dell’ultima operazione da parte dell’altro

Hardware

Hardware

Hardware

Hardware

Software

Sistema concorrente

P1 P2 P3

Page 33: Appunti Classe Quarta Parte Due

Processi non sequenziali e grafo di precedenza

Nei processi sequenziali la sequenza degli eventi che costituisce il processo è totalmente ordinata: se viene rappresentata attraverso un grafo orientato si ottiene che essa risulterà sempre la stessaUn grafo che descrive l’ordine con cui le azioni (o gli eventi) si eseguono nel tempo viene detto grafo delle precedenze

Nei processi paralleli, invece, l’ordinamento non è completo poiché per alcune istruzioni l’esecutore è libero di scegliere quali iniziare prima e quali dopo senza che il risultato sia compromesso: nella elaborazione parallela l’esecuzione delle istruzioni segue un ordinamento parziale

Page 34: Appunti Classe Quarta Parte Due

In un processo sequenziale il grafo delle precedenze degenera in una lista ordinata mentre nel processo parallelo diventa una grafo orientato aciclico e i percorsi alternativi indicano la possibilità di esecuzione contemporanea di più istruzioniPer la descrizione del grafo delle precedenze si usano i simboli:

A Attività (istruzione o sequenza di istruzioni)

Vincolo di precedenza

A B Attività seriale (B inizia dopo il termine di A)

A

B

C

B

C

A

Le attività B e C possono essere eseguite in parallelo dopo il termine dell’attività A

L’attività A può essere eseguita solo dopo il completamento di B e C che sono in parallelo

Page 35: Appunti Classe Quarta Parte Due

Esempio di algoritmo che legge tre numeri e ne individua il maggiore.

Per prima cosa è necessario scrivere il codice sequenziale dell’algoritmo

• Inizio

1. Leggi x;

2. Leggi y;

3. Leggi z;

4. K = max(x;y)

5. K = max(k;z)

6. Scrivi K

• Fine

Esempio grafo delle precedenze

Riportando le istruzioni del grafo per l’esecuzione si osserva che: “leggi x” e “leggi y”

non devono essere eseguite per forza in questo ordine ma potrebbero anche essere

eseguite in parallelo; anche la lettura di z, inoltre, può essere eseguita dopo l’istruzione

4 oppure in parallelo con essa. Le istruzioni 5 e 6 chiudono sempre la sequenza

Page 36: Appunti Classe Quarta Parte Due

Il grafo delle precedenze diventa

Esempio grafo delle precedenze

Inizio

Leggi x Leggi y

K = max (x,y)

K = max (k,z)

Leggi z

Scrivi k

Fine

Page 37: Appunti Classe Quarta Parte Due

Esempio grafo delle precedenze

Inizio

Leggi x Leggi y

Leggi z

K = max (k,z)

K = max (x,y)

Scrivi k

Fine

Esso non è però l’unico grafo delle precedenze possibile per l’algoritmo in questione

Infatti la lettura di z potrebbe

essere eseguita dal ramo che

effettua quella di x e il calcolo

del max tra x ed y al suo posto,

ottenendo un altro grafo

comunque corretto

Page 38: Appunti Classe Quarta Parte Due

Esempio grafo delle precedenze

I grafi ottenuti sono quindi grafi a ordinamento parziale; se essi vengono posti uno accanto all’alto si nota infatti che a differenza dei processi sequenziali, in un processo parallelo è possibile scegliere quali attività iniziare prima senza che il risultato sia compromesso

Inizio

Leggi x Leggi y

K = max (x,y)

K = max (k,z)

Leggi z

Scrivi k

Fine

Inizio

Leggi x Leggi y

Leggi z

K = max (k,z)

K = max (x,y)

Scrivi k

Fine