Vai alla Home Page About me Courseware Federica Living Library Federica Federica Podstudio Virtual Campus 3D Le Miniguide all'orientamento Gli eBook di Federica La Corte in Rete
 
 
Il Corso Le lezioni del Corso La Cattedra
 
Materiali di approfondimento Risorse Web Il Podcast di questa lezione

Antonino Mazzeo » 12.Sincronizzazione nel modello ad ambiente globale


Sommario

  • Problema della mutua esclusione (competizione)
  • Soluzioni hardware al problema della mutua esclusione
  • Problema della comunicazione (cooperazione)
  • Semafori

Competizione tra processi

  • Più processi “competono”nell’uso di una risorsa
  • Un gestore di una risorsa ha il compito di fornire un accesso sicuro e garantito alla risorsa che gestisce
  • Tre problemi chiave nel controllo di accesso ad una risorsa
    • Mutua Esclusione
      • Due o più processi che vogliono utilizzare una risorsa ad uso esclusivo, detta Risorsa Critica
    • Deadlock
      • Indica la presenza di una condizione di attesa indefinita
    • Starvation
      • Indica quelle condizioni in cui ad un processo a bassa priorità non viene mai assegnata una risorsa

Mutua Esclusione

  • Requisiti
    • Un solo processo alla volta può accedere alla sezione critica
    • Un processo che si arresta nella sua sezione non critica (critica) non deve interferire con altri processi
    • Evitare deadlock e starvation (senza attesa indefinita)
    • L’accesso ad una sezione critica di un processo non deve essere ritardata se non ci sono altri processi nella sezione stessa
    • Nessuna assunzione deve essere fatta sulla velocità di esecuzione dei processi o sul numero dei processi (no “Race Condition”)
    • Un processo può rimanere in una sezione critica solo per un tempo finito

Supporto Hardware alla mutua esclusione

  • Disabilitazione degli Interrupt
    • L’approccio viola i principi di protezione: i processi utente dovrebbero poter disabilitare gli interrupt
  • Istruzione Test and Set Lock
      • TSL RX,LOCK
    • Legge il contenuto della parola di memoria LOCK e lo scrive nel registro RX, è eseguita in un solo ciclo
    • Problemi: attesa attiva e priority inversion
    • Vengono risolti “forzando” il processo che trova la variabile LOCK al valore 1 a sospendersi in attesa di un evento.
    • Vengono usate due system call per sospendere è risvegliare un processo: suspend(P1) e Wake-up(P2).

Problema della comunicazione

  • Un processo “produttore” genera ciclicamente un messaggio e lo deposita in un buffer
  • Un processo “consumatore” preleva dal buffer il messaggio e lo utilizza
  • Vincoli:
    • Il produttore non può inserire un nuovo messaggio prima che il consumatore abbia prelevato il precedente;
    • Il consumatore non può prelevare dal buffer un nuovo messaggio prima che il produttore l’abbia depositato
  • Pur esistendo un problema di mutua esclusione nell’utilizzo del buffer comune, la soluzione impone un ordinamento nelle operazioni dei due processi
  • E’ necessario che produttori e consumatori si scambino segnali

Semafori

  • Variabili Speciali utilizzate per la cooperazione e la competizione tra processi
  • Un tipo di dato astratto s che incapsula:
    • una variabile di tipo intero (s.value);
    • una coda (s.queue), per tenere traccia dei processi che si sono sospesi nell’attesa di una signal
  • sono definite le seguenti operazioni:
    • Inizializzazione della variabile ad un valore non negativo
    • Operazione di wait, che ha l’effetto di decrementare il valore del semaforo
    • L’operazione di signal che ha l’effetto di incrementare il valore del semaforo
Schema esplicativo (semaforo)

Schema esplicativo (semaforo)


Semafori

  • Semafori Binari
    • il suo valore intero può essere soltanto 0 o 1; può essere più semplice da realizzare
  • Il problema della mutua esclusione con l’utilizzo dei semafori
    • Si utilizza un semaforo s (chiamato mutex), inizializzato a 1
Codice di un semaforo mutex

Codice di un semaforo mutex


Prossima lezione

Sincronizzazione nel modello ad ambiente locale

I materiali di supporto della lezione

P. Ancilotti, M.Boari, A. Ciampolini, G. Lipari, “Sistemi Operativi”, Mc-Graw-Hill (Cap.3; par. 3.2, 3.3, 3.4)

A. Tanenbaum, “Operating Systems Desing and Implementation”, terza ed (Cap 2, par. 2.2.3)

Sincronizzazione nel modello ad ambiente globale

  • Contenuti protetti da Creative Commons
  • Feed RSS
  • Condividi su FriendFeed
  • Condividi su Facebook
  • Segnala su Twitter
  • Condividi su LinkedIn
Progetto "Campus Virtuale" dell'Università degli Studi di Napoli Federico II, realizzato con il cofinanziamento dell'Unione europea. Asse V - Società dell'informazione - Obiettivo Operativo 5.1 e-Government ed e-Inclusion