Strumenti Utente

Strumenti Sito


informatica:sol:laboratorio19: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:laboratorio19:esercitazionib:esercitazione12 [21/05/2019 alle 05:03 (6 anni fa)] Massimo Torquatiinformatica:sol:laboratorio19:esercitazionib:esercitazione12 [21/05/2019 alle 06:41 (6 anni fa)] (versione attuale) Massimo Torquati
Linea 3: Linea 3:
 ===== Esercizio 1 ===== ===== Esercizio 1 =====
  
-Scrivere un programma C che conta il numero di volte in cui l'utente invia il segnale SIGINT (Ctl-C) al processo. Quando il processo riceve il segnale SIGTSTP (Ctl-Z), il numero di SIGINT ricevuti viene stampato sullo standard output. Al terzo segnale SIGTSTP, il processo chiede all'utente se deve terminare o no attendendo una risposta per 10 secondi. Se l'utente non risponde entro 10 secondi un segnale SIGALRM termina il processo. +Scrivere un programma C che conta il numero di volte in cui l'utente invia il segnale SIGINT (Ctl-C) al processo. Quando il processo riceve il segnale SIGTSTP (Ctl-Z), il numero di SIGINT ricevuti viene stampato sullo standard output. Al terzo segnale SIGTSTP, il processo chiede all'utente se deve terminare o no attendendo una risposta per 10 secondi dallo standard input. Se l'utente non risponde entro 10 secondi un segnale SIGALRM termina il processo. 
  
 ===== Esercizio 2 ===== ===== Esercizio 2 =====
  
-Realizzare il codice dell'[[informatica:sol:laboratorio19:esercitazionib:esercitazione11|Esercizio 2]] senza usare threads ma utilizzando la chiamata di sistema ''select'' per risolvere il non determinismo fra l'accettazione di nuove connessioni da parte dei client e la gestione delle richieste dei client gia' connessi. Gestire la terminazione del server quando viene ricevuto un segnale (es. SIGINT, SIGQUIT) in modo da lasciare il sistema in uno stato consistente dopo la sua terminazione (cioè eliminare dal file system il socket AF_UNIX creato per accettare le connessioni ed eventualmente liberare la memoria allocata dinamicamente).  +Realizzare l'Esercizio 2 dell'[[informatica:sol:laboratorio19:esercitazionib:esercitazione11|Esercitazione 11]] senza usare threads ma utilizzando la chiamata di sistema ''select'' per risolvere il non determinismo fra l'accettazione di nuove connessioni da parte dei client e la gestione delle richieste dei client gia' connessi. Gestire la terminazione del server a seguito della ricezione di un segnale (SIGINT, SIGQUIT, SIGTERM, SIGHUP, etc...) in modo da lasciare il sistema in uno stato consistente dopo la sua terminazionecioè eliminare dal file system il socket AF_UNIX creato per accettare le connessioni, eventuali file temporanei e liberare la memoria allocata dinamicamente al fine di controllare eventuali memory leaks con ''valgrind''
- +
-===== Esercizio 3 ===== +
- +
-Realizzare il codice dell'[[informatica:sol:laboratorio19:esercitazionib:esercitazione11|Esercizio 2]] con un Pool di N threads (N eun parametro del programma) secondo il modello //master-worker// (Listener thread + Coda + Pool di worker threads). Il thread del Pool gestisce interamente tutta la connessione verso un client.+
  
informatica/sol/laboratorio19/esercitazionib/esercitazione12.1558415033.txt.gz · Ultima modifica: 21/05/2019 alle 05:03 (6 anni fa) da Massimo Torquati

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki