1 Processi e Thread Meccanismi di IPC Problemi classici di IPC.

33
1 Processi e Thread Meccanismi di IPC Problemi classici di IPC

Transcript of 1 Processi e Thread Meccanismi di IPC Problemi classici di IPC.

Page 1: 1 Processi e Thread Meccanismi di IPC Problemi classici di IPC.

1

Processi e Thread

Meccanismi di IPC

Problemi classici di IPC

Page 2: 1 Processi e Thread Meccanismi di IPC Problemi classici di IPC.

2

Comunicazioni fra processi/thread

• Processi/thread eseguiti concorrentemente hanno bisogno di interagire per comunicare e sincronizzarsi :– scambiare dati

– utilizzare correttamente strutture dati condivise

– eseguire azioni nella sequenza corretta

• Molti meccanismi proposti • Per semplicità ci riferiremo principalmente ai processi

– maccanismi simili sono disponibili per i thread

Page 3: 1 Processi e Thread Meccanismi di IPC Problemi classici di IPC.

3

Comunicazioni fra processiRace Condition (Interferenza)

Due processi accedono alla memoria condivisa contemporaneamente

l’esito dipende dall’ordine in cui vengono eseguiti gli accessi

Page 4: 1 Processi e Thread Meccanismi di IPC Problemi classici di IPC.

4

Sezioni/Regioni Critiche (1)

Regione Critica : porzione di un processo che accede a strutture dati condivise

– punti potenziali di interferenza

Obiettivo : fare in modo che le regioni critiche di due processi non vengano mai eseguite contemporaneamente (mutua esclusione)

Page 5: 1 Processi e Thread Meccanismi di IPC Problemi classici di IPC.

5

Sezioni/Regioni Critiche (2)

4 condizioni per assicurare la mutua esclusione un solo processo per volta esegue la sezione critica non viene fatta nessuna assunzione sulla velocità

relativa dei processi nessun processo che sta eseguendo codice esterno

alla sezione critica può bloccare un altro processo nessun processo attende indefinitamente di entrare

nella sezione critica

Page 6: 1 Processi e Thread Meccanismi di IPC Problemi classici di IPC.

6

Sezioni/Regioni Critiche (3)

Mutua esclusione con sezioni critiche

Page 7: 1 Processi e Thread Meccanismi di IPC Problemi classici di IPC.

7

Mutua Esclusione con attesa attiva (busy waiting) (1)

• Disabilitare le interruzioni– impedisce che un altro processo vada in esecuzione

– non utilizzabile in modo utente

– utilizzabile per poche istruzioni in modo kernel

– non risolve il problema se il sistema ha più di una CPU

Page 8: 1 Processi e Thread Meccanismi di IPC Problemi classici di IPC.

8

Mutua Esclusione con attesa attiva (busy waiting) (2)

• Soluzioni software– alternanza stretta– soluzione di Peterson

• Soluzioni hardware-software– l’istruzione TSL

Page 9: 1 Processi e Thread Meccanismi di IPC Problemi classici di IPC.

9

Mutua Esclusione con attesa attiva (3)Alternanza stretta

Una soluzione non soddisfacente per il problema della ME– 0 può bloccare 1 quando si trova fuori dalla SC

Processo 0 Processo 1

Page 10: 1 Processi e Thread Meccanismi di IPC Problemi classici di IPC.

10

Mutua Esclusione con attesa attiva (4)

Soluzione di Peterson (semplificata)

Page 11: 1 Processi e Thread Meccanismi di IPC Problemi classici di IPC.

11

Mutua Esclusione con attesa attiva (5)

Ingresso ed uscita dalla sezione critica utilizzando l’istruzione TSL

Page 12: 1 Processi e Thread Meccanismi di IPC Problemi classici di IPC.

12

Soluzioni senza attesa attivaLe primitive Sleep e Wakeup (1)

• Idea di base : un processo viene bloccato finché non è in grado di entrare nella sezione critica (in modo da non sprecare cicli di CPU)

• Due primitive realizzate come system call– sleep() :: blocca il processo che la invoca

– wakeup(P) :: sveglia il processo P

Page 13: 1 Processi e Thread Meccanismi di IPC Problemi classici di IPC.

13Sol. Errata al problema del produttore–consumatore (con race condition)

Page 14: 1 Processi e Thread Meccanismi di IPC Problemi classici di IPC.

14

Semafori (1)• Problema con sleep e wakeup : una wakeup non utilizzata immediatamente viene persa• Semafori : variabili intere

– contano il numero di wakeup pendenti– il valore è 0 se non ci sono wakeup pendenti e > 0 altrimenti

• Due operazioni atomiche standard Up e Down (P e V)– down(S)

• se S > 0 allora S= S - 1 ed il processo continua l’esecuzione• se S==0 ed il processo si blocca senza completare la primitiva

– up(S)• se ci sono processi in attesa di completare la down su quel semaforo (e quindi necessariamente S == 0) uno di questi viene svegliato e S rimane a 0, altrimenti S viene incrementato;• in caso contrario (S > 0), allora S=S + 1

