Signalling (IPC) Signalling (segnalazione)

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

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

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

Il sistema operativo LINUX Indice

Corso di Programmazione Concorrente Processi. Valter Crescenzi

Programmazione multiprocesso

Quinta Esercitazione. Principali primitive di accesso ai File

Processi e Sincronizzazione. Laboratorio Software C. Brandolese M. Grotto

Processi UNIX. I Processi nel SO UNIX. Gerarchie di processi UNIX. Modello di processo in UNIX

Gestione dei processi

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.

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

CREAZIONE PROCESSI IN UNIX 20

Progettazione di Applicazioni Robuste. Applicazione Echo. Schema Generale di un Server TCP Ricorsivo 1. Applicazione echo

Esame Laboratorio di Sistemi Operativi Cognome Nome Mat.

Sommario. Processi e Programmi. Che cosa e un Processo? Lezione 5 Processi e Threads

1. PARALLELISMO E PROCESSI. 1.1 La necessità del parallelismo

Chiamate di sistema per la Gestione dei processi in POSIX. E.Mumolo, DEEI

Processi: Exit, Wait, Exec

AXO. Operativo. Architetture dei Calcolatori e Sistema. programmazione di sistema

Programmazione di Sistema 3

Precedenza e associatività. Complementi sul C - 2. Esempi. Esempi

Sistemi Operativi. Lezione 3 I Processi

Esercizio sulla gestione di file in Unix

I segnali possono essere pensati come degli interrupts software ;

Sistemi Operativi. Esercitazione 2 Compilazione, Makefile e Processi

ESERCIZI DI PROGRAMMAZIONE C IN AMBIENTE UNIX

Laboratorio di Sistemi Operativi

PROGRAMMA DISCIPLINARE SVOLTO a. s / 2016

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

perror: individuare l errore quando una system call restituisce -1

Program m azione di Sistem a 3

Esercizi di Verifica Aprile 2005 Università disalerno

2. Nucleo del sistema operativo (la gestione dei processi)

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

CORSO DI SISTEMI OPERATIVI A - ESERCITAZIONE 5

Eventi asincroni. Sistemi Operativi II - Corso di laurea in Ingegneria Informatica. Sirio Scipioni

Modello dei processi. Riedizione delle slide della Prof. Di Stefano

La sincronizzazione è legata alla implementazione delle pipe: int pipe(int fd[2]);

Sistemi Operativi. Des crizione e controllo dei proces s i

Sistemi Operativi L-A. Esercizi 14 Giugno Esercizio monitor

Processi. Concorrenza. Processi e programmi

CAP. 6: Nucleo del sistema operativo (La gestione dei processi)

Processi in Linux. Stru/ura file eseguibili

SC che operano su processi. Fork, exec, etc...

Sistemi Operativi. Descrizione e controllo dei processi

Programmazione modulare

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

Interprocess communication: Pipe

7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari

2. I THREAD. 2.1 Introduzione

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Corso di Sistemi Operativi A.A CHIAMATE DI SISTEMA PER IL CONTROLLO DEI PROCESSI. Fabio Buttussi

SISTEMI OPERATIVI. I processi. Prof. Luca Gherardi Prof.ssa Patrizia Scandurra (anni precedenti) (MODULO DI INFORMATICA II)

II parte: Gestione dei Processi. 3. Processi. 3.1 Concetto di Processo

Capitolo 3 -- Silberschatz

Computazione multi-processo. Condivisione, Comunicazione e Sincronizzazione dei Processi. Segnali. Processi e Threads Pt. 2

SISTEMI OPERATIVI E LABORATORIO (Indirizzo Sistemi e Reti) 19 luglio 2004

SISTEMI OPERATIVI 3 febbraio 2014 corso A nuovo ordinamento e parte di teoria del vecchio ordinamento indirizzo SR

ESERCITAZIONE 2 RIPASSO. EX. 1 Un processo padre (parent) crea due processi figli (children) e attende la loro terminazione. Se, e solo se,...

