Progettazione di Applicazioni Robuste. Applicazione Echo. Schema Generale di un Server TCP Ricorsivo 1. Applicazione echo
|
|
- Bernardo Lillo
- 8 anni fa
- Visualizzazioni
Transcript
1 a.a. 2003/04 Applicazione Echo Prof. Vincenzo Auletta Progettazione di Applicazioni Robuste nel progettare applicazioni su rete robuste si deve tener conto di varie situazioni anomale che si potrebbero verificare chiusura normale dell applicazione da parte del client crash del client chiusura dell applicazione da parte del server crash del server Università degli studi di Salerno Laurea in Informatica 1 Applicazione echo Schema Generale di un Server TCP Ricorsivo 1 2 il server replica tutti i messaggi inviatigli dal client il client legge linee di testo dallo standard input e le invia al server il server legge linee di testo dal socket e li rimanda al client il client legge righe di testo dal socket e li invia allo standard output fgets fputs Client writen readline readline writen Server 3 #include "basic.h" int main(int argc, char **argv) { pid_t pid; int listensd, connsd; struct sockaddr_in servaddr, cliaddr; socklen_t len; if( (listensd = socket(af_inet, SOCK_STREAM, 0)) < 0) err_sys("errore in socket"); /* riempie l oggetto servaddr */ if( (bind(listensd, (SA *) &servaddr, sizeof(servaddr))) < 0) err_sys("errore in bind"); if( listen(listensd, LISTENQ) < 0 ) err_sys("errore in listen");
2 4 Schema Generale di un Server TCP Ricorsivo 2 for ( ; ; ) { len = sizeof(cliaddr); if( (connsd = accept(listensd, (SA *) NULL, NULL)) < 0) err_sys("errore in accept"); if( (pid = fork()) == 0 ) { if( close(listensd) == -1 ) err_sys("errore in close"); str_srv_func(connsd); if( close(connsd) == -1 ) err_sys( errore in close ); exit(0); if( close(connsd) == -1 ) err_sys("errore in close"); str_srv_func svolge il lavoro specifico dell applicazione 5 Schema Generale di un Client TCP #include "basic.h" int main(int argc, char **argv) { int sockd, n; char buff[maxline], recvline[maxline + 1]; struct sockaddr_in servaddr, localaddr, peeraddr; socklen_t localaddr_len, peeraddr_len; if ((sockd = socket(af_inet, SOCK_STREAM, 0)) < 0 ) err_sys("errore in socket"); /* riempe la struttura servaddr */ if (connect(sockd, (SA *) &servaddr, sizeof(servaddr)) < 0 ) err_sys("errore in connect"); str_cli_func(stdin, sockd, /* altri eventuali descrittori ); exit(0); str_cli_func() svolge il lavoro specifico dell applicazione 6 Client echo void str_cli_echo(file *fd, int sockd) { char sendline[maxline], recvline[maxline]; int n; while (fgets(sendline, MAXLINE, fd)!= NULL) { (1) if( (n = writen(sockd, sendline, strlen(sendline))) < 0) (2) err_sys("errore nella write"); if ( (n = readline(sockd, recvline, MAXLINE)) < 0) (3) err_sys("errore nella readline"); if (n == 0) (4) err_quit("str_cli_echo: il server è morto\n"); fputs(recvline, stdout); (5) 1.legge da fd fino all EOF 2.invia al server la stringa letta 3.legge una riga dal socket si aspetta \n per uscire 4.se ha letto l EOF esce 5.stampa su stdout 7 Server echo void str_srv_echo(int sockd) { ssize_t n; char line[maxline]; for ( ; ; ) { if ( (n = readline(sockd, line, MAXLINE)) == 0) (1) return; (2) if( writen(sockd, line, n)!= n ) (3) err_sys("errore nella write"); 1. la funzione è bloccata sulla lettura sul socket si aspetta \n per uscire 2. se readline restituisce 0 allora esce il client ha chiuso la connessione e inviato l'eo 3. scrive sul socket la riga di testo letta
3 8 Analisi dell Applicazione: Creazione della Connessione quando server e client partono vengono creati tre processi che si bloccano in vari stadi server padre bloccato sull accept server figlio bloccato sulla read client bloccato su fgets home/auletta/echo> netstat -a -Ainet -n Proto Recv-Q Send-Q Local Address Foreign Address State tcp : :* LISTEN tcp : :9877 ESTABLISH tcp : :1024 ESTABLISH indirizzo del socket del client ( porta 1024) indirizzo del socket di ascolto ( porta 9877) indirizzo del socket connesso ( porta 9877) 9 Analisi dell Applicazione: Creazione della Connessione home/auletta/echo> ps lw F UID PID PPID PRI WCHAN STAT TTY TIME COMMAND rt_sig S pts/1 0:00 -csh wait_f S pts/1 0:00 echo_server rt_sig S pts/2 0:00 -csh read_c S pts/2 0:00 echo_client tcp_da S pts/1 0:00 echo_server processo > server padre generato da tcsh 1244 e nello stato wait_f processo > server figlio generato da 1286 e nello stato tcp_da processo > client generato da tcsh 1292 e nello stato read_c Output del Client Condizioni di Uscita del Programma 10 home/auletta/echo> echo_client ciao (digitato dall utente) ciao (inviato dal server) chi sei? (digitato dall utente) chi sei? (inviato dal server) non fare il pappagallo!!! (digitato dall utente) non fare il pappagallo!!! (inviato dal server) ^D (il client chiude la connessione) home/auletta/echo> esce dalla fgets quando legge \n effettua la writen e si blocca su una readline esce dalla readline quando legge \n effettua la fputs e si riblocca sulla fgets 11 Uscita normale il client chiude la connessione il server padre rimane in ascolto sul socket Chiusura della connessione da parte del client prima che il server effettui l accept Chiusura della connessione da parte del server chiusura del processo crash del sistema
4 12 Chiusura Normale L utente digita ^D la fgets() restituisce NULL str_cli_echo() termina il client esegue exit() il S.O. chiude tutti i descrittori invia il FIN al server e riceve l ACK (va in FIN_WAIT_2) il server non ha ancora inviato il suo FIN ed è in CLOSE_WAIT la readline del server figlio restituisce 0 e str_srv_echo() termina il server figlio esegue exit() il S.O. invia il FIN al client e termina la close di TCP il client passa allo stato TIME_WAIT 13 Analisi dell Applicazione: Chiusura della Connessione lo stato dei socket dopo che è stata terminata la close è il seguente home/auletta/echo> netstat -a -Ainet -n Proto Recv-Q Send-Q Local Address Foreign Address State tcp : :* LISTEN tcp : :9877 TIME_WAIT lo stato dei processi è il seguente home/auletta/echo> ps lw F UID PID PPID PRI WCHAN STAT TTY TIME COMMAND rt_sig S pts/1 0:00 -csh wait_f S pts/1 0:00 echo_server do_exi Z pts/1 0:00 [echo_server <defunct>] il figlio del server è diventato zombie 14 Gestione dei Segnali I segnali sono utilizzati per notificare degli eventi ad un processo inviati da un processo o dal S.O. Il processo può decidere quali segnali intende gestire le notifiche che accetta per ogni segnale da gestire deve definire una funzione di gestione (handler del segnale) Ogni segnale ha un handler di default alcuni vengono sempre gestiti (es. SIGKILL) alcuni per default vengono ignorati (es. SIGCHLD) 15 Segnale SIGCHLD Quando un processo termina manda un segnale SIGCHLD al padre e diventa zombie mantenuto dal S.O. per consentire al padre di controllare il valore di uscita del processo e l utilizzo delle risorse del figlio (memoria, CPU, etc.) per default il padre ignora il segnale ed il figlio rimane zombie fino a quando non termina il padre Il processo zombie viene rimosso quando il padre effettua la wait() o la waitpid() Lasciare in vita processi zombie può provocare disfunzioni si esaurisce lo spazio nella tabella dei processi Per evitare la creazione dei processi zombie bisogna fornire un handler per SIGCHLD
5 16 wait e waitpid pid_t wait(int* statloc); pid_t waitpid(pid_t pid, int* statloc, int options); le funzioni restituiscono il pid e il valore di uscita del processo figlio che è finito consentono al processo zombie di essere rimosso caratteristiche di wait() si blocca finchè non termina un figlio non accoda i segnali ricevuti durante l esecuzione alcuni processi restano zombie caratteristiche di waitpid() opzione non bloccante (WNOHANG) permette di scegliere il figlio da attendere (-1 per il primo che termina) chiamato in un ciclo consente di catturare tutti i segnali 17 Handler per SIGCHLD #include <signal.h> #include <sys/wait.h> void gestisci_zombie (int segnale) { int status; int pid; while((pid = waitpid(-1, &status, WNOHANG)) > 0) printf("child %d terminato\n", pid); return; appena un figlio termina e lancia SIGCHLD waitpid() lo cattura e restituisce il pid il processo figlio può essere rimosso Attivazione dell Handler #include <signal.h> la funzione signal attiva #include <sys/wait.h> l handler prende in input il numero typedef void Sigfunc(int); del segnale e il puntatore Sigfunc* signal(int signo, Sigfunc all handler *func) { struct sigaction act, oact; utilizza la funzione sigaction() act.sa_handler = func; prende in input una struct sigemptyset(&act.sa_mask); con il puntatore act.sa_flags = 0; all handler, una maschera if (signo!= SIGALRM) di segnali da mascherare act.sa_flags = SA_RESTART; e vari flag if (sigaction(signo, &act, &oact) < 0) i segnali mascherati non vengono consegnati return(sig_err); SA_RESTART fa riavviare return(oact.sa_handler); le system call interrotte da questo segnale Interruzione delle System Call Le system call lente possono essere bloccate dalla cattura di un segnale e l esecuzione dell handler es. accept, read, write La system call restituisce esce con errore EINTR l applicazione termina anche se EINTR non è un vero errore Occorre tener presente questo problema l applicazione può gestire separatamente questo errore Alcuni S.O. fanno ripartire le system call interrotte la nostra signal() dice al S.O. di far ripartire le system call interrotte (flag SA_RESTART)
6 Server TCP con Gestione di SIGCHLD e EINTR 1 Server TCP con Gestione di SIGCHLD e EINTR 2 20 #include "basic.h" int main(int argc, char **argv) { pid_t pid; int listensd, connsd; struct sockaddr_in servaddr, cliaddr; socklen_t len; if( (listensd = socket(af_inet, SOCK_STREAM, 0)) < 0) err_sys("errore in socket"); /* riempie l oggetto servaddr */ if( (bind(listensd, (SA *) &servaddr, sizeof(servaddr))) < 0) err_sys("errore in bind"); if( listen(listensd, LISTENQ) < 0 ) err_sys("errore in listen"); if( signal(sigchld, gestisci_zombie) == SIG_ERR ) err_sys("errore nella signal"); 21 for ( ; ; ) { len = sizeof(cliaddr); if( (connsd = accept(listensd, (SA *) &cliaddr, &cliaddr_len)) < 0) { if( errno == EINTR ) continue; else err_sys("errore in accept"); if( (pid = fork()) == 0 ) { if( close(listensd) == -1 ) err_sys("errore in close"); str_srv_func(connsd); close(connsd); exit(0); if( close(connsd) == -1 ) err_sys("errore in close"); 22 Reset della Connessione e accept Il client può chiudere la connessione inviando un RST la connessione viene chiusa immediatamente senza completare la procedura di close Il client può inviare l RST prima che il server invochi la accept La connessione è diventata ESTABLISHED ma è ancora nel BACKLOG Quando il server invoca l accept questa ritorna un codice di errore ECONNABORTED La gestione dell errore ECONNABORTED dipende dall implementazione Il server può ignorarlo e richiamare accept per la prossima connessione Terminazione del Server L interazione può essere interrotta dal server es. morte del processo figlio che gestisce la connessione il server prima di morire chiude i descrittori di socket un FIN viene spedito al client il modulo TCP del client riceve il FIN e risponde con l ACK il client non viene avvertito dell arrivo del FIN perché è bloccato sulla fgets() il problema si risolve adottando l I/O multiplexing (prossima lezione) quando la fgets() termina il client effettua una write sul socket e chiama la readline è permesso perché il client non ha chiuso il socket esce immediatamente perché legge l EOF e stampa un messaggio di errore ( server morto prematuramente ) 23 Il server risponde con un RST perché il processo non esiste più
7 SIGPIPE Cosa succede se il client ignora l errore su readline e scrive nel socket? (es. il client effettua due write consecutive prima della readline) alla prima write il server risponde con RST alla seconda write il S.O. del client invia il segnale SIGPIPE scrittura su una connessione su sui si è ricevuto un RST Per default SIGPIPE termina il processo senza segnalare nulla Possibili alternative 1. Ignorare (SIG_IGN) il segnale di SIGPIPE Gestire l errore di EPIPE sulle write 25 Crash del Server Durante l esecuzione dell applicazione il sistema potrebbe cadere il processo server non ha il tempo di inviare nessun messaggio al client (né FIN, nè RST) Il client a eseguito la write ed è bloccato sulla readline TCP ritrasmetterà i dati fino ad un certo timeout la readline ritorna un errore (dopo circa 9 minuti) ETIMEOUT EHOSTUNREACH, ENETUNREACH per ridurre il ritardo si inserisce un timeout nella readline e si utilizza l opzione SA_KEEPALIVE 26 Server Shutdown e Reboot La connessione viene stabilita Il server va giù e fa il reboot senza che il client se ne accorga Non c è comunicazione durante lo shutdown (server scollegato dalla rete altrimenti spedisce FIN) Il client spedisce una nuova line al server dopo il reboot Il server non ha più il socket aperto TCP risponde ai dati con un RST Client è in readline quando riceve RST Readline ritorna ECONNRESET 27 Formato dei Dati la comunicazione tra client e server deve tener conto della diversa rappresentazione dei dati es. interi rappresentati in big endian o little endian Due soluzioni si trasmettono solo sequenze di caratteri (usato da socket) nell esempio dell echo vengono inviate e ricevute righe di testo per trasmettere un valore numerico prima lo si converte in una sequenza di caratteri e poi lo si manda il peer sa che tipo di dati si deve aspettare e legge la stringa nel modo opportuno si definisce una rappresentazione standard dei dati (XDR per RPC, XML per SOAP, ecc.)
8 Applicazione Somma Il client legge due interi dallo standard input e li invia al server il server li somma e restituisce il risultato al client il client stampa il risultato sullo standard output Client Somma void str_cli_sum(file *fd, int sockd) { char sendline[maxline], recvline[maxline]; int n; while (fgets(sendline, MAXLINE, fd)!= NULL) { if( (n = writen(sockd, sendline, strlen(sendline))) < 0) err_sys("errore nella write"); if ( (n = readline(sockd, recvline, MAXLINE)) < 0) err_sys("errore nella readline"); if (n == 0) err_quit("str_cli_echo: il server è morto\n"); fputs(recvline, stdout); identico al client echo 30 Server Somma void str_srv_sum(int sockd) { long arg1, arg2; ssize_t n; char line[maxline]; for ( ; ; ) { if ( (n = readline(sockd, line, MAXLINE)) == 0) (1) return; if( sscanf(line, %ld %ld, arg1, arg2) == 2 ) (2) snprintf(line, sizeof(line), arg1+arg2); (3) else snprintf(line, sizeof(line), errore nell input\n ); n = strlen(line); if( writen(sockd, line, n)!= n ) (4) err_sys("errore nella write"); 1. legge fino a quando trova \n 2. estrae dal buffer i valori input 3. calcola la funzione e scrive il risultato in una stringa 4. invia la stringa 31 Esempio di Applicazione Somma che non usa le Stringhe Client e server girano su macchine dello stesso tipo sunos5 > somma_client Client gira su una macchina Sparc Server gira su una macchina Intel bsdi > somma_client
Laboratorio Reti di Calcolatori (A.A ) Delfina Malandrino.
Laboratorio Reti di Calcolatori (A.A. 2008-2009) Delfina Malandrino delmal@dia.unisa.it http://www.dia.unisa.it/professori/delmal/ Applicazione echo Il server replica un messaggio inviato dal client Il
DettagliI/O su Socket TCP: read()
I/O su Socket TCP: read() I socket TCP, una volta che la connessione TCP sia stata instaurata, sono accedibili come se fossero dei file, mediante un descrittore di file (un intero) ottenuto tramite una
DettagliServer Iterativi. Server TCP Ricorsivi. Fork. Server Ricorsivi. un server iterativo gestisce una connessione alla volta. Prof.
Università degli studi di Salerno Laurea in Informatica a.a. 2003/04 TCP Ricorsivi Prof. Vincenzo Auletta auletta@dia.unisa.it http://www.dia.unisa.it/professori/auletta/ 1 Iterativi un server iterativo
DettagliApplicazione ECHO. Dott. Delfina Malandrino. p//ssd s / d
a.a 2007/2008 Applcazone ECHO delmal@da.unsa.t http://ss.da.unsa.t/~delmal p//ssd s / d Dpartmento d Informatca ed Applcazon R.M. Capocell Unverstà degl Stud d Salerno Applcazone echo Il server replca
DettagliProblema. I/O Multiplexing. Struttura delle Operazioni di Lettura. Modelli di I/O. Prof. Vincenzo Auletta
a.a. 2003/04 Problema I/O Multiplexing Prof. Vincenzo Auletta auletta@dia.unisa.it http://www.dia.unisa.it/professori/auletta/ Università degli studi di Salerno Laurea in Informatica 1 Un applicazione
DettagliLaboratorio Reti di Calcolatori (A.A ) Delfina Malandrino.
Laboratorio Reti di Calcolatori (A.A. 2008-2009) I/O Multiplexing Delfina Malandrino delmal@dia.unisa.it it http://www.dia.unisa.it/professori/delmal/ Problema 2 Un applicazione deve gestire più input
DettagliGestione dei processi
Gestione dei processi Dormire unsigned int sleep(unsigned int); Attende un numero specificato di secondi a meno che non si verifichi un segnale Restituisce 0 se l'attesa è terminata senza interruzioni,
Dettagli(VHUFLWD]LRQLGLEDVHVXOOH6RFNHWLQ&
(VHUFLWD]LRQLGLEDVHVXOOH6RFNHWLQ& 3ULPRHVHUFL]LR6RFNHWVWUHDPFRQULGLUH]LRQH Si progetti un applicazione distribuita Client/Server per una rete di workstation UNIX (BSD oppure System V). In particolare,
DettagliLaboratorio di Reti di Calcolatori
Laboratorio di Reti di Calcolatori Funzioni utili, server ricorsivi, echo client ed echo server. Paolo D Arco Abstract Scopo della lezione è presentare alcune funzioni di utilità generale (e.g., funzioni
DettagliSERVER CLIENT. Struttura di un Applicazione UDP. Socket UDP. Parametri di sendto. Funzioni di Input/Output. Prof. Vincenzo Auletta
I semestre 03/04 Struttura di un Applicazione UDP Socket UDP socket() bind() Prof. Vincenzo Auletta auletta@dia.unisa.it http://www.dia.unisa.it/professori/auletta/ CLIENT socket() sendto() Dati (richiesta)
DettagliSERVER CLIENT. Letteralmente significa presa (di corrente) È l astrazione di un canale di comunicazione fra due computer connessi da una rete
Socket 02.2 Letteralmente significa presa (di corrente) È l astrazione di un canale di comunicazione fra due computer connessi da una rete -02: Socket TCP Autunno 2002 Prof. Roberto De Prisco Sono definiti
DettagliSono definiti per vari protocolli
Autunno 2002 Prof. Roberto De Prisco -02: Socket TCP Università degli studi di Salerno Laurea e Diploma in Informatica Socket 02.2 Letteralmente significa presa (di corrente) È l astrazione di un canale
DettagliPOSIX - Gestione dei Segnali. E.Mumolo, DEEI mumolo@units.it
POSIX - Gestione dei Segnali E.Mumolo, DEEI mumolo@units.it Segnali in POSIX Segnali in Posix Modalità di notifiche relative a vari eventi asincroni I signal interrompono un processo e possono o meno essere
DettagliFunzioni bloccanti e soluzioni
Funzioni bloccanti e soluzioni La funzione accept() e le funzioni per la gestione dell I/O (ad es., read() e write()) sono bloccanti Ad es., le funzioni read() e recv() rimangono in attesa finché non vi
DettagliEsercitazione [6] Client/Server con Socket
Esercitazione [6] Client/Server con Socket Leonardo Aniello - aniello@dis.uniroma1.it Daniele Cono D'Elia - delia@dis.uniroma1.it Sistemi di Calcolo - Secondo modulo (SC2) Programmazione dei Sistemi di
DettagliLab. di Sistemi Operativi - Esercitazione n 9- -Thread-
Lab. di Sistemi Operativi - Esercitazione n 9- -Thread- 1 Sommario Esercizi su: Comunicazione tra processi: la funzione pipe() Condivisione dati e codice tra due o più processi: concetto di Thread 2 -
DettagliSocket TCP. seconda parte
Socket TCP seconda parte Schema della connessione Computer 1 127.43.18.1 indirizzo I1 indirizzo I2 Computer 2 143.225.5.3 porta 45000 socket porta 5200 socket processo client processo server socket(...)
DettagliSincronizzazione e comunicazione tra processi in Unix. usati per trasferire ad un processo l indicazione che un determinato evento si è verificato.
Processi parte III Sincronizzazione e comunicazione tra processi in Unix Segnali: usati per trasferire ad un processo l indicazione che un determinato evento si è verificato. Pipe: struttura dinamica,
DettagliEsercizio 2. Client e server comunicano attraverso socket TCP
Esercizio 1 Scrivere una applicazione client/server in cui: Il client, in un ciclo infinito: Legge una stringa da standard input Invia al processo server la stringa. Il server visualizza: L'IP da cui si
DettagliFunzioni bloccanti e soluzioni. Funzioni bloccanti e soluzioni (2) Parametri della funzione select() Funzione select()
Funzioni bloccanti e soluzioni La funzione accept() e le funzioni per la gestione dell I/O (ad es., read() e write()) sono bloccanti Ad es., le funzioni read() e recv() rimangono in attesa finché non vi
DettagliUniversità di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14. Pietro Frasca.
Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14 Pietro Frasca Lezione 22 Martedì 7-1-2014 1 System Call per l'uso dei segnali Un processo che
DettagliEsercitazione [5] Input/Output su Socket
Esercitazione [5] Input/Output su Socket Leonardo Aniello - aniello@dis.uniroma1.it Daniele Cono D'Elia - delia@dis.uniroma1.it Sistemi di Calcolo - Secondo modulo (SC2) Programmazione dei Sistemi di Calcolo
DettagliIPC System V. Code di messaggi
IPC System V Code di messaggi Panoramica coda di messaggi una lista concatenata di messaggi, FIFO semaforo un contatore condiviso, atomicamente modificabile memoria condivisa uno spazio di memoria accessibile
DettagliSocket TCP. prima parte
Socket TCP prima parte Cosa cambia: socket int fd = socket(pf_inet, SOCK_STREAM, 0); if (fd
DettagliLaboratorio di Reti di Calcolatori
Laboratorio di Reti di Calcolatori Socket UDP. Paolo D Arco Abstract Scopo della lezione è descrivere le funzioni che l interfaccia dei socket offre per far interagire client e server attraverso il protocollo
DettagliFunzioni. Il modello console. Interfaccia in modalità console
Funzioni Interfaccia con il sistema operativo Argomenti sulla linea di comando Parametri argc e argv Valore di ritorno del programma La funzione exit Esercizio Calcolatrice 2, presente in tutti i programmi
DettagliEsercitazione [8] Pipe e FIFO
Esercitazione [8] Pipe e FIFO Leonardo Aniello - aniello@dis.uniroma1.it Daniele Cono D'Elia - delia@dis.uniroma1.it Sistemi di Calcolo - Secondo modulo (SC2) Programmazione dei Sistemi di Calcolo Multi-Nodo
DettagliESERCIZI DI PROGRAMMAZIONE C IN AMBIENTE UNIX
ESERCIZI DI PROGRAMMAZIONE C IN AMBIENTE UNIX Introduzione In questa dispensa sono stati raccolti alcuni esercizi di programmazione C in ambiente Unix, tratti dagli esami di Sistemi Operativi svoltisi
DettagliJ+... J+3 J+2 J+1 K+1 K+2 K+3 K+...
Setup delle ConnessioniTCP Una connessione TCP viene instaurata con le seguenti fasi, che formano il Three-Way Handshake (perchè formato da almeno 3 pacchetti trasmessi): 1) il server si predispone ad
DettagliAXO. Operativo. Architetture dei Calcolatori e Sistema. programmazione di sistema
AXO Architetture dei Calcolatori e Sistema Operativo programmazione di sistema Il sistema operativo Il Sistema Operativo è un insieme di programmi (moduli software) che svolgono funzioni di servizio nel
DettagliComunicazione Connectionless o Datagram
Laboratorio Reti di Calcolatori (A.A. 2008-2009) Socket UDP Delfina Malandrino delmal@dia.unisa.it http://www.dia.unisa.it/professori/delmal/ 2 Comunicazione Connectionless o Datagram In una comunicazione
DettagliLab. di Sistemi Operativi - Esercitazione n 7- -Gestione dei processi Unix-
Lab. di Sistemi Operativi - Esercitazione n 7- -Gestione dei processi Unix- 1 Sommario Esercizi sulla gestione dei processi Creazione di un nuovo processo: fork Sincronizzazione tra processi: wait 2 -
DettagliTimeout. Socket Avanzati. Funzione alarm() Client echo UDP con alarm
I semestre 02/03 Socket Avanzati Prof. Vincenzo Auletta auletta@dia.unisa.it http://www.dia.unisa.it/~auletta/ Università degli studi di Salerno Laurea e Diploma in Informatica 1 Timeout Abbiamo visto
DettagliChiamate di sistema per la Gestione dei processi in POSIX. E.Mumolo, DEEI mumolo@units.it
Chiamate di sistema per la Gestione dei processi in POSIX E.Mumolo, DEEI mumolo@units.it Process id ed altri identificatori pid_t getpid(); // Process id del processo chiamante pid_t getppid(); // Process
DettagliP3-04: I/O multiplexing
Autunno 2002 Prof. Roberto De Prisco -04: I/O multiplexing Università degli studi di alerno Laurea e Diploma in Informatica Problema 04.2 Un programma deve gestire due input simultaneamente tandard input
DettagliLaboratorio di Reti di Calcolatori
Laboratorio di Reti di Calcolatori Esecuzione client-server: analisi e gestione degli errori. Paolo D Arco Abstract Scopo della lezione è mostrare come analizzare l esecuzione di un client ed un server,
Dettaglirsystem Maximiliano Marchesi maximiliano.marchesi@studenti.unipr.it
Maximiliano Marchesi 28 Settembre 2005 Diario delle Revisioni Revisione 1.2 28 Settembre 2005 maximiliano.marchesi@studenti.unipr.it Sommario Introduzione..................................................................................
DettagliGestione dei segnali. Dott. Delfina Malandrino. p//ssd s / d
a.a 2007/2008 Gestone de segnal delmal@da.unsa.t http://ss.da.unsa.t/~delmal p//ssd s / d Dpartmento d Informatca ed Applcazon R.M. Capocell Unverstà degl Stud d Salerno Gestone de segnal I segnal sono
DettagliParametri valore-risultatorisultato
Formato dei dati Programmazione di applicazioni di rete con socket - parte 2 La comunicazione deve tener conto della diversa rappresentazione dei dati Rappresentazione in Big Endian e Little Endian Soluzione
DettagliIl client deve stampare tutti gli eventuali errori che si possono verificare durante l esecuzione.
RETI INFORMATICHE CORSO DI LAUREA IN INGEGNERIA INFORMATICA SPECIFICHE DI PROGETTO A.A. 2010/2011 Il progetto consiste nello sviluppo di un applicazione client/server. Sia il server che il client dovranno
DettagliProgrammazione di applicazioni di rete con socket - parte 2
Università degli Studi di Roma Tor Vergata Facoltà di Ingegneria Programmazione di applicazioni di rete con socket - parte 2 Corso di Sistemi Distribuiti Valeria Cardellini Anno accademico 2008/09 Formato
DettagliOpzioni del Socket. Socket Options. Opzioni di Livello Socket. Livello delle Opzioni
a.a. 2003/04 Opzioni del Socket Socket Options Prof. Vincenzo Auletta auletta@dia.unisa.it http://www.dia.unisa.it/professori/auletta/ Università degli studi di Salerno Laurea in Informatica 1 Ogni socket
DettagliLe funzioni in C. I programmi C sono costituiti da definizioni di variabili e funzioni.
Le funzioni in C I programmi C sono costituiti da definizioni di variabili e funzioni. Una definizione di funzione ha il seguente formato: tipo-ritornato nome-funzione(lista-parametri) { dichiarazioni
DettagliHTTP adaptation layer per generico protocollo di scambio dati
HTTP adaptation layer per generico protocollo di scambio dati Sandro Cavalieri Foschini 101786 Emanuele Richiardone 101790 Programmazione in Ambienti Distribuiti I - 01FQT prof. Antonio Lioy A.A. 2002-2003
Dettagligetsockname() e getpeername() Formato dei dati - server Esempio getsockname() server (2)
Formato dei dati La comunicazione deve tener conto della diversa rappresentazione dei dati Rappresentazione in Big Endian e Little Endian Soluzione usata dai socket: network byte order (Big Endian) Due
DettagliFormato dei dati. La comunicazione deve tener conto della diversa rappresentazione dei dati
Formato dei dati La comunicazione deve tener conto della diversa rappresentazione dei dati Rappresentazione in Big Endian e Little Endian Soluzione usata dai socket: network byte order (Big Endian) Due
DettagliUniversità di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2015-16. Pietro Frasca.
Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2015-16 Pietro Frasca Lezione 15 Martedì 24-11-2015 Struttura logica del sottosistema di I/O Processi
DettagliCorso di Reti di Calcolatori T
Università degli Studi di Bologna Scuola di Ingegneria Corso di Reti di Calcolatori T Esercitazione 2 (proposta) Socket Java con connessione Luca Foschini Anno accademico 2015/2016 Esercitazione 2 1 Specifica
DettagliInterazione con il DNS Conversioni di Nomi ed Indirizzi
a.a. 2003/04 Interazione con il DNS Conversioni di Nomi ed Indirizzi Prof. Vincenzo Auletta auletta@dia.unisa.it http://www.dia.unisa.it/professori/auletta/ Università degli studi di Salerno Laurea in
DettagliL API socket ed i daemon
L API socket ed i daemon Massimo Bernaschi Istituto per le Applicazioni del Calcolo Mauro Picone Consiglio Nazionale delle Ricerche Viale del Policlinico, 137-00161 Rome - Italy http://www.iac.cnr.it/
DettagliLaboratorio di Sistemi Operativi
Le FIFO pipe vs fifo la pipe può essere usata solo tra processi "imparentati" (che hanno un antenato comune che ha creato la pipe) la fifo consente di scambiare dati tra processi qualsiasi 2 1 FIFO (named
DettagliProcessi e Sincronizzazione. Laboratorio Software 2008-2009 C. Brandolese M. Grotto
Processi e Sincronizzazione C. Brandolese M. Grotto Sommario 1. Processi Concetti fondamentali Stati in GNU/Linux 2. Creazione Descrizione Creazione con system() Creazione con fork() Effetto di fork()
DettagliCenni di programmazione distribuita in C++ Mauro Piccolo piccolo@di.unito.it
Cenni di programmazione distribuita in C++ Mauro Piccolo piccolo@di.unito.it Socket Nei sistemi operativi moderni i servizi disponibili in rete si basano principalmente sul modello client/server. Tale
DettagliProgrammazione multiprocesso
DTI / ISIN / Titolo principale della presentazione 1 Programmazione multiprocesso Amos Brocco, Ricercatore, DTI / ISIN 20 febbraio 2012 2 Processi Cos'è un processo? Un programma in esecuzione Spazio di
DettagliProcessi UNIX. I Processi nel SO UNIX. Gerarchie di processi UNIX. Modello di processo in UNIX
Processi UNIX I Processi nel SO UNIX UNIX è un sistema operativo multiprogrammato a divisione di tempo: unità di computazione è il processo Caratteristiche del processo UNIX: processo pesante con codice
DettagliInizializzazione degli Host. BOOTP e DHCP
BOOTP e DHCP a.a. 2002/03 Prof. Vincenzo Auletta auletta@dia.unisa.it http://www.dia.unisa.it/~auletta/ Università degli studi di Salerno Laurea e Diploma in Informatica 1 Inizializzazione degli Host Un
DettagliPronto Esecuzione Attesa Terminazione
Definizione Con il termine processo si indica una sequenza di azioni che il processore esegue Il programma invece, è una sequenza di azioni che il processore dovrà eseguire Il processo è quindi un programma
DettagliPer scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli
CODICE Le fonti in cui si possono trovare tutorial o esempi di progetti utilizzati con Arduino si trovano nel sito ufficiale di Arduino, oppure nei forum di domotica e robotica. Il codice utilizzato per
DettagliThread: sincronizzazione Esercitazioni del 09 Ottobre 2009
Thread: sincronizzazione Esercitazioni del 09 Ottobre 2009 Luca Fossati, Fabrizio Castro, Vittorio Zaccaria October 10, 2009 Sincronizzazione - 1 1 Esercizio 1: Sincronizzazione - 1 Qual è il problema
DettagliIntroduzione al Linguaggio C
Introduzione al Linguaggio C File I/O Daniele Pighin April 2009 Daniele Pighin Introduzione al Linguaggio C 1/15 Outline File e dati Accesso ai file File I/O Daniele Pighin Introduzione al Linguaggio C
DettagliLaboratorio di Programmazione in rete
Laboratorio di rogrammazione in rete Introduzione alla programmazione C di socket A.A. 2005/06 Comunicazione tra computer Come far comunicare più computer su una rete? Una collezione di protocolli: TC/I
DettagliServer Ricorsivii i. Dott. Delfina Malandrino.
A.A. 2007/2008 Rcorsv delmal@da.unsa.t http://ss.da.unsa.t/~delmal Dpartmento d Informatca ed Applcazon R.M. Capocell Unverstà degl Stud d Salerno Iteratv Un server teratvo gestsce una sngola connessone
DettagliEsercizio sulla gestione di file in Unix
Esercizio sulla gestione di file in Unix 1 Esercizio Si vuole realizzare un programma C che, utilizzando le system call di Unix, realizzi uno schema di comunicazione tra due processi (padre e figlio) mediante
DettagliLaboratorio di Sistemi Operativi 29-01-2009. Cognome Nome Mat.
Il compito è costituito da domande chiuse, domande aperte ed esercizi. Non è consentito l uso di libri, manuali, appunti., etc. Tempo massimo 2 ore. Domande chiuse: ogni domanda corrisponde ad un punteggio
DettagliLa gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni
La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni Autore: Prof. Agostino Sorbara ITIS "M. M. Milano" Autore: Prof. Agostino Sorbara ITIS "M. M.
DettagliEsercitazione Laboratorio di Sistemi Operativi 20-01-2014. Cognome Nome Mat.
Il compito è costituito da domande chiuse e domande aperte. Non è consentito l uso di libri, manuali, appunti., etc. Tempo massimo 2 ore. Domande chiuse: ogni domanda corrisponde ad un punteggio di 1 punto
DettagliOrganizzazione Monolitica
Principali componenti di un sistema Applicazioni utente Interprete di comandi (shell) Interfaccia grafica (desktop) Gestore del processore / Scheduler(s) Gestore della memoria Gestore delle periferiche/
DettagliEsempio 1: stampa locale di file remoto
Alcuni esempi di uso di Socket Esempio 1: stampa locale di file remoto Visualizzazione locale del contenuto di un file remoto. Il client deve richiedere la creazione della connessione e successivamente
DettagliUDP. Livello di Trasporto. Demultiplexing dei Messaggi. Esempio di Demultiplexing
a.a. 2002/03 Livello di Trasporto UDP Descrive la comunicazione tra due dispositivi Fornisce un meccanismo per il trasferimento di dati tra sistemi terminali (end user) Prof. Vincenzo Auletta auletta@dia.unisa.it
DettagliEsercitazione [7] Server multi-process/multi-thread
Esercitazione [7] Server multi-process/multi-thread Leonardo Aniello - aniello@dis.uniroma1.it Daniele Cono D'Elia - delia@dis.uniroma1.it Sistemi di Calcolo - Secondo modulo (SC2) Programmazione dei Sistemi
DettagliPolitecnico di Torino
Politecnico di Torino INFORMATICA II Esame del 19 Luglio 2008 1. Realizzare un programma in linguaggio C per evidenziare le variazioni percentuali di un insieme di azioni quotate in borsa. In un file di
DettagliEsercizi (1-2): da: TCP/IP Sockets in C (Donahoo-Calvert)
Esercizi PARTE 1 Esercizi (1-2): da: TCP/IP Sockets in C (Donahoo-Calvert) When you make a phone call, it s usually the callee that answers with hello. What changes to our example client and server would
DettagliCorso di Sistemi Operativi A.A. 2008-2009 - CHIAMATE DI SISTEMA PER IL CONTROLLO DEI PROCESSI. Fabio Buttussi
Corso di Sistemi Operativi A.A. 2008-2009 - CHIAMATE DI SISTEMA PER IL CONTROLLO DEI PROCESSI Fabio Buttussi La programmazione di sistema Il kernel è la parte di Unix che corrisponde al sistema operativo
DettagliLa sincronizzazione è legata alla implementazione delle pipe: int pipe(int fd[2]);
int pipe(int fd[2]); Le pipe sono canali di comunicazione unidirezionali che costituiscono un primo strumento di comunicazione (con diverse limitazioni), basato sullo scambio di messaggi, tra processi
DettagliCorso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2005-06 Secondo Compitino 17 Dicembre 2005
Studente (Cognome Nome): Matricola: Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2005-06 Secondo Compitino 17 Dicembre 2005 Si noti che le soluzioni ai quesiti saranno considerate
Dettagli1. RETI INFORMATICHE CORSO DI LAUREA IN INGEGNERIA INFORMATICA SPECIFICHE DI PROGETTO A.A. 2013/2014. 1.1 Lato client
RETI INFORMATICHE - SPECIFICHE DI PROGETTO A.A. 2013/2014 1. RETI INFORMATICHE CORSO DI LAUREA IN INGEGNERIA INFORMATICA SPECIFICHE DI PROGETTO A.A. 2013/2014 Il progetto consiste nello sviluppo di un
DettagliEsercitazione [08] Server multi-process/multi-thread
Esercitazione [08] Server multi-process/multi-thread Leonardo Aniello aniello@dis.uniroma1.it Daniele Cono D'Elia delia@dis.uniroma1.it Giuseppe Laurenza laurenza@dis.uniroma1.it Federico Lombardi lombardi@dis.uniroma1.it
DettagliI Socket. Laboratorio Software 2008-2009 M. Grotto R. Farina
M. Grotto R. Farina Sommario 1. Applicazioni Distribuite 2. I Socket Introduzione Interfacce e protocolli Descrizione Stile di comunicazione Namespace e protocollo Include e system call Creazione e chiusura
DettagliProgrammazione dei socket con TCP #2
I Il Server e il Client si scambiano messaggi attraverso la rete mediante un dell API (Application Programming Interface) Telematica II 10. Esercitazione/Laboratorio 3 Server ports Clients user space Socket
Dettaglici sono più problemi che programmi esiste un problema che non si può risolvere con un programma
Calcolabilità problemi facili trovare la media di due numeri stampare le linee di un file che contengono una parola problemi difficili trovare il circuito minimo data una tabella determinare la migliore
Dettaglidall argomento argomento della malloc()
Allocazione dinamica Quando? Tutte le volte in cui i dati possono crescere in modo non prevedibile staticamente a tempo di sviluppo Un array con dimensione i fissata a compile-time non è sufficiente È
DettagliSegnali. #include <signal.h> Segnali
Segnali Segnali 1. Un segnale è la notifica asincrona di un evento 2. Si dice che un segnale è generato (o consegnato sent, delivered to ) quando l evento associato a quel segnale occorre per la prima
Dettaglifunzione fork() La funzione fork è usata per duplicare un processo. #include <unistd.h> pid_t fork (void);
La funzione fork è usata per duplicare un processo. #include pid_t fork (void); funzione fork() restituisce -1 in caso di errore. Se tutto va a buon fine restituisce 0 nel processo figlio ed
DettagliSISTEMI OPERATIVI 14 settembre 2015 corso A nuovo ordinamento e parte di teoria del vecchio ordinamento indirizzo SR
SISTEMI OPERATIVI 14 settembre 2015 corso A nuovo ordinamento e parte di teoria del vecchio ordinamento indirizzo SR Cognome: Nome: Matricola: 1. Ricordate che non potete usare calcolatrici o materiale
DettagliIl sistema operativo LINUX Indice
Il sistema operativo LINUX Giorgio Di Natale Stefano Di Carlo Politecnico di Torino Dip. Automatica e Informatica Processo Un processo è un programma in esecuzione:
DettagliCOMUNICAZIONE TRA PROCESSI REMOTI IN UNIX
A cura del prof. Gino Tombolini 1 COMUNICAZIONE TRA PROCESSI REMOTI IN UNIX Il sistema UNIX TCP/IP fornisce un meccanismo di comunicazione tra processi residenti su nodi distinti di una rete, compatibili
Dettagli10.1. Un indirizzo IP viene rappresentato in Java come un'istanza della classe InetAddress.
ESERCIZIARIO Risposte ai quesiti: 10.1. Un indirizzo IP viene rappresentato in Java come un'istanza della classe InetAddress. 10.2. Un numero intero in Java è compreso nell'intervallo ( 2 31 ) e (2 31
DettagliIntroduzione alla programmazione in C
Introduzione alla programmazione in C Testi Consigliati: A. Kelley & I. Pohl C didattica e programmazione B.W. Kernighan & D. M. Ritchie Linguaggio C P. Tosoratti Introduzione all informatica Materiale
DettagliTipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:
Tipi primitivi Il linguaggio Java offre alcuni tipi di dato primitivi Una variabile di tipo primitivo può essere utilizzata direttamente. Non è un riferimento e non ha senso tentare di istanziarla mediante
DettagliCon il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione.
Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione. Compito fondamentale di un S.O. è infatti la gestione dell
DettagliAutomatizzare i compiti ripetitivi. I file batch. File batch (1) File batch (2) Visualizzazione (2) Visualizzazione
Automatizzare i compiti ripetitivi I file batch Anno accademico 2000-01 1 Spesso capita di dover eseguire ripetutatmente una data sequenza di comandi Introdurli uno a uno da tastiera è un processo lento
DettagliLABORATORIO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO 2014 2015 15.V.2015. Indice
LABORATORIO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO 2014 2015 15.V.2015 VINCENZO MARRA Indice Parte 1. Input/Output standard dalla console 2 Esercizio 1 2 Eco
DettagliFile I/O. M. R. Guarracino: File I/O 1
File I/O M. R. Guarracino: File I/O 1 File I/O Gran parte delle operazioni su file in ambiente UNIX possono essere eseguite utilizzando solo cinque funzioni: open read write lseek close M. R. Guarracino:
DettagliDall Algoritmo al Programma. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni
Dall Algoritmo al Programma Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni IL PROGRAMMA Gli algoritmi sono modelli di descrizione astratti e per controllarne il funzionamento devono essere
DettagliSistemi di Calcolo - Secondo modulo (SC2) Programmazione dei Sistemi di Calcolo Multi-Nodo
www.dis.uniroma1.it/~midlab Sistemi di Calcolo - Secondo modulo (SC2) Programmazione dei Sistemi di Calcolo Multi-Nodo Corso di Laurea in Ingegneria Informatica e Automatica A.A. 2014-2015 Prof. Roberto
DettagliUniversità di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.
Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2017-18 Pietro Frasca Lezione 6 Martedì 24-10-2017 1 Sostituzione del codice Tipicamente, dopo una
DettagliSicurezza delle reti. Monga. Ricognizione. Scanning Breve ripasso socket Network mapping Port Scanning NMAP. Le tecniche di scanning
Sicurezza dei sistemi e delle 1 Mattia Dip. di Informatica Università degli Studi di Milano, Italia mattia.monga@unimi.it Port Lezione V: Scansioni Port a.a. 2015/16 1 cba 2011 15 M.. Creative Commons
DettagliOTTAVA ESPERIENZA DI LABORATORIO. L elaborazione dei files in C
CORSO DI LABORATORIO DI INFORMATICA CORSO DI LAUREA IN SDM ANNO ACCADEMICO 2011-2012 Docente: R. Sparvoli Esercitazioni: R. Sparvoli, F. Palma OTTAVA ESPERIENZA DI LABORATORIO L elaborazione dei files
Dettagli