Page 15: 1 Processi e Thread Meccanismi di IPC Problemi classici di IPC.

15

Semafori (2)

Soluzione del Produttore/Consumatore con semafori

Page 16: 1 Processi e Thread Meccanismi di IPC Problemi classici di IPC.

16

Mutex (1)• Semaforo con solo due stati aperto (unlocked) o chiuso (locked)• Popolare nei thread user-level

• Due primitive :– mutex_lock(), corrisponde alla down()– mutex_unlock(), corrisponde alla up()

• Utilizzato per realizzare sezioni critiche su dati condivisi • Puo essere implementato efficientemente senza passare in stato kernel (se è disponibile la TSL)

Page 17: 1 Processi e Thread Meccanismi di IPC Problemi classici di IPC.

17

Mutex (2)

Implementazione delle primitive di mutex_lock e mutex_unlock

Page 18: 1 Processi e Thread Meccanismi di IPC Problemi classici di IPC.

18

Monitor (1)• Oggetti (Strutture dati + procedure per accedervi)• Mutua esclusione nell’esecuzione delle procedure• Variabili di Condizione + wait() e signal()• wait(X)

– sospende sempre il processo che la invoca in attesa di una signal(X)

• signal(X)– sveglia uno dei processi in coda su X– se nessun processo è in attesa va persa– deve essere eseguita solo come ultima istruzione prima di uscire dal monitor (il processo svegliato ha l’uso esclusivo del monitor)

Page 19: 1 Processi e Thread Meccanismi di IPC Problemi classici di IPC.

19

Monitor (2)

Un esempio di monitor

Page 20: 1 Processi e Thread Meccanismi di IPC Problemi classici di IPC.

20

Monitor (3)

• Schema di soluzione Produttore/Consumatore – ad ogni istante solo una procedura del monitor è in esecuzione– il buffer ha N posizioni

Page 21: 1 Processi e Thread Meccanismi di IPC Problemi classici di IPC.

21

Monitor (4)

• Caratteristiche principali dei monitor Java– ME nell’esecuzione dei metodi synchronized – non ci sono variabili di condizione– wait(), notify() simili a sleep() , wakeup() – è possibile svegliare tutti i processi in attesa

Page 22: 1 Processi e Thread Meccanismi di IPC Problemi classici di IPC.

22

Monitor (5)

Soluzione per Produttore/Consumatore in Java (parte 1)

Page 23: 1 Processi e Thread Meccanismi di IPC Problemi classici di IPC.

23

Monitor (6)

Soluzione per Produttore/Consumatore in Java (parte 2)

Page 24: 1 Processi e Thread Meccanismi di IPC Problemi classici di IPC.

24

Scambio Messaggi (1)• Non richedono accesso a supporti di memorizzazione comune• primitive base

– send(destination,&msg)– receive(source, &msg)

• decine di varianti, nel nostro caso : – la receive blocca automaticamente se non ci sono messaggi– i messaggi spediti ma non ancora ricevuti sono bufferizzati dal SO

Page 25: 1 Processi e Thread Meccanismi di IPC Problemi classici di IPC.

25

Scambio Messaggi (2)

Sol. Produttore/Consumatore con N messaggi

Page 26: 1 Processi e Thread Meccanismi di IPC Problemi classici di IPC.

26

I filosofi a cena (1)

• I filosofi mangiano e pensano• Per mangiare servono due

forchette• Ogni filosofo prende una forchetta

per volta • Come si può prevenire il deadlock

Page 27: 1 Processi e Thread Meccanismi di IPC Problemi classici di IPC.

27

I filosofi a cena (2)

Una falsa soluzione al problema dei filosofi

Page 28: 1 Processi e Thread Meccanismi di IPC Problemi classici di IPC.

28

I filosofi a cena (3)

Una soluzione corretta al problema (parte 1)

Page 29: 1 Processi e Thread Meccanismi di IPC Problemi classici di IPC.

29

I filosofi a cena (4)

Una soluzione corretta al problema (parte 2)

Page 30: 1 Processi e Thread Meccanismi di IPC Problemi classici di IPC.

30

Il problema dei lettori e scrittori (1)• Un database molto esteso (db)

– es. prenotazioni aeree …• Un insieme di processi che devono leggere o scrivere in db• Più lettori possono accedere contemporaneamente a db• Gli scrittori devono avere accesso esclusivo a db• I lettori hanno precedenza sugli scrittori

– se uno scrittore chiede di accedere mentre uno o più lettori stanno accedendo a db, lo scrittore deve attendere che i lettori abbiano finito

Page 31: 1 Processi e Thread Meccanismi di IPC Problemi classici di IPC.

31

Il problema dei lettori e scrittori (2)

Una soluzione al problema dei lettori e scrittori

Page 32: 1 Processi e Thread Meccanismi di IPC Problemi classici di IPC.

32

Il barbiere sonnolento (1)

Page 33: 1 Processi e Thread Meccanismi di IPC Problemi classici di IPC.

33

Il barbiere sonnolento (2)

Soluzione al problema del barbiere.