Corso di Sistemi Operativi Ingegneria Elettronica e Informatica prof. Rocco Aversa. Raccolta prove scritte. Prova scritta

Le Funzioni e la Ricorsione

Concetto di processo. Processi. Immagine in memoria di un processo. Stati di un processo. Un SO esegue una varietà di attività:

Segnali. Un segnale e' un interrupt software. La terminologia corretta e' exception mentre interrupt e' usata solo per gli interrupt hardware

Definizione di metodi in Java

I SISTEMI OPERATIVI (1)

IL CONCETTO DI FILE. È illecito operare oltre la fine del file.

Soluzioni compito Laboratorio di Sistemi Operativi

Cosa e un processo? Stato del processo

ESERCIZI SULLA PROGRAMMAZIONE DI SISTEMA GNU/LINUX

Corso di Laboratorio di Sistemi Operativi

Gestione dei processi

L input da tastiera in Java. Dott. Ing. M. Banci, PhD

Input/output da file I/O ANSI e I/O UNIX FLUSSI E FILE FLUSSI FLUSSI di TESTO FLUSSI BINARI FILE

Terza Esercitazione. Unix - Esercizio 1. Unix System Call Exec Java Introduzione Thread

Laboratorio di Reti di Calcolatori

SISTEMI OPERATIVI. Nucleo di un SO. Il Nucleo. Il nucleo di un SO Gestione delle interruzioni Sincronizzazione tra processi Dispatcher. 06.

Segnali. #include <signal.h> Segnali

System call fcntl e record locking

nome (lista_parametri) Funzioni funzioni predefinite: sqrt(x) log(x) usare queste funzioni significa: specificare il valore degli argomenti

Soluzioni ai problemi di Mutua Esclusione Primitive di sincronizzazione. Soluzioni ai problemi di Mutua EsclusionePrimitive di sincronizzazione

Programmazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo

Parte 2. Ricorsione. [M.C.Escher Drawing hands, 1948] - AA. 2012/13 2.1

TEORIA sui SISTEMI OPERATIVI

Introduzione alla programmazione. Walter Didimo

Relazione tra thread e processi

Processi. Laboratorio Software C. Brandolese

Esercitazione 5. Procedure e Funzioni Il comando condizionale: switch

Sistemi Operativi. 3 LEZIONE PROCESSI CORSO DI LAUREA TRIENNALE IN INFORMATICA. Sistemi Operativi 2007/08

IPC System V. Code di messaggi

Elementi di Architettura e Sistemi Operativi

