
Semafori
Presentation
•
Computers
•
11th Grade
•
Medium
Emanuela Giaconi
Used 2+ times
FREE Resource
31 Slides • 15 Questions
1
TPSI
I semafori
2
3
Open Ended
Che cos'è l'interferenza e che situazione si genereano in caso in cui accada? (come sono i processi tra loro?)
4
Premessa: quando è necessario
sincronizzare?
Si possono verificare casi di interferenza nel caso di processi interagenti
•siano essi in competizione, cioè che chiedono l’uso di una risorsa comune
riusabile e di molteplicità finita per i propri
scopi
•siano in cooperazione per raggiungere un obiettivo comune
5
Premessa: quando è necessario
sincronizzare?
● Possiamo classificare in quattro gruppi la
casistica di situazioni possibili e per ogni
gruppo indicare l’azione che è
necessario effettuare
6
Premessa: quando è necessario
sincronizzare?
● Noi ci occuperemo di:
•situazioni in cui la competizione tra i processi
ci porta a interferenze che possono provocare
situazioni inaccettabili e che quindi devono
essere gestite con la mutua esclusione
•casi in cui i processi collaborano e quindi
devono scambiarsi informazioni attraverso
aree di memoria condivisa e con accesso
regolato da meccanismi di sincronizzazione
7
Open Ended
Che cosa sono la mutua esclusione e la sezione critica?
8
Premessa: quando è necessario
sincronizzare?
● Il frammento di programma che utilizza la
risorsa R che deve essere gestita in mutua
esclusione si dice sezione critica o regione
critica rispetto alla risorsa R
● è necessario garantire che un processo
acceda alla risorsa da solo
● esegua la sezione critica con la certezza di
essere l’unico utilizzatore che volta per volta
esegue il codice che utilizza la risorsa
9
Premessa: quando è necessario
sincronizzare?
● La sezione critica viene gestita in modo:
•un processo che deve accedere a una regione
critica deve chiedere l’autorizzazione
• se la risorsa fosse libera il gestore ne assicura
un uso esclusivo per tutta la durata
dell’elaborazione
• se la risorsa fosse occupata il gestore ne
impedisce l’accesso gestendo la richiesta, per
esempio, con una coda di attesa
10
Premessa: quando è necessario
sincronizzare?
•quando un processo termina di utilizzare
una risorsa deve effettuare operazioni per
rilasciarla in modo che possa essere
utilizzata dagli altri processi
11
Premessa: quando è necessario
sincronizzare?
● Con apposite primitive che regolino l’accesso e
il rilascio della risorsa si garantisce che:
•la risorsa o è libera oppure è utilizzata da un solo
processo (condizione di mutua esclusione);
•i processi devono sempre poter accedere alla
risorsa richiesta e portare a termine il proprio lavoro
(condizione di fairness);
•i processi non devono avere cicli di ritardo non
necessari che possano rallentare l’accesso alla
regione critica da parte di un altro processo.
12
Premessa: quando è necessario
sincronizzare?
●
I meccanismi che permettono di regolare l’accesso alla
regione critica risolvendo di fatto il problema della mutua
esclusione sono essenzialmente tre:
◗ gli spin lock (o semafori binari);
◗ P(S) & V(S) ovvero i semafori di Dijkstra;
◗ i monitor.
13
Semafori di basso livello e spin lock()
● Il primo meccanismo che analizziamo è quello
che associa a ogni risorsa una variabile x
● in base al suo valore assume il seguente
significato:
•x = 1 risorsa libera, cioè nessun processo la sta
utilizzando
•x = 0 risorsa occupata da un processo
14
Semafori di basso livello e spin lock()
● Il flag fa la funzione di un semaforo:
◗x = 1 semaforo verde, è possibile accedere
alla risorsa;
◗x = 0 semaforo rosso, la risorsa è occupata
ed è necessario mettersi in attesa che si
liberi.
15
Semafori di basso livello e spin lock()
● Allocazione di una risorsa: lock() o P()
16
Semafori di basso livello e spin lock()
● Rilascio di una risorsa unlock() o V():
● La primitiva unlock() deve semplicemente modificare il
valore del semaforo da rosso a verde:
● La mutua esclusione si ottiene facendo precedere la lock(x)
a una sezione critica e facendola seguire da una unlock().
17
Semafori di basso livello e spin lock()
● Problema della indivisibilità
Per come abbiamo scritto l’istruzione di lock()
potrebbe verificarsi situazione di interleaving
●
18
Semafori di basso livello e spin lock()
● Problema della indivisibilità
Per evitare questa situazione è necessario rendere
indivisibile l’esecuzione delle istruzioni della funzione
lock(x): la soluzione potrebbe essere quella di
disabilitare le interruzioni all’inizio e al termine di
questa funzione in modo che diventi ininterrompibile.
19
Semafori di basso livello e spin lock()
● Problema della indivisibilità
Analogo problema potrebbe verificarsi per interleaving
anche sulla primitiva di unlock(x):
20
Semafori di basso livello e spin lock()
● Problema della indivisibilità
Riscriviamo le due primitive utilizzando
queste due nuove istruzioni:
21
Semafori di basso livello e spin
lock()
22
Semafori di basso livello e spin
lock()
23
Multiple Select
In un semaforo binario a seconda del valore di x abbiamo
x=1 risorsa libera
x=0 risorsa libera
x=1 risorsa occupata
x=0 risorsa occupata
24
Multiple Choice
L'istruzione TestAndSet(x):
Modifica il valore di un bit in modo ininterrompibile
Modifica il valore di un byte in modo ininterrompibile
Modifica il valore di x in modo ininterrompibile
Tutte le affermazioni precedenti sono valide, dipende dall'applicazione
25
Multiple Choice
L'istruzione TestAndSet(x)
risolve il problema dell'attesa attiva
risolve il problema della starvation
risolve il problema dell'interleaving
non risolve nessun problema
26
Multiple Choice
Se la mancanza di sincronizzazione provoca danni trascurabili, la miglior strategia è ignorare il problema
Vero
Falso
27
Multiple Choice
La serializzazione può essere ottenuta introducendo cicli di ritardo
Vero
Falso
28
Multiple Choice
L'istruzione di lock su uno spin può generare una situazione di attesa attiva
Vero
Falso
29
Multiple Choice
Per evitare situazioni di interleaving l'istruzione di lock si esegue a interruzioni disabilitate
Vero
Falso
30
Multiple Choice
La primitiva di unlock(x), essendo una sola istruzione, non richiede interruzioni disabilitate
Vero
Falso
31
Multiple Choice
Le primitive P(S) e V(S) non necessitano di essere indivisibili in quanto sono atomiche
Vero
Falso
32
Multiple Choice
La P(S) su un semaforo rosso sospende il processo e lo mette in coda
Vero
Falso
33
Multiple Choice
La V(S) su un semaforo verde mette il semaforo a rosso senza sospendere il processo
Vero
Falso
34
Multiple Choice
Diversi processi possono accedere alla stessa area di memoria, e se un processo sta eseguendo una test-and-set, nessun altro processo può iniziare un'altra test-and-set finché il primo processo non ha terminato la propria
Vero
Falso
35
Multiple Choice
TestandSet e disabilitazione degli interrupt hanno lo scopo di creare sezioni critiche
Vero
Falso
36
Semafori di Dijkstra
● Dijkstra ha proposto due primitive che
permettono la soluzione di qualsiasi
problema di interazione fra processi:
•la primitiva P(S), che riceve in ingresso un numero
intero S non negativo (semaforo), che viene
utilizzata per accedere alla risorsa
•la primitiva V(S), che riceve anch’essa in ingresso
un numero intero S non negativo (semaforo), che
viene utilizzata per rilasciare la risorsa
37
Semafori di Dijkstra
● Introduciamo quindi un nuovo tipo di dato:
● dove vi (vi≥0) è il valore iniziale
● il valore 0 corrisponde al rosso
38
Semafori ferroviari
●
39
Semafori di Dijkstra
● Lo schema a blocchi delle due istruzioni è:
40
Semafori di Dijkstra
● La pseudocodifica:
41
Semafori di Dijkstra
● Un processo che esegue una P(S) può
avanzare solo se trova S > 0
•altrimenti deve accodarsi per attendere
passivamente una V(S)
● Un processo che esegue una V(S), se non
esistono processi in attesa dentro la coda, ha
come unico effetto quello di incrementare S
•altrimenti risveglia uno dei processi che attendono
nella coda:
42
● La realizzazione delle due primitive è:
Semafori di Dijkstra
43
Semafori binari vs semafori di
Dijkstra
● I semafori di Dijkstra vengono anche chiamati
semafori generalizzati (o a conteggio) per
distinguerli dai semafori binari
● In letteratura si trovano spesso i nomi down(S)
e up(S) per indicare rispettivamente P(S) e
V(S)
•l’istruzione P(S) decrementa di 1 il valore del
semaforo ->down(S)
•l’istruzione V(S) invece la incrementa ->up(S)
44
Semafori binari vs semafori di
Dijkstra
● Molteplicità di una risorsa
● I semafori a conteggio vengono utilizzati per
controllare l’accesso a una risorsa disponibile
in un numero finito di esemplari
●
45
46
TPSI
I semafori
Show answer
Auto Play
Slide 1 / 46
SLIDE
Similar Resources on Wayground
41 questions
Dampak Penjajahan
Presentation
•
11th Grade
39 questions
EOC Reading 1
Presentation
•
11th Grade
42 questions
TES 13 nov 2024
Presentation
•
11th Grade
39 questions
Materi Informatika Bab 4
Presentation
•
11th Grade
41 questions
JARINGAN VOIP
Presentation
•
12th Grade
41 questions
MITIGASI BENCANA ALAM
Presentation
•
11th Grade
42 questions
Bab 5 Pasaran Faktor dan Agihan
Presentation
•
11th Grade
41 questions
Utang Jangka Pendek (Pertemuan Ke 5)
Presentation
•
11th Grade
Popular Resources on Wayground
20 questions
"What is the question asking??" Grades 3-5
Quiz
•
1st - 5th Grade
20 questions
“What is the question asking??” Grades 6-8
Quiz
•
6th - 8th Grade
10 questions
Fire Safety Quiz
Quiz
•
12th Grade
20 questions
Equivalent Fractions
Quiz
•
3rd Grade
34 questions
STAAR Review 6th - 8th grade Reading Part 1
Quiz
•
6th - 8th Grade
20 questions
“What is the question asking??” English I-II
Quiz
•
9th - 12th Grade
20 questions
Main Idea and Details
Quiz
•
5th Grade
47 questions
8th Grade Reading STAAR Ultimate Review!
Quiz
•
8th Grade
Discover more resources for Computers
20 questions
“What is the question asking??” English I-II
Quiz
•
9th - 12th Grade
10 questions
Fire Prevention
Quiz
•
9th - 12th Grade
41 questions
US History STAAR Review
Quiz
•
11th Grade
20 questions
Grammar
Quiz
•
9th - 12th Grade
16 questions
AP Biology: Unit 1 Review (CED)
Quiz
•
9th - 12th Grade
20 questions
verbos reflexivos en español
Quiz
•
9th - 12th Grade
20 questions
US History EOC STAAR 2022 Review Set 1
Quiz
•
11th Grade
11 questions
Expectations Review
Quiz
•
9th - 12th Grade