Coconote
AI notes
AI voice & video notes
Try for free
🚦
Mutua Esclusione e Semafori
Mar 10, 2025
Lezione sui Semafori e Mutua Esclusione
Introduzione alla Mutua Esclusione
Problematica
: Concorrenza tra processi
Definizione
: Mutua esclusione è necessaria quando più processi eseguono porzioni di codice in concorrenza.
Sezioni critiche
: Porzioni di codice che devono essere eseguite in modo mutuamente esclusivo.
Attesa nella Sezione Critica
Attesa attiva
: Un processo deve attendere se un altro è nella sezione critica.
Soluzioni al problema della mutua esclusione
:
Hardware
: Disabilitazione e riabilitazione dell'interrupt.
Software
: Algoritmo di Peterson.
Problemi delle Soluzioni
Algoritmo di Peterson:
Non facilmente generalizzabile per
n
processi.
Attesa attiva (busy waiting) può essere inefficiente.
Istruzione Test and Set
Funzione
: Carica un valore in un registro e modifica il valore di memoria.
Uso
: Permette di implementare la mutua esclusione via busy waiting.
Vantaggi
:
Efficiente e a basso livello.
Generalizzabile per
n
processi.
Necessità
: Hardware con istruzione di tipo Test and Set.
Problemi Aperti
Busy Waiting
: Come evitare che i programmi consumino CPU in attesa.
Equità (Fairness)
: Garantire che i processi entrino in sezione critica in un tempo ragionevole.
Esempio
: Ordine di accesso in una sala d'attesa.
Semafori
Definizione
: Variabile speciale per sincronizzazione tra processi.
Origine
: Introdotta da Dijkstra.
Caratteristiche del Semaforo
Struttura
: Composto da:
Contatore
: Variabile intera (può essere positiva o negativa).
Coda di Processi
: Processi in attesa di entrare in sezione critica.
Valore del Contatore
:
Negativo
: Semaforo occupato; valore assoluto indica quanti processi sono in attesa.
Zero
: Semaforo occupato ma nessun processo in attesa.
Positivo
: Semaforo libero; indica quanti processi possono passare.
Tipologie di Semafori
Semaforo Binario
: Inizialmente impostato a
1
(accesso libero per un processo).
Semaforo Contatore
: Valore superiore a
1
permette accesso multiplo (es. risorse multiple).
Prossimi Passi
Nella prossima lezione: Come implementare un semaforo e operazioni associate.
📄
Full transcript