Meccanismi di sincronizzazione. Sincronizzazione di processi e thread (3) Sincronizzazione Message-Based. Sincronizzazione Message-Based
|
|
- Matteo Mauri
- 5 anni fa
- Visualizzazioni
Transcript
1 Meccanismi di sincronizzazione Sincronizzazione di processi e thread (3) Sincronizzazione Message-Based Scambio di messaggi Due primitive: Send Receive Entrambe possono specificare un canale da usare Sincronizzazione Message-Based Tre questioni: il modello di sincronizzazione il metodo di process naming struttura del messaggio Process P1 send message Process P2 receive message 3
2 Sincronizzazione: modelli Il modello è funzione della semantica della operazione di send Analogie: Invio di una lettera: send asincrona Sincronizzazione: modelli Asincrono (no-wait) (e.g. POSIX) Ci vuole un buffer. Process P1 Process P2 Telefonata: send sincrona send message message receive message Sincronizzazione: modelli Sincrono (e.g. CSP, occam2) No buffer space Conosciuto come rendezvous Process P1 Process P2 Sincronizzazione: modelli Remote invocation (e.g. Ada) Detto anche extended rendezvous Process P1 Process P2 send message blocked M receive message send message blocked M receive message reply
3 Asincrono vs. Sincrono La comunicazione asincrona può implementare la sincrona: P1 P2 asyn_send (M) wait (M) wait (ack) asyn_send (ack) Svantaggi della send asincrona Potenzialmente: buffer infinito Più comunicazione, maggiore complessità Difficile provare la correttezza del sistema Due comunicazioni sincrone possono implementare una remote invocation: P1 P2 syn_send (message) wait (message) wait (reply)... costruisci reply Process Naming: direction vs indirection Due questioni direction vs indirection simmetria direct naming: il sender chiama esplicitamente il receiver: send <message> to <process-name> Vantaggi: semplicità, indirect naming, il sender chiama un intermediario (e.g. channel, mailbox, link or pipe): send <message> to <mailbox> Con mailbox, il message passing può ancora essere sincrono Vantaggi: aiuta la decomposizione del software; una mailbox è un interfaccia fra parti di programma Process Naming: simmetria Naming simmetrico: send <message> to <process-name> wait <message> from <process-name> send <message> to <mailbox> wait <message> from <mailbox> Naming asimmetrico: il receiver accetta da chiunque (processo o mailbox) wait <message> Esempio: client-server
4 Struttura dei messaggi Linguaggi: vari tipi di dati/oggetti Problema della conversione per trasmissione su network in ambiente eterogeneo OS consente l invio di vettori di bytes POSIX/Unix: code di messaggi POSIX/Unix; asynchronous, indirect message passing mediante code di messaggi Message queue: molti readers, molti writers Una Priority può essere associata alla coda Comunicazione fra processi (anzichè threads) POSIX Message Queues Unix Message passing Le code di messaggi (mq) hanno un nome quando vengono create Accesso: mq_open name mq_open: creazione oppure open di una coda già esistente Chiusura: mq_close e mq_unlink) Sending e receiving : mq_send e mq_receive Dati letti/scritti in un buffer di caratteri. Bounded buffer: se buffer pieno o vuoto: i processi sending/ receiving vengono bloccati ( se non si utilizza l attributo O_NONBLOCK) Non è specificato quale processo si risveglia ( se non si usa un opzione di priority scheduling) Operating Systems and 16Distributed Systems
5 Unix Message passing struct msgform long mtype; //tipo o destinazione messaggio char mtext[100]; //dati ; Esempio attacca una copia del messaggio puntato da msgp alla coda msqid. int msgsnd(int msqid, struct msgbuf *msgp, size_t msgsz, int msgflg); struct msgbuf long mtype; /* msg type > 0*/ char mtext[1];/* msg data */ ; int msqid = msgget(key_t key, int msgflg); legge un messaggio dalla coda msqid nel buffer msgbuf puntato da msgp argument, e rimuove il messaggio dalla coda. ssize_t msgrcv(int msqid, struct msgbuf *msgp, size_t msgsz, long msgtyp, int msgflg); ritorna l identificatore msqid della coda associata alla chiave key. int msgctl(int msqid, int cmd, struct msqid_ds *buf); struct msgbuf long mtype; /* msg type > 0*/ char mtext[1];/* msg data */ ; effettua l operazione specificata da cmd sulla coda msqid 17 int main (void) key_t ipckey; int mq_id; struct msgform mymsg; /* Genera la chiave ipc */ ipckey = ftok("/users/bebo", 42); printf("processo %d:la mia chiave e' %d\n", getpid(), ipckey); /* Prepara la message queue */ printf("processo %d: Creo coda messaggi\n", getpid()); mq_id = msgget(ipckey, IPC_CREAT 0666); printf("il Message identifier e' %d\n", mq_id); /* Invia il messaggio */ strcpy(mymsg.mtext, "Ciao, Ciao,\n"); /*Scrive testo del messaggio*/ mymsg.mtype = 1; msgsnd(mq_id, &mymsg, sizeof(mymsg), 0); /*Invia*/ Compile & run msgsimplecln.c + msgsimplesrv.c struct msgform long mtype; //tipo o destinazione messaggio char mtext[100]; //dati ; int main (void) key_t ipckey; int mq_id; struct msgform mymsg; int ricevuto; /* Genera la chiave ipc */ ipckey = ftok("/users/bebo", 42); printf("processo %d: i\n", getpid()); printf("la mia chiave e' %d\n", ipckey); /* Prepara la message queue */ mq_id = msgget(ipckey, 0); printf("il Message identifier e' %d\n", mq_id); /* Ricevo il messaggio */ ricevuto= msgrcv(mq_id, &mymsg, sizeof(mymsg), 0,0); /*Ricezione*/ printf("processo %d. Ricevuto messaggio: \n", getpid()); printf("%s (%d)\n", mymsg.mtext, ricevuto); Esempio: selezione dei messaggi int main() #define MSGKEY 75 #define SALUTO "Salutoni dal Server" int i, pid; struct msgform int msgid; long mtype; int numproc; char mtext[256]; msgid=msgget(msgkey,0777 IPC_CREAT); /* ottiene un descrittore per la messaggio; chiave KEY; coda nuova */ for (i=0; i<10 ; i++) /* per 10 volte... */ msgrcv(msgid,&messaggio,256,1,0); /* attendiamo che arrivi un messaggio che abbia tipo = 1, cioe' inviati dai nostri client */ pid = messaggio.numproc; /* assegno alla var pid il PID del processo mittente*/ printf("server: ricevo un messaggio dal processo n.%d: %s \n",pid,messaggio.mtext); messaggio.mtype=pid; /* settiamo a pid il tipo dei messaggi in modo che solo quel client riceva il messaggio che il server sta per inviare a lui */ sprintf(messaggio.mtext,"%s",saluto); messaggio.numproc=getpid(); msgsnd(msgid,&messaggio,256,0); /* spediamo il messaggio sulla coda contraddistinta da msgid. Questo messaggio ha mtype=al PID del processo client che aveva mandato al server un messaggio di tipo 1 */ msgctl(msgid, IPC_RMID, 0); /* elimina la coda */ Esempio: selezione dei messaggi #define MSGKEY 75 #define SALUTO "Salutoni dal Server" struct msgform main() long mtype; int numproc; char mtext[256]; struct msgform messaggio; messaggio; int msgid, pid; msgid=msgget(msgkey,0777); /* ottiene un descrittore per la chiave KEY */ pid=getpid(); /* assume il n. di PID di se stesso */ sprintf(messaggio.mtext,"%s",saluto); messaggio.mtype=1; /* per nostra convenzione settiamo a 1 il tipo dei messaggi */ messaggio.numproc=pid; msgsnd(msgid,&messaggio,256,0); /* spediamo il messaggio sulla coda contraddistinta da msgid */ msgrcv(msgid,&messaggio,256,pid,0); /* attendiamo che arrivi un messaggio che abbia tipo = pid, cioe' per noi */ printf("client: ricevo da processo n. %d:%s\n",messaggio.numproc,messaggio.mtext); Compile & run msgcln1.c + msgsrv1.c
6 Esempio (esercizio d esame) Esempio (esercizio d esame) Scrivere il codice di un client e di un server che, utilizzando il meccanismo IPC di scambio di messaggi, realizzino le seguenti funzionalità. - Il client presenta all'utente il seguente menù Scegli l'operazione: VISUALIZZAZIONE -> 1 ARCHIVIAZIONE -> 2 FINE OPERAZIONE -> 3 Qualora l'utente scelga le operazioni 1 o 2, il client richiede l'inserimento da tastiera dell'informazione da trattare (vedere esempio in Figura 1). Le operazioni 1 e 2 possono essere ripetute finchè non si sceglie l'operazione 3. - Il server esegue le transazioni richieste dall'utente: 1) Stampa a video l informazione ricevuta nel messaggio; 2) Memorizza l info ricevuta in un archivio di dati; 3) Termina tutte le operazioni. Per semplificare, si simuli l archiviazione con la funzione void simula_archiviazione(void) for(i=0; i<100;i++) printf("."); SERVER: creata la coda SERVER:Info ricevuta Ciao, prova trasmissione SERVER:Info ricevuta In archiviazione... Terminata archiviazione SERVER:Info ricevuta rimossa la coda CLIENT: collegato alla coda Scegli l'operazione: VISUALIZZAZIONE -> 1 ARCHIVIAZIONE -> 2 FINE OPERAZIONE -> 3 1 CLIENT: scrivi informazione.. Ciao, prova trasmissione Scegli l'operazione: VISUALIZZAZIONE -> 1 ARCHIVIAZIONE -> 2 FINE OPERAZIONE -> 3 2 CLIENT: scrivi informazione.. ciao prova archiviazione Scegli l'operazione: VISUALIZZAZIONE -> 1 ARCHIVIAZIONE -> 2 FINE OPERAZIONE -> 3 3 CLIENT: fine operazione Esempio (esercizio d esame) #define MSGKEY 50 #define MSGSIZE 50 struct msgformat long mtype; /*viene utilzzato per distinguere l'operazione associata al messaggio inviato dal client: 1, 2 o 3*/ char mtext[msgsize]; messaggio; Esempio (esercizio d esame) int main(void) int msgid; /* collegamento alla coda di messaggi */ msgid = msgget(msgkey, 0777 IPC_CREAT))<0) /*loop di servizio*/ for(;;) /*...*/ /*ricezione del messaggio inviato dal client*/ msgrcv(msgid, &messaggio, MSGSIZE, 0, 0); printf("\nserver:info ricevuta\n"); /*decodifica il codice operativo scritto dal CLIENT nel messaggio ovvero l'operazione richiesta*/ switch(messaggio.mtype) case 1: printf("\n %s\n", messaggio.mtext); break; case 2: simula_archiviazione(); break; case 3: msgctl(msgid, IPC_RMID, 0); exit(0); /*fine loop*/ server
7 Compile & run msgclient.c Esempio (esercizio d esame) int main(void) int msgid; int n; int scelta; /*variabile utilizzata per codificare l'operazione richiesta*/ /* collegamento alla coda di messaggi */ msgid = msgget(msgkey, 0777); /*loop di servizio*/ for(;;) scelta=3; /*di default termina le operazioni se non e' settato a 1 o 2 printf("scegli l'operazione:\n"); printf(" VISUALIZZAZIONE -> 1\n"); printf(" ARCHIVIAZIONE -> 2\n"); printf(" FINE OPERAZIONE -> 3\n"); scanf("%d", &scelta); if(scelta==1 scelta==2) /*...*/ messaggio.mtype = (long) scelta; printf("\nclient: scrivi informazione..\n"); if((n=read(0, messaggio.mtext,msgsize))>0) msgsnd(msgid, &messaggio, n, 0) else messaggio.mtype = 3; /*codifica messaggio di chiusura (una stringa vuota)*/ memset(messaggio.mtext, 0, MSGSIZE); msgsnd(msgid, &messaggio, n, 0); exit(0); /*end loop*/ + msgserver.c client Empty Pool Producer Consumer Full Pool 26 msgid1 struct msgformat long pid; char buf[bsize]; int occupied; int nextin, nextout; msg; Producer Consumer struct msgformat long pid; char buf[bsize]; int occupied; int nextin, nextout; msg; msgid
8 int main() char item[numitems]="e UN MONDO PICCOLO DOPO TUTTO."; // items to be put in buffer int i; pid_t pid; struct msqid_ds *buf; int msgid1, msgid2; if((msgid1=msgget(msgkey, 0777 IPC_CREAT))==-1) perror("error queue1"); if((msgid2=msgget(msgkey2, 0777 IPC_CREAT))==-1) perror("error queue2"); pid=getpid(); for(i=0;i<numitems;i++) // produce an item, one character from item[] if (item[i] == '\0') break; /* Quit if at end of string. */ //wait for an empty to arrive msgrcv(msgid1,&msg,sizeof(msg),0,0); printf("producer %d: message received from process %ld\n", pid, msg.pid); //construct a message to send msg.buf[msg.nextin++] = item[i]; //put new item in buffer msg.nextin %= BSIZE; msg.occupied++; msg.pid=pid; //send message msgsnd(msgid2,&msg,sizeof(msg),0); printf("producer %d: message sent \n", pid); msgctl(msgid1,ipc_rmid,buf); //remove queue1 msgctl(msgid2,ipc_rmid,buf); //remove queue2 29 int main() char item; int i; int msgid1, msgid2; pid_t pid; if((msgid1=msgget(msgkey, 0777))==-1) perror("errore coda1"); if((msgid2 = msgget(msgkey2, 0777))==-1) perror("errore coda2"); pid=getpid(); //construct an empty message to send msg.nextout = 0; msg.occupied = 0; msg.pid=pid; msgsnd(msgid1,&msg,sizeof(msg),0); printf("consumer %d: empty message sent \n",pid); for(i=0;i<numitems;i++) // //get message containing item msgrcv(msgid2,&msg,sizeof(msg),0,0); printf("consumer %d: message received from process %ld\n",pid, msg.pid); //extract item from message item = msg.buf[msg.nextout++]; //take item from buffer msg.nextout %= BSIZE; msg.occupied--; //send message msg.pid=pid; msgsnd(msgid1,&msg,sizeof(msg),0); printf("consumer %d: message sent \n",pid); printf("%c\n",item); //prints the item 30 Compile and run msgproducer.c and msgconsumer.c 31
Inter-Process Communication
Inter-Process Communication (IPC) IPCS 1 1. Code di messaggi 2. Semafori 3. Memoria condivisa send receive 2? 3 p1 p3 p2 CODE DI MESSAGGI Modello di Comunicazione Code di Messaggi Il processo ricevente
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
DettagliCorso di Sistemi Operativi
Corso di Sistemi Operativi Comunicazione tra processi (IPC) a.a. 2012/2013 Francesco Fontanella Comunicazione tra processi I processi in esecuzione concorrente possono essere indipendenti o cooperanti.
DettagliEsempio. chan request = [0] of { byte }; active proctype Server() { byte client; end: do :: request? client -> printf("client %d\n", client); od }
Canali in Promela Sistemi distribuiti un sistema distribuito è costituito da un insieme di processi e un insieme di canali di comunicazione ogni processo rappresenta un nodo di computazione del sistema
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
DettagliSistemi Operativi. Lez. 13: primitive per la concorrenza monitor e messaggi
Sistemi Operativi Lez. 13: primitive per la concorrenza monitor e messaggi Osservazioni I semafori sono strumenti particolarmente potenti poiché consentono di risolvere ogni problema di sincronizzazione
DettagliInter Process Communication. Laboratorio Software 2008-2009 C. Brandolese
Inter Process Communication Laboratorio Software 2008-2009 C. Brandolese Introduzione Più processi o thread Concorrono alla relaizzazione di una funzione applicativa Devono poter realizzare Sincronizzazione
DettagliIL CONCETTO DI FILE. È illecito operare oltre la fine del file.
IL CONCETTO DI FILE Un file è una astrazione fornita dal sistema operativo, il cui scopo è consentire la memorizzazione di informazioni su memoria di massa. Concettualmente, un file è una sequenza di registrazioni
DettagliSistemi Operativi (modulo di Informatica II) La comunicazione tra processi
Sistemi Operativi (modulo di Informatica II) La comunicazione tra processi Patrizia Scandurra Università degli Studi di Bergamo a.a. 2009-10 Sommario Processi cooperanti La comunicazione tra processi Necessità
DettagliComputazione multi-processo. Condivisione, Comunicazione e Sincronizzazione dei Processi. Segnali. Processi e Threads Pt. 2
Computazione multi-processo Avere più processi allo stesso momento implica/richiede Processi e Threads Pt. 2 Concorrenza ed efficienza Indipendenza e protezione dei dati ma deve prevedere/permettere anche:
DettagliCREAZIONE PROCESSI IN UNIX 20
CREAZIONE PROCESSI IN UNIX 20 STRUTTURE DATI PER PROCESSI Un processo puo' essere in escuzione in 2 modi: kernel e utente. Un processo ha almeno 3 regioni: codice, dati e stack Lo stack è allocato dinamicamente.
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
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 -
DettagliInter-Process Communication
Inter-Process Communication C. Baroglio a.a. 2002-2003 1 Introduzione In Unix i processi possono essere sincronizzati utilizzando strutture dati speciali, appartenti al pacchetto IPC (inter-process communication).
DettagliSommario. G. Piscitelli
Sommario Interprocess Communication Processi (e thread) cooperanti Il paradigma produttore-consumatore Shared Memory e Inter Process Communication (IPC) facility Proprietà caratteristiche della comunicazione
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
DettagliChiamate di sistema per la Inter Process Communication (IPC) in POSIX. E.Mumolo, DEEI mumolo@units.it
Chiamate di sistema per la Inter Process Communication (IPC) in POSIX E.Mumolo, DEEI mumolo@units.it Pipe Cos'è un pipe? E' un canale di comunicazione che unisce due processi Caratteristiche: La più vecchia
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
DettagliSistemi Operativi (modulo di Informatica II)
Sistemi Operativi (modulo di Informatica II) La comunicazione tra processi Patrizia Scandurra Università degli Studi di Bergamo a.a. 2008-09 Sommario Processi cooperanti La comunicazione tra processi Necessità
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
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 -
DettagliAppunti di Sistemi Operativi, Processi e Segnali.
Appunti di Sistemi Operativi, Processi e Segnali. 1 Sistemi Operativi L'evoluzione continua degli elaboratori in termini di velocità, capacità di calcolo e di interconnessione non è accompagnata da un
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
DettagliCORSO DI SISTEMI OPERATIVI A - ESERCITAZIONE 3
UNIVERSITÀ DEGLI STUDI DI PARMA Facoltà di Ingegneria Corso di Laurea in Ingegneria Elettronica-Informatica-Telecomunicazioni a.a. 2001-2002 CORSO DI SISTEMI OPERATIVI A - ESERCITAZIONE 3 1 Trasferimento
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
DettagliMODELLO AD AMBIENTE GLOBALE
MODELLI DI INTERAZIONE TRA PROCESSI Modello ad ambiente globale ( global environment ) Modello a scambio di messaggi ( message passing ) MODELLO AD AMBIENTE GLOBALE Il sistema è visto come un insieme di
DettagliEsempio produttori consumatori. Primitive asincrone
Primitive asincrone Send non bloccante: il processo mittente, non appena inviato il messaggio, prosegue la sua esecuzione. Il supporto a tempo di esecuzione deve fornire un meccanismo di accodamento dei
DettagliLinguaggio C - Funzioni
Linguaggio C - Funzioni Funzioni: Il linguaggio C è di tipo procedurale; ogni programma viene suddiviso in sottoprogrammi, ognuno dei quali svolge un determinato compito. I sottoprogrammi si usano anche
DettagliCORSO DI SISTEMI OPERATIVI A - ESERCITAZIONE 3. 1 strace : visualizzazione delle system call invocate da un processo
UNIVERSITÀ DEGLI STUDI DI PARMA Facoltà di Ingegneria Corso di Laurea in Ingegneria Informatica a.a. 2005-2006 CORSO DI SISTEMI OPERATIVI A - ESERCITAZIONE 3 1 strace : visualizzazione delle system call
DettagliGestione di files Motivazioni
Gestione di files Motivazioni Un programma in esecuzione legge (sequenzialmente) una sequenza di caratteri prodotti "al volo" dall'utente (tramite tastiera) il programma in esecuzione scrive (sequenzialmente)
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
DettagliCaratteri e stringhe Esercizi risolti
Esercizi risolti 1 Esercizio: Conta vocali e consonanti Scrivere un programma in linguaggio C che legga una frase introdotta da tastiera. La frase è terminata dall introduzione del carattere di invio.
DettagliSystem call fcntl e record locking
System call fcntl e record locking Esempio: prenotazione di voli aerei La compagnia ACME Airlines usa un sistema di prenotazione dei voli basato su unix. Possiede due uffici per la prenotazione, A e B,
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
DettagliEsercitazione. Formato di compitini e compiti: domande ed esercizi "closed book" G. Ferrari - Reti di calcolatori.
Esercitazione Formato di compitini e compiti: domande ed esercizi "closed book" Esercitazione - 1 Domanda 1 In una comunicazione di rete tra due host, quale è il client e quale è il server. Necessario:
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
DettagliProcessi in Linux. Stru/ura file eseguibili
SISTEMI OPERATIVI Processi in Linux Stru/ura file eseguibili» ELF - Executable and Linking Format formato di default degli eseguibili in Linux definizione nel file include » StruGura un header contenente
DettagliModello a scambio di messaggi
PRIMITIVE PER LO SCAMBIO DI MESSAGGI Un messaggio si può considerare costituito da: origine, destinazione e contenuto Modello a scambio di messaggi type messaggio = record origine: ; destinazione: ; contenuto:
DettagliRelazione tra thread e processi
I Thread POSIX Relazione tra modello a processi e a thread Creazione di un thread Attesa Distacco Terminazione Ricerca e confronto Inizializzazione dinamica Relazione tra thread e processi Nel modello
DettagliPosix Threads: l evoluzione dei processi UNIX
Posix Threads: l evoluzione dei processi UNIX Raffaele Quitadamo, PhD in Computer Science Università di Modena e Reggio Emilia quitadamo.raffaele@unimore.it Sommario Pthreads vs Unix processes L API per
DettagliJava Virtual Machine
Java Virtual Machine programmi sorgente: files.java compilatore files.class bytecode linker/loader bytecode bytecode Java API files.class interprete macchina ospite Indipendenza di java dalla macchina
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
Dettagli2.5. L'indirizzo IP identifica il computer di origine, il numero di porta invece identifica il processo di origine.
ESERCIZIARIO Risposte ai quesiti: 2.1 Non sono necessarie modifiche. Il nuovo protocollo utilizzerà i servizi forniti da uno dei protocolli di livello trasporto. 2.2 Il server deve essere sempre in esecuzione
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
DettagliInterprocess Communications - II. Franco Maria Nardini
Interprocess Communications - II Franco Maria Nardini XSI IPC Tre tipi di IPC introdotti da System V: semafori shared memory code di messaggi Comunicazioni tra processi su stesso host Tutte consentono
Dettagli4. Un ambiente di sviluppo per Java
pag.15 4. Un ambiente di sviluppo per Java Esistono in commercio molti ambienti di sviluppo utilizzati dai programmatori Java, in particolare si tratta di editor complessi che mettono a disposizione tools
DettagliParte 2: Gestione dei Processi. 4.1 Concetto di Processo. 4.1.2 Stato del processo
Parte 2: Gestione dei Processi 1 Il processo è l unità di lavoro nella maggior parte dei sistemi operativi. È quindi il centro di tutta la teoria dei Sistemi Operativi Il sistema operativo è responsabile
DettagliComunicazione. La comunicazione point to point e' la funzionalita' di comunicazione fondamentale disponibile in MPI
Comunicazione La comunicazione point to point e' la funzionalita' di comunicazione fondamentale disponibile in MPI Concettualmente la comunicazione point to point e' molto semplice: Un processo invia un
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
DettagliCorso di Laboratorio di Sistemi Operativi
Corso di Laboratorio di Sistemi Operativi Lezione 6 Alessandro Dal Palù email: alessandro.dalpalu@unipr.it web: www.unipr.it/~dalpalu Interazione tra Processi I processi concorrenti possono interagire
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,
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
DettagliCosa e un processo? Stato del processo
Cosa e un processo? LABORATORIO DI PROGRAMMAZIONE 2 Corso di laurea in matematica Un sistema operativo esegue programmi di varia natura: Compilatori, word processor, programmi utente, programmi di sistema,
DettagliAppunti tratti dal videocorso on-line di Algoritmi e Programmazione Avanzata By ALeXio
Appunti tratti dal videocorso on-line di Algoritmi e Programmazione Avanzata By ALeXio 1-La memoria dinamica La scrittura di un programma (indipendentemente dal linguaggio adottato) deve sempre tener conto
DettagliGestione delle stringhe in C
Gestione delle stringhe in C 1 Generalità Una stringa è un vettore di caratteri il cui ultimo elemento è un carattere terminatore (o di fine stringa), codificato dal carattere di codice 0 e rappresentato
Dettagli3. Terza esercitazione autoguidata: progetto gestione voli
9 3. Terza esercitazione autoguidata: progetto gestione voli Qui ci occupiamo di scrivere un programma abbastanza lungo, dedicato alla gestione di una tabella di dati. Una tabella e una struttura dati
DettagliEsercizi di programmazione in C
Esercizi di programmazione in C Esercizio 1 Scrivere un programma in linguaggio C che legga da tastiera una sequenza di lunghezza ignota a priori di numeri interi positivi. Il programma, a partire dal
DettagliTerza Esercitazione. Unix - Esercizio 1. Unix System Call Exec Java Introduzione Thread
Terza Esercitazione Unix System Call Exec Java Introduzione Thread Stefano Monti smonti@deis.unibo.it Unix - Esercizio 1 Scrivere un programma C con la seguente interfaccia:./compilaedesegui
DettagliLinguaggio C. Fondamenti. Struttura di un programma.
Linguaggio C Fondamenti. Struttura di un programma. 1 La storia del Linguaggio C La nascita del linguaggio C fu dovuta all esigenza di disporre di un Linguaggio ad alto livello adatto alla realizzazione
DettagliInterazione (TCP) Client-Server con le socket
Interazione (TCP) Client-Server con le socket D. Gendarmi Interazione TCP Client/Server Server 2. Assegnare un local address alla socket 3. Settare la socket all ascolto 4. Iterativamente: a. Accettare
DettagliI puntatori e l allocazione dinamica di memoria
I puntatori e l allocazione dinamica di memoria L allocazione delle variabili Allocazione e rilascio espliciti di memoria Le funzioni malloc e free 2 2006 Politecnico di Torino 1 Allocare = collocare in
DettagliZZZ01 Esercizi Vari. Esercizi per preparazione alla prova pratica di laboratorio
ZZZ01 Esercizi Vari Esercizi per preparazione alla prova pratica di laboratorio Esercizio ZZZ01_01 - Elefanti Schizzinosi Nella savana africana c'e' una pozza d'acqua fresca alimentata da un acquedotto.
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
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
DettagliCorso di Linguaggi di Programmazione
Corso di Linguaggi di Programmazione Lezione 19 Alberto Ceselli alberto.ceselli@unimi.it Dipartimento di Tecnologie dell Informazione Università degli Studi di Milano 18 Maggio 2010 idea: sfruttare i
DettagliSistemi Operativi. ugoerr+so@dia.unisa.it 3 LEZIONE PROCESSI CORSO DI LAUREA TRIENNALE IN INFORMATICA. Sistemi Operativi 2007/08
Sistemi Operativi Docente: Ugo Erra ugoerr+so@dia.unisa.it 3 LEZIONE PROCESSI CORSO DI LAUREA TRIENNALE IN INFORMATICA UNIVERSITA DEGLI STUDI DELLA BASILICATA Sommario della lezione Concetto di processo
DettagliInformatica B. Sezione D. Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica
Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica Dipartimento di Elettronica, Informazione e Bioingegneria Informatica B Sezione D Franchi Alessio Mauro,
Dettagli2. I THREAD. 2.1 Introduzione
2. I THREAD 2.1 Introduzione Il tipo di parallelismo che è opportuno avere a disposizione nelle applicazioni varia in base al grado di cooperazione necessaria tra le diverse attività svolte in parallelo:
DettagliSOLUZIONE ESERCIZIO 1
SOLUZIONE ESERCIZIO 1 Progettare un algoritmo che dati tre numeri (voti) a, b, c che possono assumere i valori interi da 18 a 30, calcoli la loro media. #include void main() { int a, b, c; float
DettagliUna prima applicazione in C per l utilizzo delle socket
Una prima applicazione in C per l utilizzo delle socket Richiamo sulle socket Socket in Windows (WinSock) Differenze tra sistemi operativi D. Gendarmi Socket API API: Application Programming Interface
Dettagli/*dichiarazioni*/ // le frasi sono contenute in stringhe, cioè array di char char f1[max]; int i, giusto,len;
/* Date in ingresso una frase, dire se una è palindroma */ #include #define MAX 100 int main() /*dichiarazioni*/ // le frasi sono contenute in stringhe, cioè array di char char f1[max]; int i,
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
DettagliFondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main
Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main Paolo Torroni Dipartimento di Elettronica, Informatica e Sistemistica Università degli
DettagliStruttura di un sistema operativo. Struttura dei Sistemi Operativi. Servizi per l utente generico. Servizi per l utente generico
Impossibile visualizzare l'immagine. Struttura di un sistema operativo Struttura dei Sistemi Operativi Servizi di un sistema operativo Interfaccia Utente Capitolo 2 -- Silberschatz Chiamate di sistema
DettagliCapitolo 2 -- Silberschatz
Struttura dei Sistemi Operativi Capitolo 2 -- Silberschatz Struttura di un sistema operativo Servizi di un sistema operativo Interfaccia Utente Chiamate di sistema Tipi di chiamate Programma di sistema
DettagliIntroduzione al linguaggio C Gli array
Introduzione al linguaggio C Gli array Vettori nome del vettore (tutti gli elementi hanno lo stesso nome, c) Vettore (Array) Gruppo di posizioni (o locazioni di memoria) consecutive Hanno lo stesso nome
DettagliJava RMI: Esempio Completo di un Applicazione Distribuita
Java RMI: Esempio Completo di un Applicazione Distribuita Il Problema Produttore/Consumatore in Ambiente Distribuito* *a cura del Prof. L. Nigro, Università della Calabria Java RMI (Remote Method Invocation)
Dettagli2. Spiegare brevemente qual è la funzione del compilatore e la sua importanza per il programmatore.
1 Esercizio 1 1. Immaginate di avere una calcolatore che invece che poter rappresentare i classici due valori per ogni bit (0/1) possa rappresentare 7 valori per ogni bit. (a) Quanti bit gli occorreranno
DettagliMAGAZZINO.CPP January 2, 2008 Page 1
MAGAZZINO.CPP January 2, 2008 Page 1 1 #include 2 #include 3 #include 4 // ==================================================================== 5 // Versione 1.1 1/1/2008
DettagliProgrammazione Orientata agli Oggetti in Linguaggio Java
Programmazione Orientata agli Oggetti in Linguaggio Java Classi e Oggetti: Metafora Parte a versione 2.2 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)
DettagliEsercitazioni 7 e 8. Bounded Buffer con sincronizzazione Java (1)
Università degli Studi della Calabria Corso di Laurea in Ingegneria Informatica A.A. 2001/2002 Corsi A e B Esercitazioni 7 e 8 Bounded Buffer con sincronizzazione Java (1) public class BoundedBuffer private
DettagliSistemi Operativi (M. Cesati)
Sistemi Operativi (M. Cesati) Compito scritto del 16 luglio 2015 Nome: Matricola: Corso di laurea: Cognome: Crediti da conseguire: 5 6 9 Scrivere i dati richiesti in stampatello. Al termine consegnare
DettagliMiddleware Laboratory. Dai sistemi concorrenti ai sistemi distribuiti
Dai sistemi concorrenti ai sistemi distribuiti Problemi nei sistemi concorrenti e distribuiti I sistemi concorrenti e distribuiti hanno in comune l ovvio problema di coordinare le varie attività dei differenti
Dettagli7 Esercitazione (svolta): Callback. Polling. Java RMI: callback. Server. Server. Client. Client. due possibilità:
7 Esercitazione (svolta): due possibilità: Java RMI: callback Molte applicazioni richiedono un meccanismo publish/subscribe I partecipanti (client) necessitano di notifiche da parte del coordinatore (server)
DettagliLa gestione dei processi in Minix
La gestione dei processi in Minix Sistemi Operativi Lez. 28 Scheduling Round robin su 16 code di priorità Quando un processo viene bloccato senza aver esaurito il suo quanto di tempo, una volta risvegliato,
DettagliIntroduzione ai Device Drivers in Linux. E.Mumolo, DEEI mumolo@units.it
Introduzione ai Device Drivers in Linux E.Mumolo, DEEI mumolo@units.it 1 Device Drivers Moduli software che gestiscono le periferiche attraverso il file system Tutte le periferiche sono viste come file
DettagliSISTEMI OPERATIVI. Sincronizzazione dei processi. Domande di verifica. Luca Orrù Centro Multimediale Montiferru 30/05/2007
2007 SISTEMI OPERATIVI Sincronizzazione dei processi Domande di verifica Luca Orrù Centro Multimediale Montiferru 30/05/2007 Sincronizzazione dei processi 1. Si descrivano i tipi di interazione tra processi?
Dettaglicostruttori e distruttori
costruttori e distruttori Costruttore E un metodo che ha lo stesso nome della classe a cui appartiene: serve per inizializzare un oggetto all atto della sua creazione Ce ne possono essere uno, più di uno,
DettagliLe command line di Java
Le command line di Java Esercitazioni di Programmazione 2 Novella Brugnolli brugnoll@science.unitn.it Ambiente di lavoro Per compilare ed eseguire un programma Java abbiamo bisogno di: The JavaTM 2 Platform,
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
DettagliIntroduzione a GCC: GNU Compiler Collection
Introduzione a GCC: GNU Compiler Collection Caratteristiche di GCC Compilatore multipiattaforma modulare Disponibile per tutti i principali sistemi operativi Può produrre programmi per la maggior parte
DettagliLaboratorio di Programmazione in Rete
Laboratorio di rogrammazione in Rete a.a. 2005/2006 http://www.di.uniba.it/~lisi/courses/prog-rete/prog-rete0506.htm dott.ssa Francesca A. Lisi lisi@di.uniba.it Orario di ricevimento: mercoledì ore 10-12
Dettaglicorso di Sistemi Distribuiti 4. IPC (Inter Process Communication) (parte 1): le forme ed i modelli della comunicazione tra processi
CdL MAGISTRALE in INFORMATICA A.A. 2014-2015 corso di Sistemi Distribuiti 4. IPC (Inter Process Communication) (parte 1): le forme ed i modelli della comunicazione tra processi Prof. S.Pizzutilo Elementi
DettagliConcetti chiave. Struct. Variabili strutturate: il tipo struct Elementi di una struttura typedef e struct Array di strutture
Concetti chiave Struct Variabili strutturate: il tipo struct Elementi di una struttura typedef e struct Array di strutture Struct Per aggregare elementi di tipo diverso si utilizza una struttura. struct
DettagliCAPITOLO 7 - SCAMBIO DI MESSAGGI
CAPITOLO 7 - SCAMBIO DI MESSAGGI Lo scambio di messaggi è una forma di comunicazione nel quale un processo richiede al sistema operativo di mandare dei dati direttamente ad un altro processo. In alcuni
DettagliProcessi e thread. Dipartimento di Informatica Università di Verona, Italy. Sommario
Processi e thread Dipartimento di Informatica Università di Verona, Italy Sommario Concetto di processo Stati di un processo Operazioni e relazioni tra processi Concetto di thread Gestione dei processi
DettagliSocket. Nei sistemi operativi moderni i servizi disponibili in rete si basano principalmente sul modello client/server.
Socket Nei sistemi operativi moderni i servizi disponibili in rete si basano principalmente sul modello client/server. Tale architettura consente ai sistemi di condividere risorse e cooperare per il raggiungimento
DettagliGli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori
Gli array Array e puntatori Laboratorio di Informatica I un array è un insieme di elementi (valori) avente le seguenti caratteristiche: - un array è ordinato: agli elementi dell array è assegnato un ordine
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
DettagliAppunti del corso di Informatica 1. 6 Introduzione al linguaggio C
Università di Roma Tre Dipartimento di Matematica e Fisica Corso di Laurea in Matematica Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C Marco Liverani (liverani@mat.uniroma3.it)
Dettagli