Apri il menu di navigazione
Chiudi suggerimenti
Cerca
Cerca
it
Change Language
Cambia lingua
Carica
Accedi
Accedi
Scarica gratis per giorni
0 valutazioni
Il 0% ha trovato utile questo documento (0 voti)
109 visualizzazioni
7 pagine
Semafori
Caricato da
api-285399009
Titolo migliorato con IA
Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo,
rivendicalo qui
.
Formati disponibili
Scarica in formato PDF o leggi online su Scribd
Scarica
Salva
Salva semafori per dopo
Condividi
0%
Il 0% ha trovato utile questo documento, undefined
0%
, undefined
Stampa
Incorpora
Segnala
0 valutazioni
Il 0% ha trovato utile questo documento (0 voti)
109 visualizzazioni
7 pagine
Semafori
Caricato da
api-285399009
Titolo migliorato con IA
Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo,
rivendicalo qui
.
Formati disponibili
Scarica in formato PDF o leggi online su Scribd
Carosello precedente
Carosello successivo
Scarica
Salva
Salva semafori per dopo
Condividi
0%
Il 0% ha trovato utile questo documento, undefined
0%
, undefined
Stampa
Incorpora
Segnala
Scarica
Salva semafori per dopo
Sei sulla pagina 1
/ 7
Cerca
Schermo intero
LEZIONE 3 SINCRONIZZAZIONE TRA PROCESSI: SEMAFORI IN QUESTA LEZIONE IMPAREREMO... |a definire e utilizzare i semafori di basso livello e spin lock() il concetto di indivisibilita di una primitiva il funzionamento dei semafori di Dijkstra B Premessa: quando é necessario sincronizzare? ‘Nel caso di process! interagent, siano essi in competizione, cis che chiedono uso di una risorsa comune riusabile e di molteplicit2 finita per i propri scopi, oppure siano in cooperazione per rai ‘glungere un obiettivo comune, possono verificarsi casi di interferenza, Lastrategia da adottare per gestire linterierenza & diversa per ogni situazione e dipende dalla tolle- che il sistema pud permettersi degli effetti di una errata sincronizzazione, dalla possibilita di individuare agevolmente le eventuali situazioni e di poterle correggere ripristinando le situarioni precedent ed evencualmente ripetendo le operazion! eritiche. Possiamo classificare in quattro gruppi la casistica di situazioni possibili e per ogni gruppo indicare Varione che # nevessario effettuare: ST Esempio Strategie inaccetiabl incrocio stredale ‘evitere ogn! imerferenca vaseurabil appleasioni non evtiche ignores Flavabill s cantrellabl iterator ‘llevara ad avira ‘levablli a racuperabili rate ethernet rilevare @ ripetere Nei ci occuperemo del primo caso, cio® di si ‘tuaztont in cut la competizione tra | processt cl porta a situaziont di interferenza che possone Provocare sitazioni inaccettabili e che quind devono essere gestite con la mutua esclusione.La sezione critica viene gestita in modo che: © um processo che deve accedere a una regione critica deve chievere l'autorizzazione eseguendo tuna serie di istruzioni che, nel caso la risorsa fosse libera, gli garantiscono il suo utilizz0 esclusi- vo per tutta la durata della sua elaborazione; se la risorsa fosse oveupata il gestore ne impedisoe accesso gestendo la richiesta, per esempio, con una coda di attesa; © quando un processo termina df utilizzare una risorsa, ha quind! terminato Tesecuzione delle istruzioni della sezione critica, deve effettuare un insieme di operazioni per rilasciarle in modo che possa essere utilizzata dagli altri processi ‘Mediante Futilizzo di primitive che regolino accesso e ilrilascio della risorsa ® necessario garantire che: © [a risorsa o 2 libera oppure @ utilizzata da un solo proceso (eendizione di mutaa exclusions © i provessi deveno sompre poter accedere alla risorsa richiesta e portare a termine il proprio voro (coniizione dl feirness) @ i process non devono avere ciel di ritardo non necessari che possano rallentare accesso alla regione critica de parte di un altro proceso. B Semafori di basso livello ¢ spin lock() _Affronteremo Ia trattazione del caso di richiesta di risorsa singola da parte di soli due processi ma il concetto @ immediatamente estendibile a un numero qualsivogiia di processi: pit complesso é inve- ce il caso di risorse multiple richieste contemporaneamente dagli stessi processi, che discuteremo, nella prossima lezione. Il primo meceanisma che analizsiamo 2 quello che associa a ogni risorsa una var al suo valore assume il seguente significato: x che in base x= 1 risorsa litera, cio? nessun processo la sta utilizzando; x0 risorsa ocoupata da un processo. (Quin il fag fala funatone di un semaforo x= 1 semaforo verde, 2 possibile aucedere alla isorsa; x= 0 semaforo rosso, la risorsa e cccupata ed 2 necessario met- tersi in attesa che siliberi. ‘Vediamo come esprimere in pseudocodifica i segmenti di codice per elfettuare rispettivamente lal- locazione e il rilascio di una risorsa, Allocazione di una risorsa: lock() La primitiva (o funzione) che permeite di allocare una risorsa prende il nome di lock() Possiamo indicare la sua sintassi nel seguente formato: eet) + dove x 2 Il semaforo assoclato alla risorsa che desideriamo uullizzare,La primitiva lock) deve: » testare il semaforo per verificarne il suo colore; » se 2 verde, modificane il valore a rosso; » se @ rosso, aspettare che diventi verde per poi metterlo a rosso. In pseudocodifioa una possibile realizzazione @ la seguente: funaione lock (x) ripeti // cielo di attesa sul senaforo rel caso che sia rosso tnche x= // esci dal cicio 2 senatoro verce x- 0 // matt: i1 senaforo @ rosso fne jo di una risorsa: unlock() La primitiva (o funzione) che permette di rilasciare una risorsa prende il nome di unlock().. Possiamo indicare la sua sintassi nel seguente formato: umiock(x)2 dove x & tl semaforo assoctaco alla rlsorsa che destderiamo utilizzare. La primitiva unlock() deve semplicemente modificare il valore del semaforo da rosso a verde, quindi: funzione unlock(x) ae {/ matt: 1 senaforo a verde ine La mutua esclusione si ottiene facendo precedere la lock(x) « une sezione critica e facendala seguire da una unlock(). Tock(x); < sezione critica> unlock (x) 1 Problema della indi Lith Per come abbiamo scritto listruzione di lock() non possiamo garantire l'acceso seriale a una risorsa, {in quanto potrebbe verificarsi una situazione di interleaving indesiderata.‘Veullamo per esempto la seguente situaztone: Hi ipotizziamo che il semaforo sia verde x = 1 Bi Il processo P1 effettua la lock(x) fino a verificare la condizione di test ma viene sospeso prima ‘che ne possa modificare il valore: FL un secondo processo P2 effettua anch'esso a lock(x) e, trovando il semaforo verde, lo mette a rosso ¢ inizta a utiizeare la risorsa; quando viene risvegliato il processo Pl esegue Vistruzione che pone a rosse il semaforo (che ei fatto perd @ gid 10ss0) e anch’esso utiliza la risorsa. Per evitare questa situazione® necessario rendere indivisibile Tesecuzione delle istruzioni della fun- Fione lock(): a soluzione potrebbe essere quella di disabilitare le interruzioni allinizio eal termine Ui questa funzione In modo che divend Inincerrompibile. Per esempio il codive potrebhe essere il seguente: funzione loekix)
cipeti // ciclo di attesa sul semaforo nel caso che sia rosso dnene x82 // esci dai ciclo 2 semaroro verae x<-0; // natti il senaforo a rosso
fine |Analoge problema potrebbe verificarsi per interleaving anche sulla primitive di unlocks) # quindi anch'essa viene eseguite a interruzioni disabilitate. funzione anleok(x) Sdisabilitare le interruzioni> x<-1; // natti il senaforo a verde
Riscriviamo le due primitive utlizzando queste due nuove istruziont: fanziona leck(x)Fipeti // cicie di attesa sul senaforo ael caso che sia rosso
Hnche Testaadset(x) // esci al ciclo settando i1 senaforo a rosso fine Euazione unlock (x) sex); // matti il semaforo 2 verde fine Nonostante quesio miglioramento rimane da riselvere Il problema della attesa attiva; inoltre non ‘abbiamo la garanzia esplicita che un processo non attenda indefinitamente su di un semaforo che, anche se diviene verde, viene petutamente assegnaco ad alu processi ¢ non a lui, | primi notare la necessit di avere una istruzione indivisible furono i progettist dell'0S/360 che aggiunsero nel linguaggio macchina del sistema 'struzione TEST AND SET LOCK (751). @ Semafori di Dijkstra EW. Dijaginnel 1966 lm prc spite che penincticns bi waht a gublata proba sone ee interazione fra provessi > a primitiva P(S), che rieeve utilizzata per accedere alla risorsax, » la primitiva V\S), che riceve anch'essa in ingresso un numero intero S non negative (semaforo) cche viene utllizzata per rilaselare la risorsa Intoduelamo quindi un nuevo po di daw, il semaphore, dove una sua Istanza noa 2 altro che una varlabille intera non negativa alla quale & possibile accedere solo cramite le due primidve P(S) e VS). SESE Il primo semaforo Dichiarazione di un oggetto di tipo semaphore: senaphore 8 = vii dove vi (viz) 8 il ealore inisiale e il valore 0 corrisponde al rosso.Lidea di Dijkstra @ quella di disciplinare 'accesso alle risorse mediante code e rendendbo insttive le sltuazion| di attess: se un semaforo rosso il processo che fa Il test (richlama la primluva P(S)) st sospende e viene messo nella coda dei processi, in attesa che si liberi quella risorsa mentre cesso che rilascia la risorsa invoca la primitiva VS) che modifica il valore del semaforo Se risvedlia {primo processo presente nella coda di atresa, Lee TUT ORIGINE DIP EV ‘Ofiginariamente queste primitive avevano il nome di wait e signal: Dijkstra lf sosttul con le in- Ziali Pe V di due termini olandet Ve Hliniiale cal termine olandese verhogen: aumentare, alzare di livello: » P Viniziale dal termine olandese proberen: provare, testare. Un proceso che esegue una P(S) pud avanzare solo se trova S > 0, altrimenti deve accodarsi per attendere passivamente una (8); un proceso che esegue una V(S). se non esistono processi in attesa dentro la coda, ha come unico effetto quello di inerementare S, altrimenti risveglia uno det rocessi che attendono nella coda: successivamente, in entrambe le situazioni, continua la propria iprocessore si realizzeno introducendo spinlock e/o disabilitando/riabilitando gli joffine di ciascuna di esse (dato che sono implementate direttamente dal sistema tervallo temporale in cui gli interrupt sono disabilitati @ molto breve) interrupt all’ operativo e I@ Semafori binari vs semafori di Dijkstra | semafori di Dijkstra vengono anche chiamati semafori generalizzati (o a conteggio) per distingver- Ji dai semafori binari In letteratura si trovano spesso i nomi down(S) ¢ up(S) per indicare rispettivamente P(S) ¢ V(S) dae to che listruzione 2($) decrementa di 1 il valore del semaforo (down(S)) e Fistruzione V(S) invece 1a incrementa (up(S)). Molteplicita di una risorsa Isemafori « contegsio vengone utilizzati per controllare lacoesso 2 una risorsa disponibile in un numero finito di esemplari: noi vedremo nel seguito una applicazione nel caso di utilizzo di un array ‘di NUM celle come risorsa condivisa, clascuna di esse destinata a contenere una variabile da condi= videre e quind! ll semaforo verra Intzializzato al valore NUM per indivare che sono dispoatbili NUM risorse e quinu il semaforo rimane verde finché non sono state tutte “occupate” Al test sul semaforo § possiamo avere due situazior § =X dove xc=NUM@ il numero di esemplari di risorsa liberi: se X > 0 il proceso pud accedere come in presenza di semaforo verde: BS = 0 risorse ocoupate, cio® 0) risorse libere e quindi il semaforo & rosso. Le istruzioni di P(S) e V(S) incrementano ¢ deerementano la moltey » quando viene effettaata una P(S) sti semaforo che ha valore >) ne valore, dato che viene occupata “una sua parte”; » quando viene effetmata una V(S) su un semaforo viene Inerementato i una unita tl suo valore dato che ne viene rese disponibile “una parte” per gi altri processi, jeitd di risorsa ibera sne decrementato di 1 il suo
Potrebbero piacerti anche
Traverso Totalitarismo
PDF
100% (1)
Traverso Totalitarismo
7 pagine
Bayes
PDF
Nessuna valutazione finora
Bayes
4 pagine
Il Finale de Il Fu Mattia Pascal
PDF
Nessuna valutazione finora
Il Finale de Il Fu Mattia Pascal
9 pagine
Il Passato Novella
PDF
Nessuna valutazione finora
Il Passato Novella
8 pagine
Integrali Definiti
PDF
Nessuna valutazione finora
Integrali Definiti
7 pagine
La Crisi Degli Anni 70 - Michela
PDF
Nessuna valutazione finora
La Crisi Degli Anni 70 - Michela
9 pagine
Anni Di Piombo
PDF
Nessuna valutazione finora
Anni Di Piombo
14 pagine
Difesa Perimetrale Con I Firewall
PDF
Nessuna valutazione finora
Difesa Perimetrale Con I Firewall
12 pagine
Sincronizzazione Tra Thread
PDF
Nessuna valutazione finora
Sincronizzazione Tra Thread
25 pagine
Appunti Di Sistemi Operativi 3.0
PDF
Nessuna valutazione finora
Appunti Di Sistemi Operativi 3.0
142 pagine
Sistemi-Operativi Raccolta Esercizi
PDF
Nessuna valutazione finora
Sistemi-Operativi Raccolta Esercizi
56 pagine
Sistemi Operativi Raccolta Esercizi PDF
PDF
Nessuna valutazione finora
Sistemi Operativi Raccolta Esercizi PDF
56 pagine
Dispensa Sistemi Operativi
PDF
Nessuna valutazione finora
Dispensa Sistemi Operativi
320 pagine
Altomare - Semafori
PDF
Nessuna valutazione finora
Altomare - Semafori
4 pagine
Modulo2 PDF
PDF
Nessuna valutazione finora
Modulo2 PDF
14 pagine
PC Appunti Finale
PDF
Nessuna valutazione finora
PC Appunti Finale
238 pagine
Deadlock
PDF
Nessuna valutazione finora
Deadlock
77 pagine
Deadlock: - Sequenza Di Utilizzo Dei Processi Che Utilizzano Risorse
PDF
Nessuna valutazione finora
Deadlock: - Sequenza Di Utilizzo Dei Processi Che Utilizzano Risorse
25 pagine
Esami Di Sistemi Operativi: Dal 2001 Al 2004
PDF
Nessuna valutazione finora
Esami Di Sistemi Operativi: Dal 2001 Al 2004
25 pagine
Domande Di So Ciampolini
PDF
Nessuna valutazione finora
Domande Di So Ciampolini
4 pagine
ProgrammaSO 14-15
PDF
Nessuna valutazione finora
ProgrammaSO 14-15
5 pagine
La Bibbia
PDF
Nessuna valutazione finora
La Bibbia
108 pagine
Esempi Concorr
PDF
Nessuna valutazione finora
Esempi Concorr
14 pagine
Esercizi Di Sistemi Operativi 1
PDF
Nessuna valutazione finora
Esercizi Di Sistemi Operativi 1
6 pagine
Dai SO Ai Deadlock
PDF
Nessuna valutazione finora
Dai SO Ai Deadlock
74 pagine
AXO - Prova 4 Febbraio 2016 - Con Sol
PDF
Nessuna valutazione finora
AXO - Prova 4 Febbraio 2016 - Con Sol
19 pagine
Programmazione Concorrente - Teoria
PDF
Nessuna valutazione finora
Programmazione Concorrente - Teoria
113 pagine
2) Processi Nei Sistemi Operativi (PCB, Context Switch)
PDF
Nessuna valutazione finora
2) Processi Nei Sistemi Operativi (PCB, Context Switch)
4 pagine
Riassunti SRT
PDF
Nessuna valutazione finora
Riassunti SRT
34 pagine
Strati Funzionali Del Sistema Operativo
PDF
Nessuna valutazione finora
Strati Funzionali Del Sistema Operativo
2 pagine
Appunti Sistemi
PDF
Nessuna valutazione finora
Appunti Sistemi
3 pagine
Programmazione Concorrente
PDF
Nessuna valutazione finora
Programmazione Concorrente
18 pagine
Sistemi Operativi
PDF
Nessuna valutazione finora
Sistemi Operativi
38 pagine
TPS Argomenti Vari
PDF
Nessuna valutazione finora
TPS Argomenti Vari
18 pagine
Appunti TPS
PDF
Nessuna valutazione finora
Appunti TPS
3 pagine
Giugno 13
PDF
Nessuna valutazione finora
Giugno 13
3 pagine
L3-L4-Programmazione Concorrente-AS.2022-23
PDF
Nessuna valutazione finora
L3-L4-Programmazione Concorrente-AS.2022-23
35 pagine
24 Deadly Sins of Software Security Programming Flaws and How To Fix Them (244 274) .En - It
PDF
Nessuna valutazione finora
24 Deadly Sins of Software Security Programming Flaws and How To Fix Them (244 274) .En - It
31 pagine
Comunicazione e Sincronizzaazione Tra Processi
PDF
Nessuna valutazione finora
Comunicazione e Sincronizzaazione Tra Processi
2 pagine
Unix
PDF
Nessuna valutazione finora
Unix
24 pagine
Elementi Di Architettura e Sistemi Operativi: Bioinformatica - Tiziano Villa
PDF
Nessuna valutazione finora
Elementi Di Architettura e Sistemi Operativi: Bioinformatica - Tiziano Villa
18 pagine
Schema SO
PDF
Nessuna valutazione finora
Schema SO
15 pagine
Paniere Domande - Programmazione Concorrente
PDF
Nessuna valutazione finora
Paniere Domande - Programmazione Concorrente
3 pagine
Sistemi Operativi 1 Parte 1
PDF
Nessuna valutazione finora
Sistemi Operativi 1 Parte 1
7 pagine
Domande Orale Seti
PDF
Nessuna valutazione finora
Domande Orale Seti
9 pagine
Cap 2 Scheduling
PDF
Nessuna valutazione finora
Cap 2 Scheduling
8 pagine
Lez1 ProcessiThread
PDF
Nessuna valutazione finora
Lez1 ProcessiThread
14 pagine
Deadlock
PDF
Nessuna valutazione finora
Deadlock
8 pagine
Lez3 Comunicazione
PDF
Nessuna valutazione finora
Lez3 Comunicazione
5 pagine
Lezione 24
PDF
Nessuna valutazione finora
Lezione 24
13 pagine
1-Processi Concorrenti
PDF
Nessuna valutazione finora
1-Processi Concorrenti
6 pagine
2-Risorse e Condivisione
PDF
Nessuna valutazione finora
2-Risorse e Condivisione
8 pagine
1-Introduzione ConcettiBase
PDF
Nessuna valutazione finora
1-Introduzione ConcettiBase
22 pagine
Modulo
PDF
Nessuna valutazione finora
Modulo
15 pagine
11-Sistemi Operativi
PDF
Nessuna valutazione finora
11-Sistemi Operativi
32 pagine
Variabili Condizioni
PDF
Nessuna valutazione finora
Variabili Condizioni
64 pagine
LABSO 16 2020-2021 MuteXVarCond
PDF
Nessuna valutazione finora
LABSO 16 2020-2021 MuteXVarCond
64 pagine
08 Stallo
PDF
Nessuna valutazione finora
08 Stallo
33 pagine
Domande Verifica
PDF
Nessuna valutazione finora
Domande Verifica
8 pagine
Modello A Processi-1
PDF
Nessuna valutazione finora
Modello A Processi-1
2 pagine
Docu
PDF
Nessuna valutazione finora
Docu
6 pagine
TPSI Presentazione
PDF
Nessuna valutazione finora
TPSI Presentazione
7 pagine
Appunti Informatica
PDF
Nessuna valutazione finora
Appunti Informatica
4 pagine
So 4
PDF
Nessuna valutazione finora
So 4
24 pagine
So 4
PDF
Nessuna valutazione finora
So 4
15 pagine
Thread Pegaso
PDF
Nessuna valutazione finora
Thread Pegaso
11 pagine