Strumenti Utente

Strumenti Sito


informatica:sol:laboratorio17:esercitazionib:esercitazione12

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:laboratorio17:esercitazionib:esercitazione12 [23/05/2017 alle 06:32 (8 anni fa)] Massimo Torquatiinformatica:sol:laboratorio17:esercitazionib:esercitazione12 [24/05/2017 alle 14:21 (8 anni fa)] (versione attuale) Massimo Torquati
Linea 7: Linea 7:
 SUGGERIMENTO: utilizzare un thread dedicato che fa da gestore unico del segnale SIGUSR1 utilizzando la chiamata di libreria ''sigwait''. SUGGERIMENTO: utilizzare un thread dedicato che fa da gestore unico del segnale SIGUSR1 utilizzando la chiamata di libreria ''sigwait''.
  
-===== Esercizio =====+===== Esercizio =====
  
 Supponiamo di dover implementare un server concorrente che fornisce il servizio di repository di oggetti.  Le richieste servite dal server hanno il formato: //<op, <key, object>>//. L'operazione //op// puo' essere: //GET//, //PUT//, //REMOVE//, //UPDATE//. //key// e' una chiave numerica (es. 1, 1000, 200, ...), mentre //object// è una sequenza di bytes (>0) non tipata (un oggetto puo' essere un file, un area di memoria, etc.). Supponiamo di dover implementare un server concorrente che fornisce il servizio di repository di oggetti.  Le richieste servite dal server hanno il formato: //<op, <key, object>>//. L'operazione //op// puo' essere: //GET//, //PUT//, //REMOVE//, //UPDATE//. //key// e' una chiave numerica (es. 1, 1000, 200, ...), mentre //object// è una sequenza di bytes (>0) non tipata (un oggetto puo' essere un file, un area di memoria, etc.).
Linea 13: Linea 13:
 Nell'implementazione deve essere utilizzata come struttura dati una tabella hash (ad esempio {{informatica:sol:laboratorio17:esercitazionib:icl_hash.tgz| questa}} ). Nell'implementazione deve essere utilizzata come struttura dati una tabella hash (ad esempio {{informatica:sol:laboratorio17:esercitazionib:icl_hash.tgz| questa}} ).
   - Scrivere una libreria che implementa le operazioni PUT/GET/REMOVE/UPDATE sulla tabella hash tenendo conto che ogni funzione puo' essere invocata da piu' thread concorrentemente.   - Scrivere una libreria che implementa le operazioni PUT/GET/REMOVE/UPDATE sulla tabella hash tenendo conto che ogni funzione puo' essere invocata da piu' thread concorrentemente.
-  - Pensare ad una soluzione che non utilizzi 1 sola variabile di mutua esclusione per tutta la tabella hash. +  - Pensare ad una soluzione che non utilizzi 1 sola variabile di mutua esclusione per tutta la tabella hash. Ad esempio, se il server utilizza //k// thread workers, utilizzare //m//>//k// variabili di mutex
   - Ci sono sequenze di operazioni che possono portare ad inconsistenze se non opportunamente gestite? Se si come si puo' fare a risolverle?   - Ci sono sequenze di operazioni che possono portare ad inconsistenze se non opportunamente gestite? Se si come si puo' fare a risolverle?
  
informatica/sol/laboratorio17/esercitazionib/esercitazione12.1495521150.txt.gz · Ultima modifica: 23/05/2017 alle 06:32 (8 anni fa) da Massimo Torquati

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki