Strumenti Utente

Strumenti Sito


informatica:sol:laboratorio20:esercitazionib:esercitazione10

Differenze

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

Link a questa pagina di confronto

informatica:sol:laboratorio20:esercitazionib:esercitazione10 [06/04/2020 alle 06:05 (5 anni fa)] – creata Massimo Torquatiinformatica:sol:laboratorio20:esercitazionib:esercitazione10 [06/04/2020 alle 06:36 (5 anni fa)] (versione attuale) Massimo Torquati
Linea 5: Linea 5:
  
 Scrivere un programma C in cui si attivano M thread produttori ed N thread consumatori che condividono una coda (di capacità “infinita”). Il programma accetta come argomento anche un intero K che corrisponde al numero totale di messaggi che i produttori producono concorrentemente nella coda (ogni produttore produce K/M messaggi, se M divide K). I consumatori leggono i messaggi dalla coda in un ciclo infinito fino a quando non ricevono un messaggio speciale che li fa terminare. Implementare la coda concorrente, ed il protocollo di terminazione senza usare la cancellazione esplicita dei threads. Testare il programma al variare di M ed N. Controllare con ''valgrind'' che non ci siano problemi nell'accesso alle variabili del programma e che tutta la memoria allocata sia completamente rilasciata all'uscita del programma. Scrivere un programma C in cui si attivano M thread produttori ed N thread consumatori che condividono una coda (di capacità “infinita”). Il programma accetta come argomento anche un intero K che corrisponde al numero totale di messaggi che i produttori producono concorrentemente nella coda (ogni produttore produce K/M messaggi, se M divide K). I consumatori leggono i messaggi dalla coda in un ciclo infinito fino a quando non ricevono un messaggio speciale che li fa terminare. Implementare la coda concorrente, ed il protocollo di terminazione senza usare la cancellazione esplicita dei threads. Testare il programma al variare di M ed N. Controllare con ''valgrind'' che non ci siano problemi nell'accesso alle variabili del programma e che tutta la memoria allocata sia completamente rilasciata all'uscita del programma.
- 
  
 ===== Esercizio 2 ===== ===== Esercizio 2 =====
 +
 +Realizzare una semplice calcolatrice scientifica testuale. Il programma legge da tastiera una operazione alla volta, una per riga (es. 1/2 + 2/5), quindi per ogni richiesta forka ed esegue la calcolatrice testuale fornita dal sistema ''bc'' (/usr/bin/bc) a cui, tramite pipe senza nome, passa l'operazione da svolgere e prende il risultato calcolato. Il risultato ottenuto verrà stampato sullo standard output secondo il seguente formato:\\
 +Operazione:   op\\
 +Risultato :  res 
 +
 +===== Esercizio 3 =====
  
 Considerare il seguento programma ''dec.c'': Considerare il seguento programma ''dec.c'':
informatica/sol/laboratorio20/esercitazionib/esercitazione10.1586153130.txt.gz · Ultima modifica: 06/04/2020 alle 06:05 (5 anni fa) da Massimo Torquati

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki