Strumenti Utente

Strumenti Sito


informatica:sol:laboratorio11:esercitazioni:esercitazione8

Differenze

Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.

Link a questa pagina di confronto

Entrambe le parti precedenti la revisioneRevisione precedente
informatica:sol:laboratorio11:esercitazioni:esercitazione8 [01/03/2011 alle 17:25 (14 anni fa)] Susanna Pelagattiinformatica:sol:laboratorio11:esercitazioni:esercitazione8 [03/05/2011 alle 15:17 (14 anni fa)] (versione attuale) – [Esercizio 3: Il barbiere sonnolento] Susanna Pelagatti
Linea 15: Linea 15:
    
  
-====== Esercizio 3: Il barbiere sonnolento ====== +====== Esercizio 3: Problema dei lettori e degli scrittori ====== 
-Si consideri il negozio di un barbiereche dispone di: +Si consideri un array ''map'' di NMAX posizioni, contenente in ogni posizione un colore fra REDBLU, GREEN, WHITE, BLACK, oppure l'indicazione di nessun colore NOCOLOR. L'array e' condiviso fra 5 thread //lettori// e 2 thread //scrittori//. 
-  * Un certo numero (NSEDIE) di sedie riservate ai clienti in attesa; +Ogni thread lettore ha un colore di riferimento fra quelli ammessi.  
-  una poltrona, normalmente occupata dal cliente che viene servitoSe non vi sono clienti da servire, la poltrona è occupata dal barbiere per sonnecchiare+ 
 +I thread scrittori effettuano un ciclo infinito in cui generano casualmente una posizione ''i'' fra 0 ed NMAX - 1 ed un colore ''col'' ed assegnano a ''map[i]'' il colore ''col''
 +Ogni lettore effettuano un ciclo infinito in cui ad ogni iterazione contano il numero di occorrenze del proprio colore di riferimento nell'array e lo stampano sullo standard output. 
 + 
 +Si richiede che piu' lettori possano accedere contemporaneamente all'array map per leggerne i valoriL'esecuzione dei thread scrittori deve invece avvenire in mutua esclusione con tutti gli altri thread. In particolare, non puo' esserci accesso contemporaneo all'array da parte dei due scrittori e neppure da parte di uno scrittore ed i thread lettori.
  
-Quando entra un cliente, si danno le seguenti possibilità: 
-  * se tutte le sedie sono occupate, il cliente se ne va rinunciando al taglio dei capelli; 
-  * se ci sono sedie disponibili e il barbiere è sveglio (cioè intento a servire un cliente), il cliente occupa una delle sedie libere e attende. I clienti in attesa vengono serviti con politica ARBITRARIA; 
-  * se il barbiere sta dormendo, il primo cliente che entra lo sveglia e viene immediatamente servito. 
  
-Il barbiere e i clienti sono thread, le sedie e la poltrona sono 
-risorse. Programmare barbiere e clienti usando i thread POSIX. 
informatica/sol/laboratorio11/esercitazioni/esercitazione8.1299000338.txt.gz · Ultima modifica: 01/03/2011 alle 17:25 (14 anni fa) da Susanna Pelagatti

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki