1 processi e thread meccanismi di ipc, inter process communication (1)

23
1 Processi e Thread Meccanismi di IPC, Inter Process Communication (1)

Upload: lia-pisano

Post on 01-May-2015

230 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: 1 Processi e Thread Meccanismi di IPC, Inter Process Communication (1)

1

Processi e Thread

Meccanismi di IPC, Inter Process Communication (1)

Page 2: 1 Processi e Thread Meccanismi di IPC, Inter Process Communication (1)

2

Comunicazioni fra processi/thread• Processi/thread eseguiti concorrentemente hanno bisogno di interagire per comunicare e sincronizzarsi :

– scambiare dati– utilizzare correttamente strutture dati condivise

• evitare interferenze (race conditions)

– 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, Inter Process Communication (1)

3

Comunicazioni fra processiEsempio di Race Condition (Interferenza)

Ogni processo esegue il seguente algoritmo:

1. Legge il valore di libero (LOAD ….)

2. Se libero è TRUE scrive il nome del file da stampare in File_in_stampa e assegna libero a FALSE

3. Altrimenti attende un tempo variabile e ripete da 1.

libero

File_in_stampa

Processo A

Processo B

Spooler

Page 4: 1 Processi e Thread Meccanismi di IPC, Inter Process Communication (1)

4

Comunicazioni fra processi (2)Esempio di Race Condition (Interferenza)

Lo spooler :

1. Legge il valore di libero (LOAD ….)

2. Se libero è FALSE legge File_in_stampa e stampa il corrispondente file

3. Altrimenti attende un tempo variabile e ripete da 1.

libero

File_in_stampa

Processo A

Processo B

Spooler

Page 5: 1 Processi e Thread Meccanismi di IPC, Inter Process Communication (1)

5

Comunicazioni fra processi (3)Esempio di Race Condition (Interferenza)

Ogni processo può essere interrotto in un momento qualsiasi. Es.

1. B legge il valore di libero (LOAD ….) e viene deschedulato

2. A legge il valore di libero (LOAD ….) e viene deschedulato

3. B scrive file_in_stampa (pippo.txt) e viene deschedulato

4. A scrive file_in_stampa (pluto.txt) e mette libero a FALSE

TRUE

……..

libero

File_in_stampa

Processo A

Processo B

Spooler

Page 6: 1 Processi e Thread Meccanismi di IPC, Inter Process Communication (1)

6

Comunicazioni fra processi (4)Esempio di Race Condition (Interferenza)

Ogni processo può essere interrotto in un momento qualsiasi. Es.

4. A scrive file_in_stampa (pluto.txt) e viene deschedulato

5. Lo spooler stampa pluto.txt …...

FALSE

pluto.txt.

libero

File_in_stampa

Processo A

Processo B

Spooler

pippo.txt non verrà mai stampato

Page 7: 1 Processi e Thread Meccanismi di IPC, Inter Process Communication (1)

7

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 8: 1 Processi e Thread Meccanismi di IPC, Inter Process Communication (1)

8

Dati condivisi fra processi diversi ...

Come è possibile condividere dati fra due processi diversi?

– Condividere un file (aperto da entrambi in lettura e scrittura)

– mettere a comune parti dello spazio di indirizzamento (via la system call mmap())

– …...

Page 9: 1 Processi e Thread Meccanismi di IPC, Inter Process Communication (1)

9

Sezioni/Regioni Critiche (2)

4 condizioni che devono essere garantite da un meccanismo che assicura 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 10: 1 Processi e Thread Meccanismi di IPC, Inter Process Communication (1)

10

Sezioni/Regioni Critiche (3)

Mutua esclusione con sezioni critiche

Page 11: 1 Processi e Thread Meccanismi di IPC, Inter Process Communication (1)

11

Mutua Esclusione : soluzioni hw

• 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 12: 1 Processi e Thread Meccanismi di IPC, Inter Process Communication (1)

12

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

• Soluzioni software– alternanza stretta– soluzione di Peterson

• Soluzioni hardware-software– l’istruzione TSL

Page 13: 1 Processi e Thread Meccanismi di IPC, Inter Process Communication (1)

13

Mutua Esclusione con attesa attiva (2)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 14: 1 Processi e Thread Meccanismi di IPC, Inter Process Communication (1)

14

Mutua Esclusione con attesa attiva (3)

Soluzione di Peterson (semplificata)

Page 15: 1 Processi e Thread Meccanismi di IPC, Inter Process Communication (1)

15

Mutua Esclusione con attesa attiva (4)

• Istruzione assembler Test and Set Lock (TSL)– eseguibile in modalità utente

• es: TSL R1, X – esegue due accessi indivisibili alla memoria – 1) copia il contenuto della cella di indirizzo X in R1– 2) scrive 1 in X

Page 16: 1 Processi e Thread Meccanismi di IPC, Inter Process Communication (1)

16

Mutua Esclusione con attesa attiva (5)

Ingresso ed uscita dalla sezione critica utilizzando l’istruzione TSL

Page 17: 1 Processi e Thread Meccanismi di IPC, Inter Process Communication (1)

17

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

• Esempio : il problema del produttore e del consumatore

Page 18: 1 Processi e Thread Meccanismi di IPC, Inter Process Communication (1)

18

Page 19: 1 Processi e Thread Meccanismi di IPC, Inter Process Communication (1)

19

Semafori (1)• Problema con sleep e wakeup : una wakeup non utilizzata immediatamente viene persa• Semafori : contatori di eventi implementati nel nucleo

– contano quanti eventi si sono verificati (es. Wakeup)– il valore è 0 se non ci sono eventi pendenti e > 0 altrimenti

• Due operazioni atomiche standard Up e Down (P e V) realizzate come system call– 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

Page 20: 1 Processi e Thread Meccanismi di IPC, Inter Process Communication (1)

20

Semafori (2)• 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 21: 1 Processi e Thread Meccanismi di IPC, Inter Process Communication (1)

21

Page 22: 1 Processi e Thread Meccanismi di IPC, Inter Process Communication (1)

22

Mutex (1)• Semaforo con solo due stati aperto (unlocked) o chiuso (locked)• Popolare nelle librerie di 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 23: 1 Processi e Thread Meccanismi di IPC, Inter Process Communication (1)

23

Mutex (2)

Implementazione delle primitive di mutex_lock e mutex_unlock