Laboratorio di Sistemi Operativi

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Laboratorio di Sistemi Operativi"

Transcript

1 Laboratorio di Sistemi Operativi LAB6 System call per gestione IPC (Inter Process Communication) 2002/2003 Pagani Trentini Slide 1 Agenda Linux gestione segnali ; kill ; alarm ; pause ; read ; write ; close ; pipe ; fifo (cenni) Windows messages (cenni) ; anonymous pipe ; ReadFile ; WriteFile ; named pipe (cenni) 2002/2003 Pagani Trentini Slide 2

2 Linux 2002/2003 Pagani Trentini Slide 3 gestione dei segnali UNIX rende possibile mandare dei messaggi asincroni ai processi, per la notifica di eventi possono essere generati dal sistema in maniera automatica (e.g. per segnalare la morte di un processo figlio) generati dal sistema ma su richiesta dell utente (allarmi temporizzati) scambiati tra processi utente per notificare eventi 2002/2003 Pagani Trentini Slide 4

3 gestione dei segnali predefiniti tipi di segnali, e azioni di default da compiere per gestirli un proc puo mandare segnali solo ad altri procs con lo stesso UID; root puo mandare segnali a qualunque proc per alcuni segnali, un proc puo (anticipatamente) indicare una routine (handler) diversa da quella di default per la loro gestione 2002/2003 Pagani Trentini Slide 5 SIGHUP SIGINT SIGKILL SIGALRM SIGTERM SIGSTOP SIGTSTP SIGCONT SIGCHLD tipi di segnali segnale di reset di linea (forza la rilettura di una configurazione) terminazione del processo terminazione del processo segnalazione temporizzata real time terminazione software del processo sospensione del job sospensione del job il job riprende ad essere eseguito lo stato di un processo figlio cambiato gestibile? SI NO SI SI SI SI NO NO SI SIGUSR1/2 non gestiti da sistema, sono a disposizione del programmatore SI 2002/2003 Pagani Trentini Slide 6

4 void (*signal(int signum, void (*handler)(int)))(int); serve per indicare a s.o. qual e la funzione handler del segnale specificato, in sostituzione dello handler di default memorizza info in u area eventualmente indica segnale da ignorare (SIG_IGN) NON serve per mandare segnali il proc NON si blocca in attesa del segnale torna 0 se ha successo, 1 altrimenti 2002/2003 Pagani Trentini Slide 7 #include <signal.h> #include <sys/types.h> int handler() int retcode; printf("signal received\n"); signal(sigusr1, handler); main(int argc, char ** argv) printf("my pid is %d\n", getpid()); signal(sigusr1, handler); signal(sigusr2, SIG_IGN); while(1) sleep(60); File signal.c // ATTENZIONE! Handler da ripristinare! N.B. per provare questo esempio, mandarlo in esecuzione in background e inviare quindi segnali di USR1, USR2 o terminazione con la kill. Esempio: kill USR1 <PID processo> Il PID viene stampato a inizio esecuzione. 2002/2003 Pagani Trentini Slide 8

5 int kill(pid_t pid, int sig) serve per inviare il segnale indicato al proc con PID indicato se pid = 0 : segnale inviato a tutti i procs nello stesso gruppo del chiamante se pid = 1 e invocata da superuser: segnale inviato a tutti i processi se pid = 1 e non invocata da superuser: segnale inviato a tutti i procs con UID uguale a EUID chiamante torna 0 se ha successo e 1 altrimenti 2002/2003 Pagani Trentini Slide 9 #include <stdio.h> #include <signal.h> #include <sys/types.h> #include <sys/wait.h> File kill1.c int handler(void) int retcode; printf("signal received\n"); signal(sigusr1, (sig_t) handler); main(int argc, char **argv) int retcode; int pid; pid = fork(); 2002/2003 Pagani Trentini Slide 10

6 if (!pid) printf("child pid is %d\n", getpid()); signal(sigusr1, (sig_t) handler); signal(sigusr2, (sig_t) SIG_IGN); while(1) sleep(60); sleep(1); printf("father pid is %d\n", getpid()); while(1) sleep(10); kill(pid, SIGUSR1); 2002/2003 Pagani Trentini Slide 11 unsigned int alarm(unsigned int seconds) serve per mandare al processo stesso un segnale SIGALRM dopo il tempo indicato e una sorta di timer sovrascrive allarmi precedenti torna il #sec che mancava allo scadere dell allarme precedente (o 0) se ha successo, 1 altrimenti alarm(0) annulla gli allarmi creati in precedenza 2002/2003 Pagani Trentini Slide 12

7 #include <stdio.h> #include <signal.h> #include <unistd.h> typedef void (*sig_t) (int); int handler(void) static int counter = 0; counter += 1; printf("%d seconds passed\n", counter); signal(sigalrm, (sig_t) handler); alarm(1); main(int argc, char **argv) signal(sigalrm, (sig_t) handler); alarm(1); while(1) sleep(60); File alarm.c 2002/2003 Pagani Trentini Slide 13 int pause(void) sospende il chiamante in attesa dell arrivo di un segnale qualsiasi quando segnale e ricevuto, il controllo passa al relativo signal handler, e poi all istruzione successiva a pause() torna sempre 1 puo servire per sincronizzazione tra processi o gestione timer in proc (con alarm() ) 2002/2003 Pagani Trentini Slide 14

