Swappa : Uni / Sistemi Operativi - Appunti caotici
Creative Commons License

Torna alla pagina di Sistemi Operativi


 :: Appunti caotici ::

Lezione 2 Variabili di lock

Pag 1

Sommario

...

Pag 2

Variabile di turno

E' una variabile condivisa tra i processi che interagiscono per accedere in modo condiviso alla risorsa, stabilendone il turno (ovvero a quale processo spetta il diritto di uso in un certo istante).

Sincronizzazione di due processi concorrenti mediante variabile di turno

Nell'utilizzo dei buffer andava tutto bene fin tanto che si leggeva e si scriveva, il problema nasce quando bisogna effettuare degli aggiornamenti. Il problema nello specifico è che se il buffer era pieno il processo si bloccava per depositare il suo messaggio e si impediva l'aggiornamento dell'indice. Ecco perchè devo garantire una sincronizzazione che effettuo con la variabile di turno.

Pag 3

Algoritmo 1

Questo algoritmo scritto in java prevede l'uso di una variabile di turno condivisa.

Commentiamo alcune parti del codice:

Caratteristiche dell'algoritmo:

Algoritmo 2

Anche in questo caso commentiamo alcune porzioni di codice:

Utilizzo due variabili booleane di flag per riferirmi allo stato dei processi

Caratteristiche dell'algoritmo:

Pag 4

Algoritmo 3

Anche in questo caso commentiamo alcune porzioni di codice:

Caratteristiche dell'algoritmo:

Variabile di lock

La variabile di lock non guarda più lo stato di uso dei processi, quindi il diritto d'uso di un processo, ma lo stato di uso di una risorsa.

Pag 5

Uso ad interruzioni disabilitate

Acquisizione della risorsa:

Notare come questi passaggi siano sequenze di operazioni assembler, quindi interrompibili per definizione. Devo perciò garantire che siano loro stesse una porzione critica, disabilitando appunto le interruzione.

Rilascio della risorsa:

Hardware per la sincronizzazione

Vegono in pratica introdotti nell'hardware del processore dei meccanismi per ottenere la sincronizzazione.

L'istruzione atomica TEST-AND-SET traduce la sequenza di istruzioni precedenti in una sola.

Se però la soluzione vista nella slide precedente è percorribile dal programmatore, questa è perseguibile esclusivamente dal progettista del processore.


Torna alla pagina di Sistemi Operativi

(Printable View of http://www.swappa.it/wiki/Uni/SO-Mod3-5-Lez2)