Estratto del documento

Scanned by CamScanner Scanned by CamScanner Scanned by CamScanner Scanned by CamScanner Scanned by CamScanner Scanned by CamScanner Scanned by CamScanner Scanned by CamScanner Scanned by CamScanner Scanned by CamScanner Scanned by CamScanner Scanned by CamScanner Scanned by CamScanner Scanned by CamScanner Scanned by CamScanner Scanned by CamScanner Scanned by CamScanner Scanned by CamScanner Scanned by CamScanner Scanned by CamScanner Scanned by CamScanner Scanned by CamScanner Scanned by CamScanner Scanned by CamScanner Scanned by CamScanner Scanned by CamScanner Scanned by CamScanner Scanned by CamScanner Scanned by CamScanner Scanned by CamScanner Scanned by CamScanner Scanned by CamScanner Scanned by CamScanner

Problema con l’utilizzo di pthread

Consideriamo un sensore che produce periodicamente dei dati e dei thread che leggono i valori all’interno di tale sensore.

4 Sensore

Problema lettore-scrittore

Vincoli

  • Possono essere attivi tutti i lettori nel sensore:
    • Se è attivo un lettore possono essere attivi altri lettori
    • Se è attivo uno scrittore non è detto che possono essere attivi gli altri scrittori.
  • Se è attivo uno scrittore non possono essere attivi altri scrittori.
  • Se è attivo un lettore non può essere attivo uno scrittore e viceversa.

Possiamo ragionare in due modi:

  • Top-down: Inizio a scrivere tutti i thread e poi scendo nel particolare, implementando lettore e scrittore.
  • Bottom-up: Implemento la sincronizzazione lettore-scrittore fino ad arrivare al Master che deve fare il lancio dei Works.

Ragioniamo sul problema

Il primo lettore che entra deve segnalare tutti gli altri lettori, dopodiché tutti possono accedere al sensore.

Dunque ho bisogno della variabile che mi indica il numero di lettori:

int num_lettori;

int x;

x è il valore scritto all’interno del buffer.

Dobbiamo sincronizzare lettore e scrittore:

Come fa a capire un lettore che uno scrittore è attivo?

  • Se sono il primo lettore verifico num_lettori.

Se usassi solo num_lettori non riuscirei a capire se lo scrittore è attivo all’interno del sensore, dunque immaginando che c’è solo uno scrittore, consideriamo una variabile booleana per indicare se c’è uno scrittore o almeno un lettore attivo dato che in C non esiste boolean considero un intero:

int occupato;

Che indica che se esiste uno scrittore che è attivo, gli altri scrittori si accorgeranno che lo scrittore interessato sta o

Anteprima
Vedrai una selezione di 9 pagine su 40
Tracce sistemi operativi Pag. 1 Tracce sistemi operativi Pag. 2
Anteprima di 9 pagg. su 40.
Scarica il documento per vederlo tutto.
Tracce sistemi operativi Pag. 6
Anteprima di 9 pagg. su 40.
Scarica il documento per vederlo tutto.
Tracce sistemi operativi Pag. 11
Anteprima di 9 pagg. su 40.
Scarica il documento per vederlo tutto.
Tracce sistemi operativi Pag. 16
Anteprima di 9 pagg. su 40.
Scarica il documento per vederlo tutto.
Tracce sistemi operativi Pag. 21
Anteprima di 9 pagg. su 40.
Scarica il documento per vederlo tutto.
Tracce sistemi operativi Pag. 26
Anteprima di 9 pagg. su 40.
Scarica il documento per vederlo tutto.
Tracce sistemi operativi Pag. 31
Anteprima di 9 pagg. su 40.
Scarica il documento per vederlo tutto.
Tracce sistemi operativi Pag. 36
1 su 40
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Ingegneria industriale e dell'informazione ING-INF/05 Sistemi di elaborazione delle informazioni

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher cikenthebest di informazioni apprese con la frequenza delle lezioni di Sistemi operativi e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli studi di Napoli Federico II o del prof Cotroneo Domenico.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community