
Semafori standard Posix1.b
Presentation
•
Computers
•
11th Grade
•
Medium
Emanuela Giaconi
Used 2+ times
FREE Resource
15 Slides • 10 Questions
1
By Emanuela Giaconi
2
Sono una particolare implementazione dei semafori.
Possono svolgere il ruolo di semafori binari o generali n-ari (Dijkstra) a seconda di quale valore viene loro assegnato all'atto della inizializzazione
Semafori in Posix1.b
3
Open Ended
Ripassiamo insieme i vari tipi di semafori ... quali tipi di semafori conosci?
4
Semafori named
Permettono di sincronizzare processi anche non imparentati, oltre ai thread.
Identificati da un percorso
Si inizializzano con sem_open
Persistenti e Visibili in tutto il sistema.
Semafori in Posix1.b
5
Semafori unnamed
Permettono di sincronizzare processi imparentati e thread.
Condivisi tra thread o tra processi
Si inizializzano con sem_init
I Semafori sono una variable di tipo sem_t
Occorre includere la libreria semaphore.h
OPERANO IN MUTUA ESCLUSIONE, in particolare nell'accesso al contatore che contengono
Semafori in Posix1.b
6
Open Ended
Descrivi i semafori di Dijkstra e le relative primitive P() e V()
7
#include <semaphore.h>
int sem_init (sem_t *sem, int pshared, unsigned value);
es. sem_init(&nomeSemaforo, 0, valoreIniziale)
inizializza un unnamed semaphore sem
Restituisce 0 in caso tutto vada bene e -1 in caso di fallimento, nel qual caso setta errno
pshared assume valore 0: solo i threads del processo che li crea puo' usare il semaforo, e non-0: altri processi possono usare il semaforo
value: valore iniziale del semaforo
Semafori in Posix1.b
8
#include <semaphore.h>
int sem_wait(sem_t *sem);
es. sem_wait(&nomeSemaforo);
Blocca il thread sul semaforo
controlla il valore del semaforo
se il valore e' minore o uguale a zero si blocca e riparte uscendo dalla wait quando diventa uguale a zero, poi decrementa il valore del semaforo
se il valore e' maggiore di zero prosegue uscendo subito dalla waitp, poi decrementa il valore del semaforo.
Semafori in Posix1.b
9
#include <semaphore.h>
int sem_wait(sem_t *sem);
Restituisce
0 in caso di successo
-1 in caso di errore, setta errno (== EINTR se interrotto da un segnale)
Parametri sem: Target semaphore
sem > 1: decrementa e basta
sem == 1: decrementa e blocca altri thread (thread acquires lock)
sem <= 0: si blocca e quando viene sbloccato decrementa (thread blocks)
Semafori in Posix1.b
10
#include <semaphore.h>
int sem_post(sem_t *sem);
es. sem_post(&nomeSemaforo);
Sblocca il seaforo, cioe'
Incrementa di 1 il valore del semaforo
Se il valore diventa > 0 qualche altro thread bloccato sulla sem_wait puo' continuare l'esecuzione
Restituisce
0 in caso di successo
-1 in caso di errore e setta errno
Semafori in Posix1.b
11
Semafori in Posix1.b
12
Un produttore e un consumatore si alternano per un numero di VOLTE nella scrittura/prelievo di un dato in un buffer
Semafori in Posix1.b
13
14
15
Multiple Choice
Permettono di sincronizzare processi anche non imparentati, oltre ai thread
Semafori named
Semafori unnamed
16
Multiple Choice
Si inizializzano con sem_init
Semafori named
Semafori unnamed
17
Multiple Choice
Persistenti e Visibili in tutto il sistema.
Semafori named
Semafori unnamed
18
Multiple Choice
Sono variabili di tipo sem_t
Semafori named
Semafori unnamed
19
Multiple Choice
Inizializzazione di un semaforo standard posix1.b
sem_init(...)
pthread_mutex_init(...)
inizializza(...)
start(...)
20
Multiple Choice
int sem_init (sem_t *sem, int pshared, unsigned value);
pshared valore iniziale del semaforo
inizializza un named semaphore sem
Restituisce 0 in caso tutto vada bene
restituisce -2 in caso di fallimento
21
Multiple Choice
P() su semaforo unnamed
sem_wait()
sem_post()
sem_init()
sem_trywait()
22
Multiple Choice
V() su semaforo unnamed
sem_wait()
sem_post()
sem_init()
sem_trywait()
23
#include <semaphore.h>
int sem_trywait(sem_t *sem);
tenta di acquisire il semaforo ma continua la sua esecuzione se questo è rosso
Semafori in Posix1.b
24
#include <semaphore.h>
int sem_getvalue (sem_t sem, int sem_val);
Il valore del semaforo viene ritornato nella variabile *sem_val
Semafori in Posix1.b
25
#include <semaphore.h>
int sem_destroy (sem_t sem);
Il semaforo viene distrutto
Semafori in Posix1.b
By Emanuela Giaconi
Show answer
Auto Play
Slide 1 / 25
SLIDE
Similar Resources on Wayground
20 questions
Revolução Inglesa
Presentation
•
11th Grade
20 questions
Ripasso limiti e punti di discontinuità
Presentation
•
11th Grade
18 questions
Geometria de Posição
Presentation
•
11th Grade
17 questions
Efeito estufa
Presentation
•
11th Grade
20 questions
Introdução à estatística
Presentation
•
10th Grade
20 questions
3ª SÉRIE
Presentation
•
12th Grade
21 questions
3ª Série - Avaliação
Presentation
•
12th Grade
18 questions
Fede e scienza
Presentation
•
12th Grade
Popular Resources on Wayground
10 questions
Safety Day 2026 – Student Review
Quiz
•
9th Grade
21 questions
Continents and Oceans
Quiz
•
6th Grade
20 questions
Parts of Speech
Quiz
•
5th Grade
16 questions
Subject & Predicate
Quiz
•
5th Grade
25 questions
Multiplication Facts
Quiz
•
5th Grade
12 questions
Map Skills
Quiz
•
3rd Grade
22 questions
Continents and Oceans
Quiz
•
5th Grade
15 questions
Rounding Decimals
Quiz
•
5th Grade