Uni.SO-Mod3-5-Lez3 History
Hide minor edits - Show changes to output
April 06, 2008, at 01:31 PM
by
- Changed lines 8-9 from:
%center%%sottotitolo%Samafori
to:
%center%%sottotitolo%Semafori
March 26, 2008, at 03:51 PM
by
- Added lines 1-50:
(:title Sistemi Operativi - Appunti caotici:)
[[Torna alla pagina di Sistemi Operativi->SistemiOperativi]]
----
%titolo%''':: Appunti caotici ::'''
%center%%sottotitolo%Lezione 3
%center%%sottotitolo%Samafori
!!Pag 1
!!!!Sommario
...
!!Pag 2
!!!!Obiettivo
Obiettivo dei semafori è innalzare il livello di astrazione portando la gestione della sincronizzazione da operazioni macchina (scritte nell'applicazione) a funzioni del sistema operativo. Ciò solleva dal doversi fidare del buonsenso del programmatore, riducendo di conseguenza la possibilità di riscontrare errori.
Le funzioni di sincronizzazione del sistema operativo sono offerte a tutte i processi e possono sempre essere eseguite, dal momento che l'esecuzione supervisor è a interruzioni disabilitate.
!!!!Semaforo binario
Il semaforo binario S è una struttura dati (in particolare, una variabile binaria) che rappresenta lo stato di uso della risorsa condivisa:
* S = 1 : risorsa libera
* S = 0 : risorsa in uso (ovvero, nessuna risorsa disponibile, da cui lo 0)
Notare come il significato dei valori sia il contrario di quelli di lock, perché se lì ragionavo come "''se è in uso, non farci le tue operazioni''", qui ragiono invece come "''se è libero, lavora!''". Comunque, stiamo perdendo tempo: io programmatore non potrò mai confondermi, dato che userò direttamente le funzioni di sistema. Gli 0 e gli 1 saranno problemi del sistema operativo.
Il semaforo S è manipolato dalle funzioni:
* ''acquire(S)'' , che acquisisce l'uso della risorsa
* ''release(S)'' , che rilascia la risorsa
Le due funzioni sono atomiche poiché sono procedure di sistema, e sono da usare all'entrata e all'uscita dalla sezione critica.
!!Pag 3
!!!!Uso del semaforo binario
Nello schema, la funzione release riporta il semaforo al valore 1 e fa partire l'eventuale primo processo in attesa.
L'ordine con cui viene eseguita una coda di processi può essere regolata da una qualsiasi politica di ordinamento, in tutto simile a quelle viste per la schedulazione.
!!!!Implementazione del semaforo binario
...
!!Pag 4
!!!!Semaforo generalizzato
...
!!!!Uso del semaforo generalizzato
...
----
[[Torna alla pagina di Sistemi Operativi->SistemiOperativi]]
[[Torna alla pagina di Sistemi Operativi->SistemiOperativi]]
----
%titolo%''':: Appunti caotici ::'''
%center%%sottotitolo%Lezione 3
%center%%sottotitolo%Samafori
!!Pag 1
!!!!Sommario
...
!!Pag 2
!!!!Obiettivo
Obiettivo dei semafori è innalzare il livello di astrazione portando la gestione della sincronizzazione da operazioni macchina (scritte nell'applicazione) a funzioni del sistema operativo. Ciò solleva dal doversi fidare del buonsenso del programmatore, riducendo di conseguenza la possibilità di riscontrare errori.
Le funzioni di sincronizzazione del sistema operativo sono offerte a tutte i processi e possono sempre essere eseguite, dal momento che l'esecuzione supervisor è a interruzioni disabilitate.
!!!!Semaforo binario
Il semaforo binario S è una struttura dati (in particolare, una variabile binaria) che rappresenta lo stato di uso della risorsa condivisa:
* S = 1 : risorsa libera
* S = 0 : risorsa in uso (ovvero, nessuna risorsa disponibile, da cui lo 0)
Notare come il significato dei valori sia il contrario di quelli di lock, perché se lì ragionavo come "''se è in uso, non farci le tue operazioni''", qui ragiono invece come "''se è libero, lavora!''". Comunque, stiamo perdendo tempo: io programmatore non potrò mai confondermi, dato che userò direttamente le funzioni di sistema. Gli 0 e gli 1 saranno problemi del sistema operativo.
Il semaforo S è manipolato dalle funzioni:
* ''acquire(S)'' , che acquisisce l'uso della risorsa
* ''release(S)'' , che rilascia la risorsa
Le due funzioni sono atomiche poiché sono procedure di sistema, e sono da usare all'entrata e all'uscita dalla sezione critica.
!!Pag 3
!!!!Uso del semaforo binario
Nello schema, la funzione release riporta il semaforo al valore 1 e fa partire l'eventuale primo processo in attesa.
L'ordine con cui viene eseguita una coda di processi può essere regolata da una qualsiasi politica di ordinamento, in tutto simile a quelle viste per la schedulazione.
!!!!Implementazione del semaforo binario
...
!!Pag 4
!!!!Semaforo generalizzato
...
!!!!Uso del semaforo generalizzato
...
----
[[Torna alla pagina di Sistemi Operativi->SistemiOperativi]]