Strumenti Utente

Strumenti Sito


informatica:sol:laboratorio21:esercitazionib:esercitazione7

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
Prossima revisione
Revisione precedente
informatica:sol:laboratorio21:esercitazionib:esercitazione7 [06/04/2021 alle 12:41 (4 anni fa)] Massimo Torquatiinformatica:sol:laboratorio21:esercitazionib:esercitazione7 [08/04/2021 alle 08:14 (4 anni fa)] (versione attuale) – [Esercizio 2 (filosofi a cena)] Massimo Torquati
Linea 7: Linea 7:
 ===== Esercizio 2 (filosofi a cena) ==== ===== Esercizio 2 (filosofi a cena) ====
  
-N filosofi siedono ad una tavola con un piatto di spaghetti davanti ed una forchetta alla loro destra ed una alla loro sinistra. Per mangiare gli spaghetti un filosofo ha bisogno di entrambe le forchette vicine. Ogni filosofo è impegnato ininterrottamente in una sequenza di 3 attivita': meditare, cercare di acquisire le forchette e mangiare.  +N filosofi siedono ad una tavola con un piatto di spaghetti davanti ed una forchetta alla loro destra ed una alla loro sinistra. Per mangiare gli spaghetti un filosofo ha bisogno di entrambe le forchette vicine (!). Ogni filosofo è impegnato ininterrottamente in una sequenza di 3 attivita': meditare, cercare di acquisire le forchette e mangiare.  
-Scrivere un programma C che attivi N threads filosofi che eseguono il ciclo descritto in precedenza per 100 volte. La meditazione e la fase in cui il filosofo mangia deve essere implementata con un ritardo variabile usando ad esempio la chiamata di sistema ''nanosleep'' e la funzione ''rand_r()''.\\ +Scrivere un programma C che attivi N threads filosofi (con N>=5), ognuno dei quali esegue il ciclo descritto in precedenza per 100 volte. La meditazione e la fase in cui il filosofo mangia deve essere implementata con un ritardo variabile usando ad esempio la chiamata di sistema ''nanosleep'' e la funzione ''rand_r()''.\\ 
-SUGGERIMENTO: Per evitare il deadlock nell'aquisizione delle forchette, definire un ordinamento per l'acquisizione delle forchette da parte di ogni filosofo. +SUGGERIMENTO: Per evitare il deadlock nell'aquisizione delle forchette, una possibile soluzione è definire un ordinamento opportuno per l'acquisizione delle forchette da parte di ogni filosofo. 
  
 ===== Esercizio 3 (pipeline concorrente) ==== ===== Esercizio 3 (pipeline concorrente) ====
Linea 18: Linea 18:
 ===== Esercizio 4 ===== ===== Esercizio 4 =====
  
-Estendere l'esercizio 3 in modo che il terzo thread della pipeline, invece di stampare tutte le parole ricevute dallo stadio intermedio della pipeline, stampi sullo standard output ogni occorrenza di una  parola una sola volta. A tale scopo utilizzare la seguente implementazione di struttura dati hash.  +Estendere l'esercizio 3 in modo che il terzo thread della pipeline, invece di stampare tutte le parole ricevute dallo stadio intermedio della pipeline, stampi sullo standard output ogni occorrenza di una  parola una sola volta. A tale scopo utilizzare la seguente implementazione di struttura dati {{:informatica:sol:laboratorio21:esercitazionib:icl_hash.tgz|hash}}.  
  
informatica/sol/laboratorio21/esercitazionib/esercitazione7.1617712907.txt.gz · Ultima modifica: 06/04/2021 alle 12:41 (4 anni fa) da Massimo Torquati

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki