Want to create interactive content? It’s easy in Genially!
Spinlock+Semafori di Dijkstra
matthew pagano
Created on April 6, 2021
Start designing with a free template
Discover more than 1500 professional designs like these:
View
Audio tutorial
View
Pechakucha Presentation
View
Desktop Workspace
View
Decades Presentation
View
Psychology Presentation
View
Medical Dna Presentation
View
Geometric Project Presentation
Transcript
Programmazione
La programmazione concorrente
Autori: Matthew Pagano Gabriele Fasitta
Index
02. Semafori di Dijkstra
01. Spinlock
Spinlock
Come proteggere una risorsa condivisa
01. il problema
Perché si usano gli Spinlock?
Esempio
- Il processo P1 accede alla periferica T
- Invia un segnale da utilizzare
- Il processo P2 accede alla periferica T
- Invia un altro segnale da utilizzare mentre il segnale di P1 è ancora in elaborazione
- La periferica non riesce a gestire due segnali contemporaneamente danneggiando l'elaborazione degli stessi.
Nell'ambito della programmazione concorrente può capitare che più processi (o thread) tentino di accedere alla stessa risorsa contemporaneamente mettendo a rischio l'affidabilità della risorsa stessa.
02. Ma cosa sono?
Come funzionano
Cosa sono
Gli Spinlock sono una tecnica di programmazione che consente la protezione delle risorse da accessi simultanei
Consistono in un ciclo che controlla se una risorsa è in "lock" : Se sì il processo viene mantenuto in pausa, in caso contrario può accedere alla risorsa
Semafori di dijkstra
Come gestire i processi
01. il problema
Perché si usano i semafori di Dijkstra?
Esempio (CPU 2core)
- Il processo P1 accede al core C1
- Il processo P2 accede al core C2
- Il processo P3 tenta di accedere alla CPU
- Non trovando core disponibili non viene eseguito.
Nell'ambito della programmazione concorrente succede spesso che diversi task tentino di accedere ad una classe di risorse, nasce così l'esigenza di una gestione dei task.
02. Ma cosa sono?
Come funzionano
Cosa sono
I semafori di Dijkstra sono dei tipi di dato composti da una variabile intera (che rappresenta il numero di risorse libere) e dalla lista dei task in coda per accedervi.
Consistono in un ciclo che controlla se una risorsa è in "lock" : Se sì il processo viene mantenuto in pausa, in caso contrario può accedere alla risorsa
03. Results
Inizializzazione
Si inizializza la variabile intera al numero di risorse disponibili
Questa funzione decrementa il numero di risorse disponibili, se dopo il decremento il numero dovesse essere negativo il task verrebbe sospeso
Questa funzione incrementa il numero di risorse disponibili, se si passa ad un numero >0 mette in ready il primo task della coda
04. Tipi di semafori
Semafori contatori
Semafori binari
I semafori binari possono assumere solo valori 0 e 1 e vengono utilizzati per risolvere i problemi più semplici
I semafori contatori possono assumere valori =,< o > a 0 e vengono utilizzati per risolvere problemi più complessi.
Grazie per la visione
Qualche domanda?
Fonti:
Qastack.it Dacrema.com it.wikipedia.org