8 #include <stdio.h> #include <signal.h> #include <unistd.h> int handler() static int counter = 0; File pause.c counter += 1; printf("%d seconds passed\n", counter); signal(sigalrm, handler); main(int argc, char **argv) signal(sigalrm, handler); while(1) alarm(1); pause(); 2002/2003 Pagani Trentini Slide 15 pid_t wait(int *status) a terminazione proc, s.o. invia SIGCLD a padre padre puo definire handler (asynch), oppure sospendersi in attesa della terminazione del figlio "The wait() function suspends execution of its calling process until status information is available for a terminated child process, or a signal is received. On return from a successful wait() call, the status area contains termination information about the process that exited." torna pid del figlio, o 1 in caso di errore anche waitpid() per attesa terminazione specifico figlio 2002/2003 Pagani Trentini Slide 16

9 #include <stdio.h> #include <sys/types.h> File wait.c #include <sys/wait.h> main(int argc,char ** argv) int retcode, pid; if (!fork()) printf("child pid is %d\n", getpid()); sleep(10); exit(8); sleep(1); printf("father pid is %d\n", getpid()); pid = wait(&retcode); if (pid == 1) perror("wait"); printf("signal received\n Child pid was %d\n", pid); printf("exit code was %d\n", WEXITSTATUS(retcode)); 2002/2003 Pagani Trentini Slide 17 pipe una pipe e un canale di comunicazione FIFO unidirezionale tra processi imparentati un proc scrive ad una estremita del canale; l altro processo legge dall altra estremita comunicazione asincrona: buffer associato alla pipe e implementato come un file senza nome le due estremita accedute tramite due descrittori di file letture e scritture sono eseguite con le stesse syscall usate per i file 2002/2003 Pagani Trentini Slide 18

10 int pipe(int filedes[2]) inizializza i due descrittori associati alla pipe la creazione va fatta prima di generare i discendenti che condividono la pipe dato che e file anonimo, condivisione possibile solo attraverso eredita descrittori... [recall fork()] parametro e array di due descrittori per convenzione: descrittore [0] per input (lettura); descrittore [1] per output (scrittura) torna 0 se ha successo e 1 altrimenti 2002/2003 Pagani Trentini Slide 19 ssize_t read(int fd, void *buf, size_t count) legge caratteri dal file descriptor fd in numero di count, e li mette nell array allocato all indirizzo *buf rende il numero di caratteri effettivamente letti, oppure 1 in caso di errore se e arrivato a EOF, torna 0 se legge da pipe e non ci sono caratteri, si blocca in attesa 2002/2003 Pagani Trentini Slide 20

11 ssize_t write(int fd, const void *buf, size_t count) scrive sul file indicato dal descrittore fd dei caratteri contenuti nell array allocato all indirizzo *buf, in numero di count rende il numero di caratteri effettivamente scritti o 1 in caso di errore se scrive su pipe e non c e piu spazio buffer, si arresta in attesa di disponibilita se proc reader e terminato, il chiamante termina con errore di Broken pipe 2002/2003 Pagani Trentini Slide 21 int close(int fd) chiude il descrittore e rilascia strutture dati torna 0 se ha successo e 1 altrimenti NB: chiusura descrittori inutili e buona pratica di programmazione evita condivisione indesiderata tra procs imparentati libera spazio nelle tabelle (file descriptor table, file table) per l allocazione di nuovi descrittori 2002/2003 Pagani Trentini Slide 22

12 #include <stdio.h> #include <unistd.h> File pipe.c main(int argc, char **argv) int pipestub[2]; int counter; char buffer[10]; if (pipe(pipestub) == 1) perror("pipe"); 2002/2003 Pagani Trentini Slide 23 if (!fork()) close(pipestub[1]); while(1) read(pipestub[0], buffer, 1); printf("%c(%x):", *buffer, *buffer); else close(pipestub[0]); while (1) counter = read(0, buffer, 10); write(pipestub[1], buffer, counter); 2002/2003 Pagani Trentini Slide 24

13 Windows 2002/2003 Pagani Trentini Slide 25 Strumenti di IPC thread nello stesso proc possono facilmente scambiare info, poiche accedono alle medesime risorse per thread in processi differenti: messaggi: specialmente per applic. grafiche pipe anonime: simili a Unix pipe pipe con nome: anche per comunicazione in rete 2002/2003 Pagani Trentini Slide 26

14 messaggi sono diretti a una window, piuttosto che ad uno specifico thread (ricevuto dal thread che ha creato la window) gestiti via struttura THREADINFO che include code di messaggi PostMessage: messaggio e aggiunto in coda e controllo torna immediatamente a chiamante (asincrono) SendMessage: msg e aggiunto in coda, ma chiamante e bloccato finche msg non e prelevato dalla coda (sincrono) ReplyMessage: usato per notificare ricezione msg al sender (e.g. se receiver prevede di essere lento a gestirlo) 2002/2003 Pagani Trentini Slide 27 pipe anonime passaggio info tra gli spazi di indirizzamento di processi diverse, implementato via shared memory canali anonimi unidirezionali per comunicazione tra procs (in genere imparentati) sullo stesso host procs leggono da/scrivono su pipe come da/su file usando relativi handle pipe distrutta quando tutti gli handle sono stati chiusi (CloseHandle) 2002/2003 Pagani Trentini Slide 28

