Laboratorio Reti di Calcolatori (A.A ) Delfina Malandrino.
|
|
- Agnolo Damiani
- 5 anni fa
- Visualizzazioni
Transcript
1 Laboratorio Reti di Calcolatori (A.A ) Delfina Malandrino Applicazione echo Il server replica un messaggio inviato dal client Il client legge una riga di testo dallo standard d input e la invia al server Il server legge la riga di testo dal socket e la rimanda al client Il client legge la riga di testo dal socket e la invia allo standard input 1
2 Echo Server #include basic.h int main(int argc, char **argv) { pid_t pid; int listensd, connsd; struct sockaddr_in servaddr, cliaddr; socklen_t clilen; if( (listensd = socket(af_inet, SOCK_STREAM, 0)) < 0) err_sys( errore in socket"); bzero(&servaddr, sizeof(servaddr)); servaddr.sin_family sin = AF_INET; servaddr.sin_addr.s_addr = htonl(inaddr_any); servaddr.sin_port = htons(serv_port); if( (bind(listensd, (SA *) &servaddr, sizeof(servaddr))) < 0) err_sys("errore in bind"); if( listen(listensd, LISTENQ) < 0 ) err_sys( errore in listen"); Echo Server for ( ; ; ) { clilen = sizeof(cliaddr); if( (connsd = accept(listensd, (SA *) &cliaddr, &clilen)) < 0) err_sys( errore in accept"); if( (pid = fork()) == 0 ) { if( close(listensd) == -1 ) err_sys( errore in close"); server_echo(connsd); if( close(connsd) == -1 ) err_sys( errore y( in close ); exit(0); if( close(connsd) == -1 ) err_sys("errore in close"); 2
3 Echo Server void server_echo(int sockd) { ssize_t n; char line[maxline]; for ( ; ; ) { if ( (n = readline(sockd, line, MAXLINE)) == 0) return; //connessione chiusa dal client if( writen(sockd, line, n)!= n ) err_sys( sys( write error"); Echo Client 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("socket error"); bzero(&servaddr, sizeof(servaddr)); servaddr.sin_addr.s_addr=inet_addr(argv[1]); [ servaddr.sin_family = AF_INET; servaddr.sin_port = htons(serv_port); if (connect(sockd, (struct sockaddr *) &servaddr, sizeof(servaddr)) < 0 ) err_sys( connect error"); client_echo(stdin, sockd); exit(0); inet_pton(af_inet,argv[1],&serveraddr.sin_addr) 3
4 Echo Client void client_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: server morto prematuramente\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 Analisi dell Applicazione: Creazione della Connessione ete (Delfina MAlandrino) 20 Quando il server parte invoca le funzioni: socket, bind, listen, accept e rimane bloccato nella accept. Il client non è ancora partito. [delmal@apollo ECHO]./echo_server [delmal@apollo ECHO] netstat -a Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 *:9877 *:* LISTEN Mostrato lo stato di tutti i socket nel sistema L opzione a mostrailistening socket Lo * per un IP address di 0 (INADDR_ANY) Unaportaa0 Processo padre Processo padre Indirizzo socket :9877 4
5 Analisi dell Applicazione: Creazione della Connessione Quando parte il client si hanno 3 processi nel sistema. Processo server padre bloccato sull accept Processo server figlio bloccato sulla read Il client bloccato su fgets [delmal@wonderland ECHO]./echo_client [delmal@wonderland ECHO] netstat a Proto Recv-Q Send-Q Local Address Foreign Address State tcp : :9877 ESTABLISHED indirizzo del socket del client (IP: porta 32791) Analisi dell Applicazione: Creazione della Connessione Quando parte il client si hanno 3 processi nel sistema. Processo server padre bloccato sull accept Processo server figlio bloccato sulla read Il client bloccato su fgets [delmal@apollo ECHO] netstat -a Proto Recv-Q Send-Q Local Address Foreign Address State tcp : :* LISTEN tcp : :32791 ESTABLISHED indirizzo del socket di ascolto ( porta 9877) Processo padre indirizzo del socket connesso ( : porta 9877) Processo server figlio 5
6 Analisi dell Applicazione: Creazione della Connessione ECHO] ps lw F UID PID PPID PRI NI VSZ RSS WCHAN STAT TTY TIME COMMAND schedu S pts/0 0:00./echo_server schedu S pts/0 0:00./echo_server processo > server padre processo > server figlio generato da [delmal@wonderland ~]$ ps lw F UID PID PPID PRI NI VSZ RSS WCHAN STAT TTY TIME COMMAND rt_sig S pts/7 0:00 -tcsh S pts/7 0:00./echo_client processo > client generato da tcsh Chiusura normale Quando l utente inserisce i dati tutto ciò che viene inviato al server verrà stampato su stdout. [delmal@wonderland ECHO]./echo_client Ciao D Ciao R ^D D [delmal@wonderland ECHO] [delmal@wonderland ECHO] netstat a grep 9877 tcp : :9877 TIME_WAIT Il client va in TIME_WAIT 6
7 Chiusura Normale L utente digita ^D la fgets() restituisce NULL client_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 Chiusura di una connessione 7
8 Chiusura Normale Quando il server TCP riceve il FIN Il processo figlio è bloccato sulla readline che restituisce 0 La funzione server_echo() termina Il controllo ritorna al metodo main 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 Chiusura di una connessione 8
9 Analisi dell Applicazione: Chiusura della Connessione Lo stato dei socket dopo che è stata terminata la close è il seguente ECHO] netstat a grep 9877 Tcp : :9877 TIME_WAIT [delmal@apollo ECHO] netstat a grep 9877 Tcp : :* LISTEN lo stato dei processi è il seguente prompt> ps lw PID PPID STAT TTY TIME COMMAND S pts/0 0:00./echo_server Z pts/0 0:00 [echo_server <defunct>] il processo figlio è diventato zombie Gestione dei segnali I segnali sono utilizzati per notificare l occorrenza di un evento ad un processo Sono inviati dai processi stessi o dal SO SIGCHLD inviato dal SO al processo padre Il processo può decidere quali segnali gestire Per ogni segnale deve definire una funzione di gestione (handler del segnale) void handler(int signo); Ogni segnale ha un handler di default Alcuni vengono sempre gestiti (SIGKILL) Alcuni per default vengono ignorati (SIGCHLD) 9
10 Gestione dei segnali In un server ricorsivo il server crea un processo figlio per gestire la connessione Quando il processo figlio termina di gestire la richiesta la connessione viene chiusa ed il processo figlio termina Il SO manda un segnale SIGCHLD al padre ed il processo figlio diventa ZOMBIE I processi ZOMBIE sono processi terminati per i quali vengono mantenuti dei dati nel SO (CPU,memoria, ecc). Il processo padre può così controllare il valore di uscita del figlio e l utilizzo delle risorse del figlio Di default il processo padre ignora questo segnale Il processo figlio rimane ZOMBIE finché il padre non termina Gestione dei segnali I processi ZOMBIE esauriscono lo spazio della tabella dei processi Per evitare la creazione di processi ZOMBIE bisogna fare in modo che il processo padre gestisca il segnale SIGCHLD Bisogna fornire un handler per il segnale SIGCHLD Il processo zombie viene rimosso quando il processo padre chiama le funzioni wait() e waitpid() 10
11 wait e waitpid pid_t wait(int* statloc); pid_t waitpid(pid_t t pid, int* statloc, intoptions); 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 ti di waitpid() id() opzione non bloccante (WNOHANG) Il processo non aspetta se il figlio non è terminato permette di scegliere il figlio da attendere (-1 per il primo che termina) chiamato in un ciclo consente di catturare tutti i segnali Handler per SIGCHLD #include <signal.h> #include <sys/wait.h> void gestisci_zombie (int segnale) { int status; pid_t waitpid(pid_t pid, int*status, int options) int pid; while((pid = waitpid(-1, &status, WNOHANG)) > 0) printf("child %d terminato\n", pid); return; waitpid() permette di scegliere il figlio d attendere (-1 per il primo che termina) Quando il figlio termina e lancia il segnale SIGCHLD, waitpid() lo cattura e restituisce il pid 11
12 Attivazione dell handler #include <signal.h> #include <sys/wait.h> typedef void Sigfunc(int); Sigfunc *signal(int signum, Sigfunc *func) { struct sigaction act, oact; act.sa_handler = func; sigemptyset(&act.sa_mask); act.sa_flags = 0; if (signum!= SIGALRM) act.sa_flags = SA_RESTART; if (sigaction(signum, &act, &oact) < 0) return(sig_err); return(oact.sa_handler); signal() attiva l handler: prende in ingresso il numero del segnale ed il puntatore all handler la struttura sigaction memorizza informazioni riguardanti la manipolazione del segnale insieme di segnali bloccati durante l esecuzione dell handler la funzione sigaction() prende in ingresso una struttura contenente il puntatore all handler, una maschera di segnali da mascherare e vari flag Gestione dei segnali [delmal@wonderland] ps lw PID PPID PGID WINPID TTY UID STIME COMMAND con :31:25 /usr/bin/tcsh /bi / con :31:55 /usr/bin/tcsh con :32:51 /usr/bin/tcsh con :19:17./echo_server con :20:16./echo_client con :20:16./echo_server [delmal@wonderland]>./echo_server & [1] 3076 prompt >./ echo_client Ciao Ciao ^D Child 2352 terminato 12
13 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 esce con errore EINTR l applicazione termina anche se EINTR non è un vero errore Occorre tener presente questo problema l applicazioneli i 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) Una possibile soluzione for ( ; ; ) { clilen = sizeof(cliaddr); if ( (connfd = accept(listenfd, &cliaddr, &clilen)) < 0) { if (errno = EINTR) continue; else { err_sys( accept error ); Se la chiamata ad accept ritorna EINTR accept viene richiamata Se l errore è diverso da EINTR Si gestisce l errore (nell esempio si chiama exit) 13
14 Server TCP con Gestione di SIGCHLD e EINTR #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"); Server TCP con Gestione di SIGCHLD e EINTR 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"); do_it(connsd); d) close(connsd); exit(0); if( close(connsd) == -1 ) err_sys("errore in close"); 14
15 Reset connessione e accept Un altro errore tipico da gestire con accept è il reset della connessione prima della chiamata ad accept La connessione è diventata ESTABLISHED ma è ancora nel BACKLOG Il client spedisce un RST Il server chiama accept Reset connessione e accept Quando il server invoca l accept questa restituisce un codice di errore ECONNABORTED La gestione dell errore ECONNABORTED dipende dall implementazione Il server può ignorarlo e richiamare accept per la prossima connessione 15
16 Terminazione del server Cosa succede se il server child termina prematuramente? I passi che avvengono sono i seguenti: Inviamo una stringa al server ed il server la restituisce correttamente Troviamo il PID del processo figlio e lo terminiamo (kill) Tutti i descrittori verranno chiusi Un FIN verrà inviato al client, il client risponde con un ACK. Il segnale SIGCHLD viene inviato al processo padre e gestito correttamente Sul client non accade nulla. Il client TCP riceve il FIN e risponde con un ACK ma PROBLEMA: Il client è bloccato sulla fgets (in attesa di una linea dal terminale) Terminazione del server [delmal@wonderland] > echo_client hello hello Ciao str_cli_echo: server morto prematuramente I Il client spedisce Ciao al server È permesso perché il client non ha chiuso il socket Il processo server ha chiuso la sua connessione e non invierà più dati Il client non sa che il processo padre è terminato Quando il server riceve altri dati dal client risponde con un RST Il client non vede l RST dal momento che è bloccato sulla readline La readline restituisce EOF a causa del FIN ricevuto dal server Non si aspetta di ricevere EOF quindi stampa il messaggio di errore e termina ( server morto prematuramente ) Tutti i descrittori verranno chiusi 16
17 SIGPIPE Cosa succede se il client ignora l errore su readline e scrive altri dati sul socket? Questo può capitare se il client deve eseguire due write consecutive prima di ricevere qualcosa La prima write fa sì che il server spedisca RST La seconda write crea il problema Quando un processo scrive su un socket che ha ricevuto un RST un segnale di SIGPIPE viene inviato al processo il processo termina se il segnale non viene catturato o ignorato Se SIGPIPE è ignorato l operazione di write genera l errore di EPIPE SIGPIPE Cosa succede con il segnale SIGPIPE: #include "unp.h" void str_cli(file *fp, int sockfd) { char sendline [MAXLINE], recvline [MAXLINE]; while (fgets(sendline, MAXLINE, fp)!= NULL) { writen(sockfd, sendline, 1); sleep(1); writen(sockfd, sendline + 1, strlen(sendline) - 1); if (readline(sockfd, ( recvline, MAXLINE) == 0) err_quit("str_cli: server terminated prematurely"); fputs(recvline, stdout); 17
18 SIGPIPE Cosa succede con il segnale SIGPIPE: > echo_client Hi there Hi there bye Broken pipe I Soluzione semplice, quando non si deve reagire all errore Ignorare (SIG_IGN) il segnale di SIGPIPE Assume che non occorre fare niente di speciale in tale circostanza Controllare l errore di EPIPE sulle write e nel caso di errore terminare (non scrivere più) Crash della macchina server Un altra possibile causa di errore è se la macchina server non risponde proprio Diverso da uccidere il processo server (in quel caso vengono spediti FIN, RST) Può dipendere dalla rete Il client è bloccato in readline TCP ritrasmetterà i dati per ricevere l ACK fino ad un certo timeout (ritrasmesso il segmento per 12 volte con tempo di attesa di 9 min circa) La funzione di lettura dal socket restituisce un errore ETIMEOUT (in caso di nessuna risposta) EHOSTUNREACH, ENETUNREACH (se un router determina che l host è unreachable e risponde con un ICMP destination unreachable ) 18
19 Server shutdown and 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 nuovi dati 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 restituisce ECONNRESET Somma di 2 numeri 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 19
20 Applicazione Somma - Server #include "basic.h" #include "somma_server.h" int main(int argc, char **argv) { pid_t pid; int listensd, connsd; struct sockaddr_in servaddr, cliaddr; socklen_t cliaddr_len; if( (listensd = socket(af_inet, SOCK_STREAM, 0)) < 0) err_sys( sys("errore in socket"); bzero(&servaddr, sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_addr.s_addr = htonl(inaddr_any); servaddr.sin_port = htons(serv_port); Applicazione Somma - Server if( (bind(listensd, (struct sockaddr *) &servaddr, sizeof(servaddr))) < 0) err_sys("errore in bind"); if( listen(listensd, t LISTENQ) < 0 ) err_sys("errore in listen"); for ( ; ; ) { cliaddr_len = sizeof(cliaddr); if( (connsd = accept(listensd, (SA *) &cliaddr, &cliaddr_len)) < 0) { err_sys("errore in accept"); if( (pid = fork()) == 0 ) { if( close(listensd) == -1) err_sys("errore in close"); doit_server(connsd); if( close(connsd) == -1) err_sys("errore in close"); exit(0); if( close(connsd) == -1 ) err_sys("errore in close"); 20
21 Applicazione Somma Server #include "basic.h" void doit_server(int sockd){ int i, arg1, arg2,n; char sendline[maxline], recvline[maxline],c; for ( ; ; ) { if ( (n = readline(sockd, recvline, MAXLINE)) == 0) return; /* connessione chiusa dal client */ if( sscanf(rcvline, "%d %d", &arg1, &arg2) == 2 ) /* estrae da rcvline i due interi passati dal client */ sprintf(sendline, "%d\n", arg1 + arg2); else sprintf(sendline, "errore nell'input\n"); /* se il formato del messaggio ricevuto non è corretto*/ if( (n = writen(sockd, sendline, strlen(sendline))) < 0) /* invia la risposta al client */ err_sys("errore nella write"); Applicazione Somma Client #include "basic.h" #include "somma_client.h" int main(int argc, char **argv){ int sockd, n; struct sockaddr_in servaddr; if ( argc!= 2 ) err_quit("utilizzo: somma_client <IPaddress>"); if ( (sockd = socket(af_inet, SOCK_STREAM, 0)) < 0 ) err_sys("errore in socket"); bzero(&servaddr, sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_port sin = htons(serv_port); if ( inet_pton(af_inet, argv[1], &servaddr.sin_addr) <= 0 ) err_quit("errore in inet_pton per %s", argv[1]); if ( connect(sockd, (struct sockaddr *) &servaddr, sizeof(servaddr)) < 0 ) err_sys("errore in connect"); doit_client(stdin, sockd); exit(0); 21
22 Applicazione Somma Client #include "basic.h" void doit_client(file *fd, int sockd) { char sendline[maxline], recvline[maxline]; int n; printf("digita due interi sulla stessa linea\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 prematuramente\n"); fputs(recvline, stdout); Passaggio di strutture Strutture scambiate fra client e server 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 struct args{ long arg1; long arg2; struct result{ long sum; 22
23 doit_server #include basic.h" void doit_server(int sockfd) { ssize_t n; struct args args; struct result result; for ( ; ; ) { if ( (n = readn(sockfd, &args, sizeof(args))) == 0) return; /* connection closed by other end */ result.sum = args.arg1 + args.arg2; writen(sockfd, &result, sizeof(result)); doit_client void doit_client(file *fp, int sockfd) { char sendline[maxline]; struct args args; struct result result; while (fgets(sendline, MAXLINE, fp)!= NULL) { if (sscanf(sendline, "%ld%ld", &args.arg1, &args.arg2)!= 2) { printf("invalid input: %s", sendline); continue; writen(sockfd, &args, sizeof(args)); if (readn(sockfd, &result, sizeof(result)) == 0) err_quit("server terminato prematuramente\n"); printf("%ld\n", result.sum); 23
Progettazione di Applicazioni Robuste. Applicazione Echo. Schema Generale di un Server TCP Ricorsivo 1. Applicazione echo
a.a. 2003/04 Applicazione Echo Prof. Vincenzo Auletta auletta@dia.unisa.it http://www.dia.unisa.it/professori/auletta/ Progettazione di Applicazioni Robuste nel progettare applicazioni su rete robuste
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
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 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
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
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
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
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
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
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,
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
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
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
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
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
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
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
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
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
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
DettagliSignalling (IPC) Signalling (segnalazione)
Signalling (IPC) Signalling (segnalazione) è un particolare tipo di Inter-Process Communications che permettere di sincronizzare dei processi spedendo e ricevendo dei messaggi minimali che informano dell'accadimento
DettagliPRATICA - Lezione 1. Autunno PRATICA (Lez. 1)
PRATICA - Lezione! " # $ &%' ( "*)+,.-/ * "* )+ 2 3547698:47;!
DettagliProgettazione di un client TCP. Progettazione di un server TCP. Esempio: daytime TCP. Client TCP daytime
Progettazione di un client TCP Progettazione di un server TCP Passi per la progettazione di un client TCP 1. Creazione di un endpoint Richiesta al sistema operativo 2. Creazione della connessione Implementazione
DettagliEsercitazione [7] Client/Server con Socket
Esercitazione [7] Client/Server con Socket Leonardo Aniello - aniello@dis.uniroma1.it Daniele Cono D'Elia - delia@dis.uniroma1.it Federico Lombardi - lombardi@dis.uniroma1.it Sistemi di Calcolo - Secondo
DettagliUniversità degli Studi di Cagliari Corso di Laurea Specialistica in Ingegneria Elettronica. SISTEMI OPERATIVI A.A. 2004/2005 Docente: Giorgio Giacinto
Università degli Studi di Cagliari Corso di Laurea Specialistica in Ingegneria Elettronica SISTEMI OPERATIVI A.A. 2004/2005 Docente: Giorgio Giacinto fork() & exec() Roberto Perdisci A.A. 2004/2005 1 Dettagli
Dettaglifunzione close() La funzione close è utilizzata normalmente per chiudere un descrittore di file, è utilizzata per chiudere un socket e terminare una
funzione close() La funzione close è utilizzata normalmente per chiudere un descrittore di file, è utilizzata per chiudere un socket e terminare una connessione TCP. int close (int socketfd); restituisce
DettagliLaboratorio di. Reti Informatiche. Corso di Laurea Triennale in Ingegneria Informatica A.A. 2016/2017. Ing. Niccolò Iardella
Laboratorio di Reti Informatiche Corso di Laurea Triennale in Ingegneria Informatica A.A. 2016/2017 Ing. Niccolò Iardella niccolo.iardella@unifi.it 1 Esercitazione 5 Programmazione con i socket Parte 2
DettagliSistemi Operativi Anno Accademico 2011/2012. Segnali: Interrupt software per la gestione di eventi asincroni
Anno Accademico 2011/2012 Segnali: Interrupt software per la gestione di eventi asincroni Concetto di segnale Un segnale è un interrupt software Un segnale può essere generato da un processo utente o dal
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
DettagliIntroduzione ai socket
Introduzione ai socket Socket locali Contiene lucidi tratti da: 2006-2007 Marco Faella, Clemente Galdi, Giovanni Schmid (Università di Napoli Federico II), 2004-2005 Walter Crescenzi(Universita di Roma
DettagliSISTEMI OPERATIVI. Processi in Linux. Giorgio Giacinto Sistemi Operativi
SISTEMI OPERATIVI Processi in Linux 2 Creazione di processi concorrenti» La creazione di un processo figlio consente di far eseguire alcune funzionalità del programma in modo concorrente» Opzione 1 il
DettagliSistemi Operativi. Marzo-Giugno 2011 matricole congrue 0 mod 3. Controllo dei processi - I
Marzo-Giugno 2011 matricole congrue 0 mod 3 Controllo dei processi - I Controllo dei processi Creazione di nuovi processi Esecuzione di programmi Processo di terminazione Altro 2 1 Identificatori di processi
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
DettagliControllo dei Processi 1
Controllo dei Processi 1 I processi Nei sistemi Unix/Linux ogni processo ne può generare altri. Il processo che li genera è detto processo padre (parent process), mentre i processi generati sono detti
DettagliLABORATORIO di Reti di Calcolatori
LABORATORIO di Reti di Calcolatori Socket in linguaggio C: protocollo connection-oriented 1 of 15 v slide della docente Bibliografia v testo di supporto: D. Maggiorini, Introduzione alla programmazione
DettagliLaboratorio di Sistemi Operativi Marzo-Giugno 2008 Matricole congrue 0 modulo 3
Marzo-Giugno 2008 Matricole congrue 0 modulo 3 Segnali: Interrupt software per la gestione di eventi asincroni Concetto di segnale Un segnale è un interrupt software Un segnale può essere generato da un
DettagliSviluppo di Applicazioni su Rete. Introduzione all API socket di Berkeley. Interazione tra Processi. Modello Client-Server
a.a. 2003/04 Introduzione all API socket di Berkeley Prof. Vincenzo Auletta auletta@dia.unisa.it http://www.dia.unisa.it/professori/auletta/ Università degli studi di Salerno Laurea e Diploma in Informatica
DettagliSistemi Operativi (M. Cesati)
Sistemi Operativi (M. Cesati) Compito scritto del 17 febbraio 2014 Nome: Matricola: Corso di laurea: Cognome: Crediti da conseguire: 5 6 9 Scrivere i dati richiesti in stampatello. Al termine consegnare
DettagliSistemi Operativi Teledidattico
Sistemi Operativi Teledidattico Anno 2002 3a esercitazione 5/10/2002 Paolo Torroni processi fork (creazione di un figlio) exec (sostituzione di codice del programma in esecuzione) wait (attesa della terminazione
DettagliLINUX: struttura generale
LINUX: struttura generale User Interface The layers of a UNIX system. 1 Processi in LINUX Ogni processo nasce con un solo thread Un processo gira in modalità utente; quando effettua una system call passa
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
DettagliSincronizzazione tra processi in Unix: i segnali
Sincronizzazione tra processi in Unix: i segnali 1 Sincronizzazione tra processi I processi interagenti possono avere bisogno di sincronizzazione. Unix: non c è condivisione di variabili tra processi:
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
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
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
DettagliSistemi Operativi (M. Cesati)
Sistemi Operativi (M. Cesati) Compito scritto del 7 settembre 2016 (Traccia A) Nome: Matricola: Corso di laurea: Cognome: Crediti da conseguire: 5 6 9 Scrivere i dati richiesti in stampatello. Al termine
DettagliSincronizzazione tra processi UNIX: i segnali. Sincronizzazione tra processi
Sincronizzazione tra processi UNIX: i segnali Sincronizzazione tra processi Processi interagenti possono avere bisogno di meccanismi di sincronizzazione Ad esempio, abbiamo appena visto il caso di processi
DettagliLaboratorio reti AA 2006/2007. Dott. Matteo Roffilli Ricevimento in ufficio dopo la lezione
Laboratorio reti AA 2006/2007 Dott. Matteo Roffilli roffilli@csr.unibo.it Ricevimento in ufficio dopo la lezione 1 Laboratorio reti AA 2006/2007 Per esercitarvi fate SSH su: alfa.csr.unibo.it si-tux00.csr.unibo.it.
DettagliProgrammazione di sistema in Linux: System Call per i Segnali. E. Mumolo
Programmazione di sistema in Linux: System Call per i Segnali E. Mumolo Eventi asincroni: segnali I segnali permettono la gestione di eventi asincroni che interrompono il normale funzionamento di un processo
DettagliSystem Call EXEC EXEC P P. fork exec(new_prog) fork. sono_il_padre = fork(); if (!sono_il_padre) {
System Call EXEC EXEC L effetto delle system call della famiglia exec consiste nel mandare in esecuzione: (1) un programma contenuto in un file eseguibile oppure un (2) interprete di programmi P fork P
DettagliProgrammazione di applicazioni di rete con socket - parte 1
Università degli Studi di Roma Tor Vergata Facoltà di Ingegneria Programmazione di applicazioni di rete con socket - parte 1 Corso di Sistemi Distribuiti Valeria Cardellini Anno accademico 2008/09 Applicazioni
DettagliSistemi Operativi (M. Cesati)
Sistemi Operativi (M. Cesati) Compito scritto del 1 febbraio 2016 Nome: Matricola: Corso di laurea: Cognome: Crediti da conseguire: 5 6 9 Scrivere i dati richiesti in stampatello. Al termine consegnare
DettagliSocket II MIDLAB. Sirio Scipioni. M I D L A B.
Socket II Sirio Scipioni scipioni@dis.uniroma1.it http://www.dis.uniroma1.it/~scipioni MIDLAB http://www.dis.uniroma1.it/~midlab Sommario Richiami sui processi Echo server TCP (multi processo) Richiami
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
DettagliSincronizzazione tra processi. Sincronizzazione tra processi. segnali. Segnali UNIX
Sincronizzazione tra processi Sincronizzazione tra processi UNIX: i segnali Processi interagenti possono avere bisogno di meccanismi di sincronizzazione Ad esempio, abbiamo appena visto il caso di processi
DettagliSegnali. Tecnica di comunicazione asincrona tra processi. Si può solo inviare uno tra un insieme fissato di segnali
Segnali ed allarmi Segnali Tecnica di comunicazione asincrona tra processi Si può solo inviare uno tra un insieme fissato di segnali Il destinatario viene interrotto, e si salta ad una procedura specifica
DettagliSincronizzazione tra processi in Unix: : i segnali. Sistemi Operativi T AA
Sincronizzazione tra processi in Unix: : i segnali Sistemi Operativi T AA 2009-2010 1 Sincronizzazione tra processi La sincronizzazione permette di imporre vincoli sull'ordine di esecuzione delle operazioni
DettagliLaboratorio reti AA 2007/2008. Dott. Matteo Roffilli Ricevimento in ufficio dopo la lezione
Laboratorio reti AA 2007/2008 Dott. Matteo Roffilli roffilli@csr.unibo.it Ricevimento in ufficio dopo la lezione 1 Laboratorio reti AA 2007/2008 Per esercitarvi fate SSH su: alfa.csr.unibo.it si-tux00.csr.unibo.it.
DettagliLABORATORIO DI SISTEMI OPERATIVI
LABORATORIO DI SISTEMI OPERATIVI Corso di Laurea Triennale in Ingegneria Informatica A.A. 2018/2019 Guglielmo Cola Email: g.cola@iet.unipi.it Web: iet.unipi.it/g.cola Processi in Unix/Linux caratteristiche
DettagliSincronizzazione tra processi! in Unix: i segnali!
Sincronizzazione tra processi! in Unix: i segnali! 1 Sincronizzazione tra processi La sincronizzazione permette di imporre vincoli sull'ordine di esecuzione delle operazioni dei processi interagenti. Unix
DettagliReti di Calcolatori - Laboratorio. Lezione 5. Gennaro Oliva
Reti di Calcolatori - Laboratorio Lezione 5 Gennaro Oliva Server basato su I/O Multiplex Per realizzare un server è possibile utilizzare l'i/o Multiplex Un unico processo iterativo gestisce il socket che
DettagliLaboratorio reti AA 2008/2009. Dott. Matteo Roffilli Ricevimento in ufficio dopo la lezione
Laboratorio reti AA 2008/2009 Dott. Matteo Roffilli roffilli@csr.unibo.it Ricevimento in ufficio dopo la lezione 1 Laboratorio reti AA 2008/2009 Per esercitarvi fate SSH su: alfa.csr.unibo.it si-tux00.csr.unibo.it.
Dettagli" &$ () " ) ) $ ' () *) " ) $
%&! "# $ #include int main(int argc, char *argv[]) { int i; for (i = 0; i < argc; i++) printf("argv[%d]: %s\n", i, argv[i] ); 1 2 " &$ cc cc program.c a.out pippo pluto topolino argv[0]: a.out
DettagliSincronizzazione tra processi in Unix: i segnali
Sincronizzazione tra processi in Unix: i segnali Sincronizzazione tra processi La sincronizzazione permette di imporre vincoli sull'ordine di esecuzione delle operazioni dei processi interagenti. Unix
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(...)
Dettaglirequest reply richiesta client processo di servizio processo server principale From - Valeria Cardellini, Corso Sist. Distr. A.A.
Applicazioni di rete Forniscono i servizi di alto livello utilizzati dagli utenti Determinano la percezione di qualità del servizio (QoS) che gli utenti hanno della rete sottostante Programmazione di applicazioni
DettagliTimeout. Socket Avanzati. Client echo UDP con alarm. Funzione alarm()
Università degli studi di Salerno Laurea in Informatica a.a. 2003/04 Socket Avanzati Prof. Vincenzo Auletta auletta@dia.unisa.it http://www.dia.unisa.it/professori/auletta/ 1 Timeout Abbiamo visto molte
DettagliEsercitazione [09] Approfondimento su Letture e Scritture con Descrittori
Esercitazione [09] Approfondimento su Letture e Scritture con Descrittori Leonardo Aniello aniello@dis.uniroma1.it Daniele Cono D'Elia delia@dis.uniroma1.it Giuseppe Laurenza laurenza@dis.uniroma1.it Federico
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
DettagliLaboratorio reti AA 2007/2008. Dott. Matteo Roffilli Ricevimento in ufficio dopo la lezione
Laboratorio reti AA 2007/2008 Dott. Matteo Roffilli roffilli@csr.unibo.it Ricevimento in ufficio dopo la lezione 1 Laboratorio reti AA 2007/2008 Per esercitarvi fate SSH su: alfa.csr.unibo.it si-tux00.csr.unibo.it.
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
DettagliLaboratorio di Sistemi Operativi
primavera 2009 Controllo dei processi (2) Funzioni wait e waitpid quando un processo termina il kernel manda al padre il segnale SIGCHLD il padre può ignorare il segnale (default) oppure lanciare una funzione
DettagliCorso di Programmazione Concorrente Processi. Valter Crescenzi
Corso di Programmazione Concorrente Processi Valter Crescenzi http://crescenzi.inf.uniroma3.it Sommario Processi vs Thread Creazione e terminazione di processi chiamata di sistema fork() chiamata di sistema
DettagliEsempi di Client e Server
Esempi di Client e Server Corso di laurea in Informatica Laboratorio di Reti di Calcolatori A.A. 0-0 Simone Bassis bassis@di.unimi.it #include #include #include #include
DettagliCorso di Reti di Calcolatori T
Università degli Studi di Bologna Scuola di Ingegneria Corso di Reti di Calcolatori T Esercitazione 3 (svolta) Socket C senza e con connessione Luca Foschini Anno accademico 2017/2018 Esercitazione 3 1
DettagliCorso di Reti di Calcolatori L-A
Università degli Studi di Bologna Facoltà di Ingegneria Corso di Reti di Calcolatori L-A Esercitazione 3 (svolta) Socket C senza e con connessione Luca Foschini Anno accademico 2009/2010 Esercitazione
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. 2018-2019 Pietro Frasca Lezione 5 Martedì 16-10-2018 Operazioni sui processi Nella maggior parte dei
DettagliLaboratorio di Reti di Calcolatori
Laboratorio di Reti di Calcolatori I/O Multiplexing. Paolo D Arco Abstract copo della lezione è presentare i vari modelli di I/O, descrivere la funzione select(), e costruire un echo client robusto ed
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
DettagliIntroduzione. Prof. Roberto De Prisco. Telefonini. o almeno. e non rispondere. Università degli studi di Salerno Laurea e Diploma in Informatica
Prof. Roberto De Prisco Introduzione Università degli studi di Salerno Laurea e Diploma in Informatica Telefonini 2 o almeno e non rispondere 1 Presentazione 3 Prof. Roberto De Prisco studio: L1-13 robdep@unisa.it
DettagliSCUOLA DI INGEGNERIA DELL INFORMAZIONE. Corso di Piattaforme Software per la rete MODULO 2 Anno Accademico Prof. William FORNACIARI
SCUOLA DI INGEGNERIA DELL INFORMAZIONE Corso di Piattaforme Software per la rete MODULO 2 Anno Accademico 2016-2017 Prof. William FORNACIARI SOLUZIONE D1 D2 D3 TOT Laureando SI NO NOTE PER LO SVOLGIMENTO
DettagliLABORATORIO DI SISTEMI OPERATIVI
LABORATORIO DI SISTEMI OPERATIVI Corso di Laurea Triennale in Ingegneria Informatica A.A. 2018/2019 Guglielmo Cola Email: g.cola@iet.unipi.it Web: iet.unipi.it/g.cola Processi in Unix/Linux (parte II)
DettagliAPI Socket di Berkeley
Laboratorio Reti di Calcolatori (A.A. 2008-2009) Programmazione di rete ed interfaccia API socket di Berkeley Delfina Malandrino delmal@dia.unisa.it http://www.dia.unisa.it/professori/delmal/ API Socket
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
DettagliLaboratorio di Sistemi Operativi primavera 2009
primavera 2009 Forme di comunicazione tra processi La comunicazione tra processi può avvenire: Le pipe Passando dei files aperti tramite fork Attraverso il filesystem Utilizzando le pipes Utilizzando le
DettagliP3-05: Socket Options
Autunno 2002 Prof. Roberto De Prisco -05: Socket Options Università degli studi di Salerno Laurea e Diploma in Informatica Socket options 05.2 Ogni socket aperto ha delle proprietà che ne determinano alcuni
DettagliReti di Calcolatori. Saper scrivere semplici programmi per la comunicazione su una rete di calcolatori. Assunzione. Ambiente di sviluppo LABORATORIO
Obiettivo 2 orso di laurea in Informatica Reti di alcolatori A.A. 2007-2008 Prof. Roberto De Prisco aper scrivere semplici programmi per la comunicazione su una rete di calcolatori Assunzione apete già
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*HVWLRQHDYDQ]DWDGHOOH6RFNHWLQ& ODSULPLWLYDVHOHFW
*HVWLRQHDYDQ]DWDGHOOH6RFNHWLQ& ODSULPLWLYDVHOHFW 7&3H8'3&OLHQW6HUYHUXVDQGRVHOHFW Si progetti un applicazione distribuita Client/Server per una rete di workstation UNIX (BSD oppure System V). In particolare,
DettagliProcessi - II. Franco Maria Nardini
Processi - II Franco Maria Nardini Processi Programmi in esecuzione in memoria sono chiamati processi. Caricati in memoria da una delle sei funzioni exec(3). Ogni processo ha un identificatore univoco
DettagliI segnali. First the signals described in the original POSIX standard.
I segnali Prof.ssa Sara Michelangeli I segnali sono interruzioni inviate ai processi dal kernel, da un altro processo utente, oppure da un processo a se' stesso. Possono essere utilizzati dal sistema operativo
DettagliLaboratorio di sistemi operativi A.A. 2010/2011 Gruppo 2 Gennaro Oliva 18 Segnali
Laboratorio di sistemi operativi A.A. 2010/2011 Gruppo 2 Gennaro Oliva 18 Segnali I lucidi di seguito riportati sono distribuiti nei termini della licenza Creative Commons Attribuzione/Condividi allo stesso
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
Dettagli