1: /* Nome del programma: gestione_articoli_01.cpp 2: Realizzato da: Gaetano Della Cerra 3: Data: 06/02/ III Informatica Serale I.T.I.S.

Esempi. Sincronizzazione tra processi: I Segnali. I segnali sono interrupt software, che segnalano il verificarsi di eventi asincroni:

I/O su Socket TCP: read()

THREAD. Programmazione in rete e laboratorio. Come si crea un thread

6. IL NUCLEO DEL SISTEMA OPERATIVO. 1. Meccanismo base di funzionamento del nucleo

Università Ca' Foscari Venezia - Corso di Laurea in Informatica Sistemi Operativi prof. Augusto Celentano. Domande di riepilogo

Esercitazione di Lab. di Sistemi Operativi a.a. 2012/ I processi Unix -

Strutture Dinamiche. Fondamenti di Informatica

Transcript:

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 di un evento (ad esempio, morte di un processo figlio). Alcuni segnali sono per uso predefinito, ad esempio per ordinare ad un altro processo di terminare (kill -9 pid). Alcuni segnali (SIGUSR1 e SIGUSR2) sono a disposizione dell'utente.

Attesa terminazione di processo Un processo padre può generare un processo figlio, farlo eseguire in background poi aspettare fino a che il processo figlio termina. Per fare questo il processo può invocare - il comando wait (se il padre è una shell di comandi, - la chiamata a funzione waitpid (se il processo è scritto in linguaggio C. In entrambi i casi, comando o funzione invocano una system call che aspetta la terminazione del processo figli. Abbiamo ora quattro dubbi: 1. Perché un processo padre potrebbe decidere di non chiamare la waitpid? 2. Cosa accade se il processo padre continua a eseguire e non fa mail la waitpid? 3. Cosa accade se il processo padre termina senza avere mai chiamato waitpid? 4. Se il processo padre esegue per un lungo periodo e - vuole evitare di lasciare in giro dei figli zombie, - ma vuole anche evitare di bloccarsi in attesa della terminazione dei figli, come può fare? signal!!!

wait, processi Zombie, processi Orfani, processo init (1) Un processo (padre) genera un processo figlio e lo esegue in background. Il processo figlio prima o poi termina e restituisce un valore intero. Il processo padre vuole sapere quale è il valore restituito dal figlio per sapere se tutto è andato bene o no. A questo scopo, il processo padre esegue il comando wait pidfiglio che attende la terminazione del processo figlio avente pid pidfiglio e restituisce il risultato del processo figlio. 1. Se il processo figlio termina prima del processo padre, il sistema operativo rilascia le risorse occupate dal processo figlio ma mantiene nelle sue tabelle una struttura pcb (process control block) con una descrizione del processo terminato. Questa struttura conserva anche il pid e il risultato del processo figlio. In questo momento il processo figlio è uno zombie poiché è terminato ma la sua struttura descrittiva è ancora presente nelle tabelle del sistema operativo. La struttura pcb viene eliminata solo quando il padre invoca il comando wait (o una system call waitpid che fa la stessa cosa) per attendere la terminazione del figlio. A quel punto il processo figlio sparisce dalle tabelle e il suo pid può essere riutilizzato per altri processi. 2. Se invece il processo padre termina senza fare la wait per il figlio, il processo figlio diventa orfano. Quando un processo orfano termina, oppure quando uno zombie diventa orfano perché termina il padre, l'orfano viene adottato dal processo init, quello con pid 0 che ha originato tutti i processi al boot. Gli orfani diventano figli di init. Ogni tanto il processo init chiama la wait sui propri figli, anche quelli adottati ovviamente, e così fa rilasciare i pcb degli orfani. Quindi, morto il padre, i figli che terminano vengono eliminati (no zombie)

Processi Zombie, Processi Orfani, processo init (2) Per quale motivo un processo padre non fa una wait per un figlio? 1. o per sbaglio, perché il programmatore se ne è dimenticato, 2. oppure appositamente, per impedire che un altro suo nuovo figlio prenda dal sistema operativo proprio il pid del processo figlio terminato. In entrambi i casi, si rischia di esaurire i pid disponibili nel sistema operativo.

Processi Zombie e signal SIGCHLD Se un processo padre vuole rilasciare i figli zombie senza bloccarsi a fare una wait, può scrivere una funzione che faccia automaticamente la waitpid quando un figlio termina. Infatti, alla terminazione, ogni processo invia un segnale detto SIGCHLD al proprio padre per informarlo che il figlio è terminato. Il processo padre può ordinare al sistema operativo di eseguire una funzione del padre quando al padre arriva questo segnale. La funzione viene eseguita dal padre. Il programmatore in questa funzione chiama la waitpid per far rilasciare il pcb del figlio terminato. void dezombizzafigli(int signum) { pid_t pid; int saved_errno = errno; while( waitpid((pid_t)(-1),0,wnohang)>0) { ; errno = saved_errno; void register_sigchld_sighandler(void) { struct sigaction sa; sa.sa_handler = &dezombizzafigli; sigemptyset(&sa.sa_mask); sa.sa_flags = SA_NOCLDSTOP; if (sigaction ( SIGCHLD, &sa, 0) == -1) { perror("sigaction"); exit(1); int main( void ) { pid_t pid; int i; /* REGISTER signal handler */ register_sigchld_sighandler(); while( 1 ) { pid=fork(); if ( pid==0 ) { funcfiglio(); exit(0); else sleep(1);

vedere codice nella pagina di sistop Esempio di SIGUSR1