15 CreatePipe BOOL CreatePipe( PHANDLE hreadpipe, // ptr a handle per lettura PHANDLE hwritepipe, // ptr a handle per scrittura LPSECURITY_ATTRIBUTES lppipeattributes, DWORD nsize // #bytes = taglia buffer associato ); se nsize=0 e usata taglia di default torna 0 se fallisce, non zero altrimenti 2002/2003 Pagani Trentini Slide 29 ReadFile BOOL ReadFile ( HANDLE hfile, // handle a file da leggere LPVOID lpbuffer, // ptr a buffer in cui porre dati letti DWORD nnumberofbytestoread, // #bytes da leggere LPDWORD lpnumberofbytesread, // ptr a #bytes letti LPOVERLAPPED lpoverlapped // per pipe deve essere NULL ); torna quando qualcuno ha scritto o se tutti i write handle sono stati chiusi torna 0 se fallisce, non zero altrimenti 2002/2003 Pagani Trentini Slide 30

16 WriteFile BOOL WriteFile ( HANDLE hfile, // handle a file da scrivere LPCVOID lpbuffer, // ptr a buffer da cui prendere dati DWORD nnumberofbytestowrite, // #bytes da scrivere LPDWORD lpnumberofbyteswritten, // ptr a #bytes scritti LPOVERLAPPED lpoverlapped // per pipe deve essere NULL ); se buffer pipe pieno, Write termina quando si crea spazio a sufficienza in seguito a una Read torna 0 se fallisce, non zero altrimenti 2002/2003 Pagani Trentini Slide 31 condivisione handle a pipe dato che pipe e anonima, tutti i procs che vogliono usarla devono conoscerne gli handle generalmente ottenuto via inheritance. ES: padre crea la pipe padre crea figlio I rendendo lo handle di scrittura ereditabile e redireziona stdout figlio su pipe padre crea figlio II rendendo lo handle di lettura ereditabile e redireziona stdin figlio da pipe I P II stdin stdout pipe stdin stdout 2002/2003 Pagani Trentini Slide 32

17 esempio uso pipe in Win struttura sistema e step: padre crea pipe anonima padre crea figlio che eredita Read Handle della pipe padre legge da stdin e scrive su pipe; figlio legge da pipe e scrive su stdout funzioni principali CreateChildProcess : crea figlio che eredita gli handle del padre WriteToPipe: legge da stdin e scrive su pipe, con opportuno controllo errori ErrorExit: stampa errore e termina processo 2002/2003 Pagani Trentini Slide 33 API e strutture usate nell esempio SECURITY_ATTRIBUTES: contiene info di sicurezza per l accesso a un oggetto e specifica se lo handle ottenuto specificando questo oggetto e ereditabile GetStdHandle: recupera handle per stdin, stdout o stderr SetStdHandle: fa set handle per stdin, stdout o stderr DuplicateHandle: duplica handle proc sorgente in handle proc destinatario, specificando se e inheritable ZeroMemory: riempie un blocco di memoria di /2003 Pagani Trentini Slide 34

18 #include "stdafx.h" #include <stdio.h> #include <windows.h> File WpipePadre.cpp #define BUFSIZE 10 HANDLE hchildstdinrd, hchildstdinwr, hchildstdinwrdup, hchildstdoutrd, hchildstdoutwr, hchildstdoutrddup, hinputfile, hsavestdin, hsavestdout; BOOL CreateChildProcess(VOID); VOID WriteToPipe(VOID); VOID ErrorExit(LPTSTR); int main(int argc, char *argv[]) SECURITY_ATTRIBUTES saattr; BOOL fsuccess; // Save the handle to the current STDIN. hsavestdin = GetStdHandle(STD_INPUT_HANDLE); 2002/2003 Pagani Trentini Slide 35 // Set the binherithandle flag so pipe handles are inherited. saattr.nlength = sizeof(security_attributes); saattr.binherithandle = TRUE; saattr.lpsecuritydescriptor = NULL; // Create a pipe for the child process s STDIN. if (! CreatePipe(&hChildStdinRd, &hchildstdinwr, &saattr, 0)) ErrorExit("Stdin pipe creation failed\n"); // Set a read handle to the pipe to be STDIN. if (! SetStdHandle(STD_INPUT_HANDLE, hchildstdinrd)) ErrorExit("Redirecting Stdin failed"); // Duplicate the write handle to the pipe so it is not inherited. fsuccess = DuplicateHandle(GetCurrentProcess(), hchildstdinwr, GetCurrentProcess(), &hchildstdinwrdup, 0, FALSE, // not inherited DUPLICATE_SAME_ACCESS); if (! fsuccess) ErrorExit("DuplicateHandle failed"); CloseHandle(hChildStdinWr); 2002/2003 Pagani Trentini Slide 36

19 // Now create the child process. fsuccess = CreateChildProcess(); if (! fsuccess) ErrorExit("Create process failed"); // After process creation, restore the saved STDIN if (! SetStdHandle(STD_INPUT_HANDLE, hsavestdin)) ErrorExit("Re redirecting Stdin failed\n"); hinputfile = hsavestdin; if (hinputfile == INVALID_HANDLE_VALUE) ErrorExit("no input file\n"); // Write to pipe that is the standard input for a child process. WriteToPipe(); return 0; 2002/2003 Pagani Trentini Slide 37 BOOL CreateChildProcess() PROCESS_INFORMATION piprocinfo; STARTUPINFO sistartinfo; BOOL bfuncretn = FALSE; // reset PROCESS_INFORMATION and STARTUPINFO structures ZeroMemory( &piprocinfo, sizeof(process_information) ); ZeroMemory( &sistartinfo, sizeof(startupinfo) ); sistartinfo.cb = sizeof(startupinfo); // Create the child process. bfuncretn = CreateProcess(NULL, "figlio", // command line NULL, // process security attributes NULL, // primary thread security attributes TRUE, // handles are inherited 0, // creation flags NULL, // use parent s environment NULL, // use parent s current directory &sistartinfo, // STARTUPINFO pointer &piprocinfo); // receives PROCESS_INFORMATION 2002/2003 Pagani Trentini Slide 38

20 if (bfuncretn == 0) ErrorExit("CreateProcess failed\n"); return 0; else CloseHandle(piProcInfo.hProcess); CloseHandle(piProcInfo.hThread); return bfuncretn; printf("padre in Create Child: ho fatto\n"); // end CreateChildProcess VOID ErrorExit (LPTSTR lpszmessage) fprintf(stderr, "%s\n", lpszmessage); ExitProcess(0); 2002/2003 Pagani Trentini Slide 39 VOID WriteToPipe(VOID) DWORD dwread, dwwritten; CHAR chbuf[bufsize]; // Read from a file and write its contents to a pipe. for (;;) if (! ReadFile(hInputFile, chbuf, BUFSIZE, &dwread, NULL) dwread == 0) break; printf("padre: letto da stdin %d char, ora scrivo su pipe\n",dwread); if (! WriteFile(hChildStdinWrDup, chbuf, dwread, &dwwritten, NULL)) break; // Close the pipe handle so the child process stops reading. if (! CloseHandle(hChildStdinWrDup)) ErrorExit("Close pipe failed\n"); 2002/2003 Pagani Trentini Slide 40

21 #include "stdafx.h" #include <windows.h> #define BUFSIZE 10 File WpipeFiglio.cpp int main(int argc, char* argv[]) CHAR chbuf[bufsize]; DWORD dwread, dwwritten; HANDLE hstdin, hstdout; BOOL fsuccess; hstdout = GetStdHandle(STD_OUTPUT_HANDLE); hstdin = GetStdHandle(STD_INPUT_HANDLE); if ((hstdout == INVALID_HANDLE_VALUE) (hstdin == INVALID_HANDLE_VALUE)) ExitProcess(1); 2002/2003 Pagani Trentini Slide 41 for (;;) // Read from standard input. fsuccess = ReadFile(hStdin, chbuf, BUFSIZE, &dwread, NULL); if (! fsuccess dwread == 0) break; printf("figlio: letto da pipe %d char, ora scrivo \n", dwread); // Write to standard output. fsuccess = WriteFile(hStdout, chbuf, dwread, &dwwritten, NULL); if (! fsuccess) break; return 0; 2002/2003 Pagani Trentini Slide 42

22 pipe con nome Unix: come le pipe anonime, ma consentono comunicazione (unidirezionale) tra processi non imparentati (residenti sullo stesso host) fifo, generate con mkfifo() che crea un file speciale Win: a differenza delle pipe anonime, consentono comunicazione bidirezionale anche tra processi residenti su macchine diverse (via rete) usano API differenti da pipe anonime (e.g. CreateNamedPipe, WaitNamedPipe, CallNamedPipe...) 2002/2003 Pagani Trentini Slide 43

LABORATORIO DI SISTEMI OPERATIVI

LABORATORIO 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)

Dettagli

Sistemi Operativi Anno Accademico 2011/2012. Segnali: Interrupt software per la gestione di eventi asincroni

Sistemi 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

Dettagli

Sincronizzazione tra processi in Unix: i segnali

Sincronizzazione 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:

Dettagli

Laboratorio di Sistemi Operativi Marzo-Giugno 2008 Matricole congrue 0 modulo 3

Laboratorio 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

Dettagli

Sincronizzazione tra processi UNIX: i segnali. Sincronizzazione tra processi

Sincronizzazione 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

Dettagli

Università 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 Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2017-18 Pietro Frasca Lezione 9 Giovedì 2-11-2017 Comunicazione con pipe Oltre che con la memoria condivisa

Dettagli

Università 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 Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2016-17 Pietro Frasca Lezione 20 Giovedì 22-12-2016 Comunicazione: pipe In Unix, processi possono comunicare

Dettagli

Sincronizzazione tra processi. Sincronizzazione tra processi. segnali. Segnali UNIX

Sincronizzazione 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

Dettagli

I segnali. First the signals described in the original POSIX standard.

I 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

Dettagli

Terza Esercitazione. Gestione di segnali in Unix Primitive signal e kill!

Terza Esercitazione. Gestione di segnali in Unix Primitive signal e kill! Terza Esercitazione Gestione di segnali in Unix Primitive signal e kill! Primitive fondamentali signal kill pause alarm sleep Imposta la reazione del processo all eventuale ricezione di un segnale (può

Dettagli

TECN.PROG.SIST.INF. Creazione di un processo in Windows. Roberta Gerboni

TECN.PROG.SIST.INF. Creazione di un processo in Windows. Roberta Gerboni Roberta Gerboni // Funzione delle API di Windows // Crea un nuovo processo e il relativo thread primario. // Il nuovo processo viene eseguito nel contesto di protezione // del processo chiamante BOOL WINAPI

Dettagli

Sincronizzazione tra processi in Unix: : i segnali. Sistemi Operativi T AA

Sincronizzazione 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

Dettagli

Sincronizzazione tra processi in Unix: i segnali

Sincronizzazione 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

Dettagli

Sincronizzazione tra processi! in Unix: i segnali!

Sincronizzazione 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

Dettagli

Terza Esercitazione. Gestione di segnali in Unix Primitive signal e kill

Terza Esercitazione. Gestione di segnali in Unix Primitive signal e kill Terza Esercitazione Gestione di segnali in Unix Primitive signal e kill signal kill pause alarm sleep Primitive fondamentali Imposta la reazione del processo all eventuale ricezione di un segnale (può

Dettagli

SISTEMI OPERATIVI. Processi in Linux. Giorgio Giacinto Sistemi Operativi

SISTEMI 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

Dettagli

Programmazione di sistema in Linux: System Call per i Segnali. E. Mumolo

Programmazione 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

Dettagli

Segnali. Tecnica di comunicazione asincrona tra processi. Si può solo inviare uno tra un insieme fissato di segnali

Segnali. 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

Dettagli

Pipes e named pipes: 1. Nozioni preliminari 2. Pipes e named pipes (FIFO) in sistemi UNIX 3. Pipes e named pipes sistemi Windows

Pipes e named pipes: 1. Nozioni preliminari 2. Pipes e named pipes (FIFO) in sistemi UNIX 3. Pipes e named pipes sistemi Windows Sistemi Operativi II Corso di Laurea in Ingegneria Informatica Facolta di Ingegneria, Universita La Sapienza Docente: Francesco Quaglia Pipes e named pipes: 1. Nozioni preliminari 2. Pipes e named pipes

Dettagli

Esercitazione 4. Gestione dei file in Unix

Esercitazione 4. Gestione dei file in Unix Esercitazione 4 Gestione dei file in Unix Primitive fondamentali (1/2) open close Apre il file specificato e restituisce il suo file descriptor (fd) Crea una nuova entry nella tabella dei file aperti di

Dettagli

Comunicazione tra processi: pipe Le pipe sono un meccanismo UNIX di Inter Process Communication (IPC)

Comunicazione tra processi: pipe Le pipe sono un meccanismo UNIX di Inter Process Communication (IPC) Comunicazione tra processi: pipe Le pipe sono un meccanismo UNIX di Inter Process Communication (IPC) Le pipe sono canali di comunicazione unidirezionali Limitazione pipe: permettono la comunicazione solo

Dettagli

Esercitazione: Utilizzo delle Pipe

Esercitazione: Utilizzo delle Pipe Esercitazione: Utilizzo delle Pipe Specifica del problema Struttura generale del programma Esempio per Unix Esempio per Windows 1 Esercizio Realizzazione di una semplice shell che sia in grado di accettare

Dettagli

Processi. Segnali. Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino

Processi. Segnali. Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino Processi Segnali Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino 2 Interruzioni Interrupt Interruzione del procedimento corrente dovuto al verificarsi di un evento straordinario

Dettagli

Università 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. 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

Dettagli

POSIX Systems Programming. geek evening 0x0d. ambienti POSIX. By lord_dex ZEI e Salug! presentano:

POSIX Systems Programming. geek evening 0x0d. ambienti POSIX. By lord_dex ZEI e Salug! presentano: POSIX Systems Programming Syscall e fondamenti della ambienti POSIX programmazione in By lord_dex f.apollonio@salug.it ZEI e Salug! presentano: geek evening 0x0d INDICE Processi e Thread Creazione ed utilizzo

Dettagli

Addendum alle chiamate di sistema per la gestione processi. E Mumolo

Addendum alle chiamate di sistema per la gestione processi. E Mumolo Addendum alle chiamate di sistema per la gestione processi E Mumolo Definiamo un processo proc.c che scrive l'argomento passato in linea: void main(int argc, char *argv[]){ printf("sono il processo %s\n",

Dettagli

Laboratorio 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 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

Dettagli

LINUX: struttura generale

LINUX: 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

Dettagli

POSIX - Gestione dei Segnali. E.Mumolo, DEEI mumolo@units.it

POSIX - 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

Dettagli

Università 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 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

Dettagli

Laboratorio di Sistemi Operativi primavera 2009

Laboratorio 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

Dettagli

Università 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 Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2018-2019 Pietro Frasca Lezione 8 Giovedì 25-10-2018 Comunicazione con pipe Oltre che con la memoria

Dettagli

Sistemi Operativi (M. Cesati)

Sistemi 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

Dettagli

Laboratorio di Sistemi Operativi Marzo-Giugno 2008 Matricole congrue 0 mod 3

Laboratorio di Sistemi Operativi Marzo-Giugno 2008 Matricole congrue 0 mod 3 Marzo-Giugno 2008 Matricole congrue 0 mod 3 IPC: pipe e FIFO (1) Forme di comunicazione tra processi La comunicazione tra processi può avvenire: Passando dei files aperti tramite fork Attraverso il filesystem

Dettagli

Quinta Esercitazione. Principali primitive di accesso ai File

Quinta Esercitazione. Principali primitive di accesso ai File Esempio: processi padre e figlio condividono di file aperti PRIMA della creazione Quinta Esercitazione Gestione File-System Segnali processo padre fork() Sistema tabella dei file attivi i-node Eugenio

Dettagli

Laboratorio di Sistemi Operativi

Laboratorio di Sistemi Operativi Laboratorio di Sistemi Operativi Segnali a.a. 2011/2012 Francesco Fontanella Segnali - Introduzione I segnali sono interrupt software a livello di processo comunicano al processo il verificarsi di un evento

Dettagli

La Comunicazione tra Processi in Unix

La Comunicazione tra Processi in Unix La Comunicazione tra Processi in Unix La è un canale di comunicazione tra processi: unidirezionale: accessibile ad un estremo in lettura ed all'altro in scrittura molti-a-molti: più processi possono spedire

Dettagli

Gestione dei processi

Gestione dei processi Gestione dei processi SLEEP(3) sospende il processo per seconds secondi unsigned int sleep(unsigned int seconds); Sospende il thread chiamante fino a quando non sono trascorsi seconds secondi, o fino a

Dettagli

Università 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 Università degli Studi di Cagliari Corso di Laurea Specialistica in Ingegneria Elettronica SISTEMI OPERATIVI A.A. 2004/2005 Docente: Giorgio Giacinto Comunicazione fra processi in Linux Lock-file, Signal,

Dettagli

Sistemi Operativi (M. Cesati)

Sistemi 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

Dettagli

Avvio. La funzione main puo' avere due argomenti argc ed argv, ma in realta' oltre a argc ed argv c'e' qualche cosa di piu'.

Avvio. La funzione main puo' avere due argomenti argc ed argv, ma in realta' oltre a argc ed argv c'e' qualche cosa di piu'. Avvio Quando un programma viene eseguito, prima vengono caricate le librerie condivise che servono al programma, poi viene effettua il link dinamico del codice e alla fine avviene l'esecuzione vera e propria.

Dettagli

La Comunicazione tra Processi in Unix

La Comunicazione tra Processi in Unix La Comunicazione tra Processi in Unix 1 Interazione tra processi Unix I processi Unix non possono condividere memoria (modello ad ambiente locale ) L interazione tra processi può avvenire: mediante la

Dettagli

Processi. Comunicazione tra processi Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino

Processi. Comunicazione tra processi Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino Processi Comunicazione tra processi Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino 2 Processi independenti e cooperanti I processi concorrenti possono essere Indipendenti Cooperanti

Dettagli

Laboratorio di Sistemi Operativi Marzo-Giugno 2008 matricole congrue 0 mod 3

Laboratorio di Sistemi Operativi Marzo-Giugno 2008 matricole congrue 0 mod 3 Marzo-Giugno 2008 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

Dettagli

Chiamate di sistema. Pipe Flussi di I/O

Chiamate di sistema. Pipe Flussi di I/O Chiamate di sistema Pipe Flussi di I/O Esempio di chiamata di sistema #include int main(int argc, char ** argv) FILE * f; f = fopen("nuovo-file", "w"); fprintf(f, "Hello World!\n"); fclose(f);

Dettagli

Esercizio sulla gestione di file in Unix. Sistemi Operativi T AA

Esercizio sulla gestione di file in Unix. Sistemi Operativi T AA Esercizio sulla gestione di file in Unix Sistemi Operativi T AA 2011-2012 1 Esercizio Si vuole realizzare un programma C che, utilizzando le system call di Unix, realizzi uno schema di comunicazione tra

Dettagli

Sistemi Operativi (M. Cesati)

Sistemi Operativi (M. Cesati) Sistemi Operativi (M. Cesati) Compito scritto del 5 febbraio 2013 Nome: Matricola: Corso di laurea: Cognome: Crediti da conseguire: 5 6 9 Scrivere i dati richiesti in stampatello. Al termine consegnare

Dettagli

Il sistema operativo LINUX Indice

Il 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:

Dettagli

LABORATORIO DI SISTEMI OPERATIVI

LABORATORIO 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

Dettagli

Programmazione di Sistema

Programmazione di Sistema Programmazione di Sistema Massimo Bernaschi Istituto per le Applicazioni del Calcolo Mauro Picone Consiglio Nazionale delle Ricerche Viale Manzoni, 30-00185 Rome - Italy http://www.iac.cnr.it/~massimo

Dettagli

La creazione di un nuovo processo in UNIX

La creazione di un nuovo processo in UNIX La creazione di un nuovo processo in UNIX #include int fork(void); Viene creato un nuovo processo (figlio) identico (stesso codice, area dati copiata) al processo (padre) che ha invocato la

Dettagli

Chiamate di sistema. Pipe Flus s i di I/O

Chiamate di sistema. Pipe Flus s i di I/O Chiamate di sistema Pipe Flus s i di I/O Esempio di chiamata di sistema #include int main(int argc, char ** argv) { FILE * f; f = fopen("nuovo-file", "w"); fprintf(f, "Hello World!\n"); fclose(f);

Dettagli

Igino Corona

Igino Corona Sistemi Operativi Esercitazione 6: Comunicazione fra processi in Linux PIPE Igino Corona igino.corona@diee.unica.it 17 Novembre 2009 File In Linux, un le può essere un contenitore di informazione o uno

Dettagli

Corso di Laboratorio di Sistemi Operativi A.A

Corso di Laboratorio di Sistemi Operativi A.A Corso di Laboratorio di Sistemi Operativi A.A. 2016 2017 Lezione 16 Ivan Scagnetto ivan.scagnetto@uniud.it Nicola Gigante gigante.nicola@spes.uniud.it Dipartimento di Scienze Matematiche, Informatiche

Dettagli

Sistemi Operativi (M. Cesati)

Sistemi Operativi (M. Cesati) Sistemi Operativi (M. Cesati) Compito scritto del 25 settembre 2014 Nome: Matricola: Corso di laurea: Cognome: Crediti da conseguire: 5 6 9 Scrivere i dati richiesti in stampatello. Al termine consegnare

Dettagli

Inter-process communication

Inter-process communication Primitive di Comunicazione 1 Inter-process communication Nell'attività del sistema si rende necessario la cooperazione tra processi per realizzare le diverse funzionalità offerte all'utente. La cooperazione

Dettagli

Corso di Programmazione Concorrente Processi. Valter Crescenzi

Corso 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

Dettagli

Sistemi Operativi. Marzo-Giugno 2011 matricole congrue 0 mod 3. Controllo dei processi - I

Sistemi 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

Dettagli

Sistemi Operativi Teledidattico

Sistemi 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

Dettagli

Sistemi di Calcolo - Secondo modulo (SC2) Programmazione dei Sistemi di Calcolo Multi-Nodo

Sistemi 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

Dettagli

Il sistema operativo LINUX Semafori. Semaforo. Sommario. Sommario. Uso delle pipe. Gestione di semafori tramite pipe. Sistemi operativi Modulo II

Il sistema operativo LINUX Semafori. Semaforo. Sommario. Sommario. Uso delle pipe. Gestione di semafori tramite pipe. Sistemi operativi Modulo II Il sistema operativo LINUX Semafori Semaforo Giorgio Di Natale Stefano Di Carlo Politecnico di Torino Dip. Automatica e Informatica Un semaforo è una variabile

Dettagli

Processi Aspetti avanzati. Terminazione Segnali

Processi Aspetti avanzati. Terminazione Segnali Processi Aspetti avanzati Terminazione Segnali Inizializzazione e terminazione di un programma Dal punto di vista dell'utente, ogni programma "inizia" dalla funzione main() E' la prima funzione utente

Dettagli

Capitolo 3 -- Silberschatz

Capitolo 3 -- Silberschatz Processi Capitolo 3 -- Silberschatz Concetto di processo Un SO esegue una varietà di attività: Sistemi batch job Sistemi time-sharing programmi utenti o task Nel libro i termini job e processo sono usati

Dettagli

Sistemi Operativi II

Sistemi Operativi II Sistemi Operativi II 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/ e-mail:

Dettagli

Università 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 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

Dettagli

Sistemi Operativi (M. Cesati)

Sistemi Operativi (M. Cesati) Sistemi Operativi (M. Cesati) Compito scritto del 7 settembre 2012 Nome: Matricola: Corso di laurea: Cognome: Crediti da conseguire: 5 6 9 Scrivere i dati richiesti in stampatello. Al termine consegnare

Dettagli

Chiamate 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 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

Il processo figlio : utilizza lo stesso codice che sta eseguendo il padre ;

Il processo figlio : utilizza lo stesso codice che sta eseguendo il padre ; La creazione di un nuovo processo in UNIX int fork(void); Viene creato un nuovo processo (figlio) identico (stesso codice, area dati copiata) al processo (padre) che ha invocato la fork Solo il valore

Dettagli

Sincronizzazione e comunicazione tra processi in Unix. usati per trasferire ad un processo l indicazione che un determinato evento si è verificato.

Sincronizzazione 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,

Dettagli

case 0: /* child 1 - writing end */ close(fd[0]); // close read end write(fd[1], string, (strlen(string)+1));/* +1 is termination \0 */ return (0);

case 0: /* child 1 - writing end */ close(fd[0]); // close read end write(fd[1], string, (strlen(string)+1));/* +1 is termination \0 */ return (0); ESERCIZIO RELATIVO ALLA PARTE DI UNIX (3 punti) Si scriva un programma per realizzare la comunicazione unidirezionale via pipe fra due processi fratelli, in cui un fratello invia all altro la stringa "Good

Dettagli

Corso di Reti di Calcolatori T

Corso di Reti di Calcolatori T Università degli Studi di Bologna Scuola di Ingegneria Corso di Reti di Calcolatori T Esercitazione 0 (proposta) Lettura e Scrittura File in Java e C Luca Foschini Michele Solimando, Giuseppe Martuscelli

Dettagli

Controllo dei Processi 1

Controllo 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

Dettagli

I Processi nel Sistema Operativo Unix. Gerarchie di processi Unix. Stati di un processo Unix. Stati di un processo Unix.

I Processi nel Sistema Operativo Unix. Gerarchie di processi Unix. Stati di un processo Unix. Stati di un processo Unix. I Processi nel Sistema Operativo Unix Processi Unix Unix è un sistema operativo multiprogrammato a divisione di tempo: l unità di computazione è il processo. Caratteristiche del processo Unix: processo

Dettagli

System call per la gestione di processi

System call per la gestione di processi System call per la gestione di processi Chiamate di sistema per creazione di processi: fork() sostituzione di codice e dati: exec...() terminazione: exit() sospensione in attesa della terminazione di figli:

Dettagli

System call per la gestione di processi

System call per la gestione di processi System call per la gestione di processi Chiamate di sistema per creazione di processi: fork() sostituzione di codice e dati: exec...() terminazione: exit() sospensione in attesa della terminazione di figli:

Dettagli

Controllo dei Processi. M. R. Guarracino - Primitive di Controllo dei Processi

Controllo dei Processi. M. R. Guarracino - Primitive di Controllo dei Processi Controllo dei Processi Introduzione Come possiamo creare nuovi processi? Come possiamo eseguire un programma? Come possiamo terminare un processo? Introduzione Unix fornisce le primitive per la creazione

Dettagli

System Calls per la Gestione dei Processi

System Calls per la Gestione dei Processi System Calls per la Gestione dei Processi Domenico Cotroneo Dipartimento di Informatica e Sistemistica Università degli Studi di Napoli Federico II Roadmap Process Context Identificativi getpid() getppid()

Dettagli

Processi Concetti di base. Esecuzione parallela e sequenziale Il concetto di processo Gestione dei processi

Processi Concetti di base. Esecuzione parallela e sequenziale Il concetto di processo Gestione dei processi Processi Concetti di base Esecuzione parallela e sequenziale Il concetto di processo Gestione dei processi Esecuzione sequenziale I sistemi di calcolo più semplici consentono unicamente l'esecuzione sequenziale

Dettagli

GESTIONE DELLA COMUNICAZIONE LOCALE TRA PROCESSI IN UNIX:

GESTIONE DELLA COMUNICAZIONE LOCALE TRA PROCESSI IN UNIX: GESTIONE DELLA COMUNICAZIONE LOCALE TRA PROCESSI IN UNIX: Il primo meccanismo di comunicazione tra processi locali in ambiente Unix e stato il meccanismo delle pipe. Per processo locale si intende un processo

Dettagli

System Call EXEC EXEC P P. fork exec(new_prog) fork. sono_il_padre = fork(); if (!sono_il_padre) {

System 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

Dettagli

Università 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 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

Dettagli

Riepilogo sulla Concorrenza

Riepilogo sulla Concorrenza Riepilogo sulla Concorrenza Passi per la costruzione di un programma concorrente Prima di tutto, definire se la concorrenza avviene mediante Processi concorrenti o Thread concorrenti Definizione delle

Dettagli

CORSO DI SISTEMI OPERATIVI A - ESERCITAZIONE 4

CORSO DI SISTEMI OPERATIVI A - ESERCITAZIONE 4 UNIVERSITÀ DEGLI STUDI DI PARMA Facoltà di Ingegneria Corso di Laurea in Ingegneria Elettronica e delle Telecomunicazioni a.a. 2005-2006 CORSO DI SISTEMI OPERATIVI A - ESERCITAZIONE 4 1 Funzioni per il

Dettagli

Corso di Sistemi Operativi A.A CHIAMATE DI SISTEMA PER FILE E SEMAFORI. Fabio Buttussi

Corso di Sistemi Operativi A.A CHIAMATE DI SISTEMA PER FILE E SEMAFORI. Fabio Buttussi Corso di Sistemi Operativi A.A. 2008-2009 - CHIAMATE DI SISTEMA PER FILE E SEMAFORI Fabio Buttussi System call per l accesso a file Nome open close read write lseek creat remove unlink stat Significato

Dettagli

Sistemi Operativi (M. Cesati)

Sistemi Operativi (M. Cesati) Sistemi Operativi (M. Cesati) Compito scritto del 17 settembre 2012 Nome: Matricola: Corso di laurea: Cognome: Crediti da conseguire: 5 6 9 Scrivere i dati richiesti in stampatello. Al termine consegnare

Dettagli

SC per Inter Process Communication. Pipe senza nome e con nome (FIFO)

SC per Inter Process Communication. Pipe senza nome e con nome (FIFO) SC per Inter Process Communication Pipe senza nome e con nome (FIFO) 1 Pipe Pipe : file speciali utilizzati per connettere due processi con un canale di comunicazione Possono essere utilizzati in modo

Dettagli

Le strutture. Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune.

Le strutture. Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune. Le strutture Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune. Dichiarazione di una struttura: struct point { int x; int y; }; La dichiarazione di una struttura

Dettagli

SC per Inter Process Comminication. Pipe senza nome e con nome (FIFO)

SC per Inter Process Comminication. Pipe senza nome e con nome (FIFO) SC per Inter Process Comminication Pipe senza nome e con nome (FIFO) 1 Pipe Pipe : file speciali utilizzati per connettere due processi con un canale di comunicazione Possono essere utilizzati in modo

Dettagli

Sistemi Operativi 1. Lezione III: Concetti fondamentali. Mattia Monga. 7 marzo 2008

Sistemi Operativi 1. Lezione III: Concetti fondamentali. Mattia Monga. 7 marzo 2008 1 Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia mattia.monga@unimi.it 7 marzo 2008 1 c 2008 M. Monga. Creative Commons Attribuzione-Condividi allo stesso modo 2.5 Italia

Dettagli

Sistemi Operativi 1. Mattia Monga. 7 marzo Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia

Sistemi Operativi 1. Mattia Monga. 7 marzo Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia 1 Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia mattia.monga@unimi.it 7 marzo 2008 1 c 2008 M. Monga. Creative Commons Attribuzione-Condividi allo stesso modo 2.5 Italia

Dettagli

Sistemi Operativi T. Esercizi

Sistemi Operativi T. Esercizi Sistemi Operativi T Esercizi Esercizio monitor Si consideri la toilette di un ristorante. La toilette è unica per uomini e donne. Utilizzando la libreria pthread, si realizzi un'applicazione concorrente

Dettagli

Università 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 Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2017-18 Pietro Frasca Lezione 12 Martedì 14-11-2017 System call per l'uso dei segnali Un processo che

Dettagli

In generale può essere utile che i due processi eseguano del codice diverso

In generale può essere utile che i due processi eseguano del codice diverso System call FORK P fork() ha l aspetto di una funzione C, in realtà è una system call, una chiamata al sistema operativo fork() P P Il processo P' è una copia di P esegue lo stesso codice e possiede una

Dettagli

INTERPROCESS COMMUNICATION 27

INTERPROCESS COMMUNICATION 27 INTERPROCESS COMMUNICATION 27 - Le comunicazioni tra processi (IPC, Intreprocess Communication) sono realizzate mediante strutture dati rese disponibili dal kernel. Sono disponibili 3 tipologie di comunicazioni

Dettagli

Sistemi Operativi (M. Cesati)

Sistemi 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

Dettagli

Î Modello ad Ambiente Locale P1 P1. File System P2 P2 P3 P3. Processi in UNIX. Modello di Processo in UNIX

Î Modello ad Ambiente Locale P1 P1. File System P2 P2 P3 P3. Processi in UNIX. Modello di Processo in UNIX Processi in UNIX Spazio di sistema (residente) Modello di Processo in UNIX 1 Tabella dei processi i PROCESS CODE Tabella dei codici Tabella dei file APERTI OPEN FILE ACTIVE FILE Tabella dei file ATTIVI

Dettagli

Esercitazione sui segnali

Esercitazione sui segnali Esercitazione sui segnali Problema: creare un programma analizzatore di file testuali che prenda come argomenti il nome di un file e una sequenza di stringhe. Per ognuna delle stringhe deve venire generato

Dettagli

SISTEMI OPERATIVI. Struttura dei. Sistemi Operativi. Giorgio Giacinto 2015

SISTEMI OPERATIVI. Struttura dei. Sistemi Operativi. Giorgio Giacinto 2015 SISTEMI OPERATIVI Struttura dei Sistemi Operativi 2 Panoramica dei servizi del sistema operativo 3 4 Cos è una chiamata al sistema?» Il SO mette a disposizione i suoi servizi ai programmi utente attraverso

Dettagli