I segnali. First the signals described in the original POSIX standard.
|
|
- Stefania Sorrentino
- 6 anni fa
- Visualizzazioni
Transcript
1 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 per inviare una comunicazione ad un programma in esecuzione per il verificarsi di alcuni eventi hardware o software nel sistema, come ad esempio situazioni di errore, operazioni di I/O, richiesta di chiusura di un processo, scadenza di time slice ecc. oppure possono essere usati anche come meccanismi di comunicazioni tra processi. Ad esempio un processo padre puo' inviare al figlio un segnale di esecuzione forzata di un certo codice o una terminazione. In ogni caso, l'invio del segnale passa per il kernel. Se il processo si trova in running, il kernel lo "passa" subito. Se invece il processo si trova in attesa il segnale verrà passato quando il processo andrà in esecuzione. Il processo che riceve il segnale puo avere diversi comportamenti: puo' eseguire un'azione di default, predefinita dal sistema operativo, per ogni segnale,oppure se il tipo di segnale lo consente, eseguire le istruzioni implementate dal programmatore in una funzione handler, o, ignorare il segnale senza avere alcuna reazione. Tra i segnali che non possono essere gestiti esplicitamente dai processi ci sono SIGKILL, per terminare un processo e SIGSTOP, per sospendere un processo: quando un processo li riceve deve eseguire l azione di default, non può bloccarli, fermarli o ignorarli. La lista completa dei segnali standard su un sistema Unix è visibile con il comando man 7 signal. Eccone alcuni: First the signals described in the original POSIX standard. Signal Value Action Comment SIGHUP 1 Term Hangup detected on controlling terminal or death of controlling process SIGINT 2 Term Interrupt from keyboard SIGQUIT 3 Core Quit from keyboard SIGILL 4 Core Illegal Instruction SIGABRT 6 Core Abort signal from abort SIGFPE 8 Core Floating point exception SIGKILL 9 Term Kill signal SIGSEGV 11 Core Invalid memory reference SIGPIPE 13 Term Broken pipe: write to pipe with no readers SIGALRM 14 Term Timer signal from alarm(2) SIGTERM 15 Term Termination signal SIGUSR1 30,10,16 Term User-defined signal 1 SIGUSR2 31,12,17 Term User-defined signal 2 SIGCHLD 20,17,18 Ign Child stopped or terminated SIGCONT 19,18,25 Cont Continue if stopped SIGSTOP 17,19,23 Stop Stop process SIGTSTP 18,20,24 Stop Stop typed at tty SIGTTIN 21,21,26 Stop tty input for background process SIGTTOU 22,22,27 Stop tty output for background process The signals SIGKILL and SIGSTOP cannot be caught, blocked, or ignored.
2 L'associazione tra gli identificatori simbolici e i numeri interi è specifica per ogni O.S. ed è contenuta nel file signal.h, per utilizzare le primitive di gestione dei segnali si deve effettuare l'include della libreria signal.h Oltre a SIGKILL e SIGSTOP già esaminati, approfondiamo altri segnali: SIGTERM : è il segnale generico per chiedere a un processo di terminare, che, a differenza di SIGKILL può essere ignorato o gestito dal programma che lo riceve. SIGALRM : viene usato per segnalare a un processo che un timer collegato all orologio di sistema ha terminato il tempo ad esso assegnato. SIGCONT : riavvia un processo fermato. int SIGPIPE : segnala che un pipe o un FIFO è interrotto, ciò accade se un processo apre un pipe in lettura prima che un altro inizi a scrivere. SIGUSR1, int SIGUSR2 : sono due segnali gestiti dall utente, in genere per essi viene scritta una funzione di gestione che permette la sincronizzazione tra due processi La chiamata di sistema per catturare un segnale è la signal, vi sono poi la funzione alarm, con cui un processo invia un segnale a se stesso e la funzione kill, utilizzata per l'invio di segnali tra processi. Signal Con la funzione "signal" e' possibile catturare i segnali che arrivano ad un processo e gestire con una funzione le azioni da eseguire al verificarsi del segnale, individuato attraverso il suo numero. Il prototipo della funzione signal secondo la sintassi GNU è sighandler_t signal(int sig, sighandler_t handler) sig è l intero (o il nome simbolico) che individua il segnale da gestire, handler ( gestore) è la funzione di gestione da eseguirsi al verificarsi del segnale, o in alternativa SIG_IGN(nel caso di segnale ignorato) o SIG_DFL(nel caso di azione di default) La funzione restituisce SIG_ERR (-1) in caso di errore. Questa sintassi è da preferire allo standard ANSI void (*signal(int signum, void (*handler)(int)))int) di più difficile lettura. Kill La primitiva kill() è la funzione con cui un processo può inviare un segnale ad un altro. Ha come primo parametro il PID del processo che deve ricevere il segnale, come secondo il segnale da inviare. Essa non causa necessariamente la terminazione del processo come farebbe pensare il suo nome. Infatti invia un SIGTERM a un processo, terminandolo, se è specificato solo il primo argomento, cioè il pid. Può anche mandare un segnale differente, se viene specificato il secondo argomento e puo' essere usata per vari scopi, come la sincronizzazione tra processi. Il valore ritornato è 0 se l'inoltro ha successo, altrimenti ritorna 1. Alarm Con la funzione "alarm" viene inviato un segnale al processo stesso che la invoca. Piu' precisamente, "alarm" permette l'invio del segnale "SIGALRM" dopo un certo tempo t (specificato come parametro). PID=-1 significa che il segnale e' inviato a tutti i processi (eccetto quelli numero "0=init" e "1=init)
3 pause(): il processo che chiama questa funzione rimane in attesa finchè viene ricevuto un segnale che lo termina o che attiva una funzione di analisi dei segnali. Ecco un primo programma di esempio Il padre genera un processo figlio con la fork, e tenta di terminarlo con l'uso dei segnali tramite la funzione kill. Invia il segnale SIGTERM che viene ignorato dal figlio che ha mascherato tale comando con una chiamata di signal con azione nulla. Il padre termina il figlio con l'invio di SIGKILL che non può essere ignorato. int main() int pid,i; pid=fork(); if(pid == 0) // Figlio signal(sigterm, SIG_IGN); // azione nulla al segnale SIGTERM printf("\n sono il figlio: %d e non sono stato terminato", getpid()); for(i=0; i<100; i++) // stampa 100 valori printf("numero: %d\n", i); else // Padre sleep(1); kill(pid, SIGTERM); // Invia al figlio il segnale SIGTERM che viene ignorato printf("\n Pid del figlio: %d - Tentativo di terminare il figlio fallito.\n", pid); kill(pid, SIGKILL); // Invia al figlio il segnale SIGKILL printf("figlio terminato con SIGKILL.\n\n");
4 Ecco un secondo programma di esempio. Il padre genera un processo figlio con la fork, e gli invia un segnale. Il figlio intercetta il segnale e gli risponde. void handlerfiglio(int sig) printf ("Ricevuto segnale dal padre con successo \n"); printf ("ciao papà ti rispondo \n"); fflush(stdout); kill(getppid(),sigusr2); void handlerpadre(int sig) printf ("Ricevuto segnale dal figlio con successo \n"); printf ("ciao figlio ho ricevuto la risposta \n"); int main() int pid; printf ("esercizio sincronizzazione con signal \n"); //installazione segnali pid=fork(); if (pid==0) pause(); //exit(0); else if (pid>0) // Padre //invia il segnale SIGUSR1 al figlio e rimane in attesa della risposta kill(pid,sigusr1); pause(); //ricevo il segnale SIGUSR2 dal figlio //exit(0);
5 Questo programma mostra l'uso dei segnali per la comunicazione tra due processi padre e figlio. Il programma crea un cronometro che conta fino a 59 minuti e 59 secondi. Il padre si occupa di aggiornare lo schermo con il tempo corrente. Il figlio avvisa il padre ogni secondo tramite il segnale SIGUSR1. int min=0, sec=0; void ora() signal(sigusr1, ora); //rimascherare il segnale è necessario su alcuni sistemi //fflush(stdout); // Forza la scrittura dei dati sullo schermo sec=sec+1; if(sec==60) // Se ci sono 60 sec, li azzera e incrementa i minuti. sec = 0; min++; if(min==60) min=0; //Azzera i minuti quando il cronometro arriva a 60 printf("min: %d sec %d\r", min, sec); fflush(stdout); // Forza la scrittura dei dati sullo schermo int main(void) int PID; //attivazione segnale signal(sigusr1, ora); PID=fork(); if (PID==0 ) // processo figlio while(1) sleep(1); kill(getppid(), SIGUSR1); // il figlio invia al padre il segnale SIGUSR1 per aggiornare l'orario else // processo padre while (1) signal(sigusr1, ora); //il padre intercetta il segnale e chiama l'handler ora
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
DettagliSincronizzazione tra processi UNIX: i segnali. Sincronizzazione tra processi
Sincronizzazione tra processi UNIX: i segnali Sincronizzazione tra processi Processi interagenti possono avere bisogno di meccanismi di sincronizzazione Ad esempio, abbiamo appena visto il caso di processi
DettagliSincronizzazione tra processi. Sincronizzazione tra processi. segnali. Segnali UNIX
Sincronizzazione tra processi Sincronizzazione tra processi UNIX: i segnali Processi interagenti possono avere bisogno di meccanismi di sincronizzazione Ad esempio, abbiamo appena visto il caso di processi
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
DettagliSincronizzazione tra processi in Unix: : i segnali. Sistemi Operativi T AA
Sincronizzazione tra processi in Unix: : i segnali Sistemi Operativi T AA 2009-2010 1 Sincronizzazione tra processi La sincronizzazione permette di imporre vincoli sull'ordine di esecuzione delle operazioni
DettagliSincronizzazione tra processi in Unix: i segnali
Sincronizzazione tra processi in Unix: i segnali Sincronizzazione tra processi La sincronizzazione permette di imporre vincoli sull'ordine di esecuzione delle operazioni dei processi interagenti. Unix
DettagliProgrammazione di sistema in Linux: System Call per i Segnali. E. Mumolo
Programmazione di sistema in Linux: System Call per i Segnali E. Mumolo Eventi asincroni: segnali I segnali permettono la gestione di eventi asincroni che interrompono il normale funzionamento di un processo
DettagliLaboratorio 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
DettagliLaboratorio di Sistemi Operativi Marzo-Giugno 2008 Matricole congrue 0 modulo 3
Marzo-Giugno 2008 Matricole congrue 0 modulo 3 Segnali: Interrupt software per la gestione di eventi asincroni Concetto di segnale Un segnale è un interrupt software Un segnale può essere generato da un
DettagliProcessi. 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
DettagliPOSIX - Gestione dei Segnali. E.Mumolo, DEEI mumolo@units.it
POSIX - Gestione dei Segnali E.Mumolo, DEEI mumolo@units.it Segnali in POSIX Segnali in Posix Modalità di notifiche relative a vari eventi asincroni I signal interrompono un processo e possono o meno essere
DettagliSegnali. #include <signal.h> Segnali
Segnali Segnali 1. Un segnale è la notifica asincrona di un evento 2. Si dice che un segnale è generato (o consegnato sent, delivered to ) quando l evento associato a quel segnale occorre per la prima
DettagliSegnali. Un segnale e' un interrupt software. La terminologia corretta e' exception mentre interrupt e' usata solo per gli interrupt hardware
Segnali ed allarmi Contiene lucidi tratti da: 2005-2007 Marco Faella, Clemente Galdi, Giovanni Schmid (Univrsità di Napoli Federico II) 2005-2007 Francesco Pedulla, Massimo Verola (Uniroma2), 2001-2005
DettagliSincronizzazione e comunicazione tra processi in Unix. usati per trasferire ad un processo l indicazione che un determinato evento si è verificato.
Processi parte III Sincronizzazione e comunicazione tra processi in Unix Segnali: usati per trasferire ad un processo l indicazione che un determinato evento si è verificato. Pipe: struttura dinamica,
DettagliPOSIX 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
DettagliQuinta 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
DettagliSistemi Operativi. Marzo-Giugno 2011 matricole congrue 0 mod 3. Controllo dei processi - I
Marzo-Giugno 2011 matricole congrue 0 mod 3 Controllo dei processi - I Controllo dei processi Creazione di nuovi processi Esecuzione di programmi Processo di terminazione Altro 2 1 Identificatori di processi
DettagliVi sono spesso eventi importanti da notificare ai processi:
Sincronizzazione mediante segnali Vi sono spesso eventi importanti da notificare ai processi: tasti speciali sul terminale (es. ^C) eccezioni hardware (es. divisione per 0) primitiva/comando kill (es.
DettagliIl sistema operativo LINUX Indice
Il sistema operativo LINUX Giorgio Di Natale Stefano Di Carlo Politecnico di Torino Dip. Automatica e Informatica Processo Un processo è un programma in esecuzione:
DettagliEsempi. Sincronizzazione tra processi: I Segnali. I segnali sono interrupt software, che segnalano il verificarsi di eventi asincroni:
Sincronizzazione tra processi: I Segnali I segnali sono interrupt software, che segnalano il verificarsi di eventi asincroni: generati da terminale (combinazioni di tasti, es. ctrl-c) eccezioni hardware
DettagliSystem 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:
DettagliSignalling (IPC) Signalling (segnalazione)
Signalling (IPC) Signalling (segnalazione) è un particolare tipo di Inter-Process Communications che permettere di sincronizzare dei processi spedendo e ricevendo dei messaggi minimali che informano dell'accadimento
DettagliSistemi 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
DettagliI segnali possono essere pensati come degli interrupts software ;
Segnali 57 Segnali Un segnale è una notifica a un processo che è occorso un particolare evento: - Un errore di floating point - La morte di un figlio - Una richiesta di terminazione - I segnali possono
DettagliProgram m azione di Sistem a 4
Program m azione di Sistem a 4 Lucidi per il corso di Laboratorio di Sistemi Operativi tenuto da Paolo Baldan presso l'università Ca' Foscari di Venezia, anno accademico 2004/ 2005. Parte di questo materiale
DettagliIl registratore digitale
1 / 17 Nella pratica di laboratorio capita spesso di dover registrare segnali lentamente variabili per intervalli di lunghi. Lo scopo dell esperienza è quello di realizzare un registratore, ovvero uno
DettagliEventi asincroni. Sistemi Operativi II - Corso di laurea in Ingegneria Informatica. Sirio Scipioni
Eventi asincroni Sistemi Operativi II - Corso di laurea in Ingegneria Informatica Sirio Scipioni scipioni@dis.uniroma1.it http://www.dis.uniroma1.it/~scipioni MIDLAB http://www.dis.uniroma1.it/~midlab
DettagliI 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
DettagliControllo 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
DettagliProcessi - II. Franco Maria Nardini
Processi - II Franco Maria Nardini Processi Programmi in esecuzione in memoria sono chiamati processi. Caricati in memoria da una delle sei funzioni exec(3). Ogni processo ha un identificatore univoco
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
DettagliProcessi e Sincronizzazione. Laboratorio Software 2008-2009 C. Brandolese M. Grotto
Processi e Sincronizzazione C. Brandolese M. Grotto Sommario 1. Processi Concetti fondamentali Stati in GNU/Linux 2. Creazione Descrizione Creazione con system() Creazione con fork() Effetto di fork()
DettagliProcessi in Unix. Capitolo 8 -- Stevens
Processi in Unix Capitolo 8 -- Stevens Controllo dei processi Creazione di nuovi processi Esecuzione di programmi Processo di terminazione Altro Identificatori di processi Ogni processo ha un identificatore
DettagliIl 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
DettagliLaboratorio di Sistemi Operativi Marzo-Giugno 2008 matricole congrue 0 mod 3
Marzo-Giugno 2008 matricole congrue 0 mod 3 Funzioni wait e waitpid quando un processo termina il kernel manda al padre il segnale SIGCHLD Controllo dei processi (2) il padre può ignorare il segnale (default)
DettagliSistemi Operativi. Esercitazione 8. Corso di Laurea Triennale in Ingegneria Informatica.
1 Sistemi Operativi Corso di Laurea Triennale in Ingegneria Informatica Esercitazione 8 Semaphore.h Segnali Shell e processi daniel.cesarini@for.unipi.it Domande sulle lezioni passate Sommario Semafori
DettagliSistemi Operativi Teledidattico
Sistemi Operativi Teledidattico Anno 2002 3a esercitazione 5/10/2002 Paolo Torroni processi fork (creazione di un figlio) exec (sostituzione di codice del programma in esecuzione) wait (attesa della terminazione
DettagliSISTEMI OPERATIVI E LABORATORIO (Indirizzo Sistemi e Reti) 21 dicembre 2004
SISTEMI OPERATIVI E LABORATORIO (Indirizzo Sistemi e Reti) 21 dicembre 2004 Cognome: Nome: Matricola: ESERCIZIO 1, teoria (6 punti) a) riportate lo pseudocodice che descrive l implementazione dell operazione
DettagliEsame Laboratorio di Sistemi Operativi 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
DettagliSystem 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()
DettagliLa 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
DettagliI Processi nel SO UNIX
I Processi nel SO UNIX 1 Processi UNIX UNIX è un sistema operativo multiprogrammato a divisione di tempo: unità di computazione è il processo Caratteristiche del processo UNIX: processo pesante con codice
DettagliUniversità di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.
Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2014-15 Pietro Frasca Lezione 20 Martedì 16-12-2014 1 System call per la gestione dei processi Creazione
DettagliUniversità di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.
Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2017-18 Pietro Frasca Lezione 9 Giovedì 2-11-2017 Comunicazione con pipe Oltre che con la memoria condivisa
DettagliQuinta Esercitazione
Quinta Esercitazione Sommario Gestione dei processi informazioni associate ai processi identificatore di processo real/effective UID (GID) Priorità dei processi priorità assegnata dal SO livello di nice
DettagliLaboratorio 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
DettagliIntroduzione al Multithreading
Introduzione al Multithreading Claudia Calidonna Istituto di di Cibernetica C.N.R. Argomenti principali Parleremo di : Processi & Threads Operazioni sui threads ed eventuali confronti tra operazioni sui
DettagliUniversità di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.
Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2016-17 Pietro Frasca Lezione 20 Giovedì 22-12-2016 Comunicazione: pipe In Unix, processi possono comunicare
DettagliSistemi Operativi. 7 Gestione dei processi in Unix
Gestione dei processi in Unix Creazione e terminazione dei processi: fork: crea un nuovo processo duplicando il processo chiamante exec: attiva l esecuzione di un programma memorizzato in un file eseguibile.
DettagliI Processi nel Sistema Operativo 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
DettagliCREAZIONE DI UN FILE
#include #include CREAZIONE DI UN FILE fd = creat(filename, mode); int fd, mode; char *filename; La primitiva creat crea un file, se non ne esiste uno col nome specificato, oppure
DettagliComunicazione 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
DettagliSistemi Operativi. Esercitazione 8 Ripasso CRON Semaphore.h Segnali Shell e processi. Corso di Laurea Triennale in Ingegneria Informatica
1 Sistemi Operativi Corso di Laurea Triennale in Ingegneria Informatica Esercitazione 8 Ripasso CRON Semaphore.h Segnali Shell e processi daniel.cesarini@for.unipi.it Domande sulle lezioni passate Pianificazione
DettagliConcetto di Processo Scheduling dei Processi Operazioni sui Processi Processi cooperanti Comunicazione tra processi
Concetto di Processo Scheduling dei Processi Operazioni sui Processi Processi cooperanti Comunicazione tra processi 3.3 Silberschatz, Galvin and Gagne 2005 1 Un SO esegue diversi tipi di programmi Sistema
DettagliIntroduzione a. Funzioni di Ingresso e Uscita. Compilazione
Introduzione a Funzioni di Ingresso e Uscita Compilazione 2 Come si termina...... un programma in esecuzione (processo)? Ctrl + C In UNIX ci si basa sul concetto di terminale Anche da GUI, quello che si
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
Dettaglieseguire comandi dati dall'utente, utilizzando una macchina reale, di livello inferiore,
La programmazione di sistema Introduzione ai sistemi operativi multiprocesso Primitive per la gestione dei processi http://home.dei.polimi.it/silvano/acso.htm Il sistema ste operativo Il Sistema Operativo
DettagliProcessi in UNIX. Spazio di sistema (residente) Tabella dei. file APERTI OPEN FILE. Tabella dei codici
Processi in UNIX Spazio di sistema (residente) 1 i Tabella dei processi CODE Tabella dei file APERTI ACTIVE FILE PROCESS Tabella dei codici OPEN FILE Tabella dei file ATTIVI Spazio di utente (swappable)
DettagliCapitolo 5 - Funzioni
Capitolo 5 - Funzioni Divide and conquer Introduzione Costruire un programma da pezzi più piccoli o da singole componenti Questi pezzi più piccoli sono chiamati moduli Ogni singolo pezzo è più facilmente
Dettagli19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
19 - Eccezioni Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it Corso
DettagliControllo dei Processi 1
Controllo dei Processi 1 I processi Nei sistemi Unix/Linux ogni processo ne può generare altri. Il processo che li genera è detto processo padre (parent process), mentre i processi generati sono detti
DettagliIl comando make. Per produrre un eseguibile da un programma C sono necessari tre passi compiuti dai seguenti moduli:
Il comando make Sviluppando programmi complessi, si è spesso portati a suddividere il codice sorgente in diversi file. La fase di compilazione quindi richiede maggior tempo, anche se le modifiche apportate
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,
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
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
DettagliCorso di Programmazione Concorrente Processi. Valter Crescenzi
Corso di Programmazione Concorrente Processi Valter Crescenzi http://crescenzi.inf.uniroma3.it Sommario Processi vs Thread Creazione e terminazione di processi chiamata di sistema fork() chiamata di sistema
DettagliPrinciples of Concurrent Programming
Principles of Giuseppe Anastasi g.anastasi@iet.unipi.it Pervasive Computing & Networking Lab. () Dept. of Information Engineering, University of Pisa Overview Concetti preliminari Interazione fra processi
DettagliLezione 14 Comunicazione
Lezione 14 Comunicazione Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche Università di Modena e Reggio Emilia http://weblab.ing.unimo.it/people/andreolini/didattica/sistemi-operativi
DettagliUnità Didattica 1 Linguaggio C. Fondamenti. Struttura di un programma.
Unità Didattica 1 Linguaggio C Fondamenti. Struttura di un programma. 1 La storia del Linguaggio C UNIX (1969) - DEC PDP-7 Assembly Language BCPL - un OS facilmente accessibile che fornisce potenti strumenti
DettagliOperazioni su file di caratteri
Operazioni su file di caratteri Apertura fopen Chiusura fclose Scrittura fprintf Lettura fscanf Controllo fine file feof Prof. E. Occhiuto INFORMATICA 242AA a.a. 2010/11 pag. 1 Apertura di un file: Si
DettagliSommario. Processi e Programmi. Che cosa e un Processo? Lezione 5 Processi e Threads
Sommario Lezione 5 Processi e Threads Processi e Programmi Implementazione dei Processi Casi di Studio relativi a Processi Thread Casi di Studio relativi a Thread 5.2 Processi e Programmi Che cosa e un
DettagliIntroduzione. P4 termina prima di P3, P2 e P3 prima di P1 P1 P2 P3 P4 P1 P1 P2 P3 P4. Padre. P1,..., P4 sono processi. Figlio
Processi Introduzione Processo = entità attiva 1. esiste per un certo lasso di tempo 2. utilizza risorse Ogni processo ha un identificatore intero (PID: process identifier) Tutti i processi UNIX hanno
DettagliCORSO DI SISTEMI OPERATIVI A - ESERCITAZIONE 5
UNIVERSITÀ DEGLI STUDI DI PARMA Facoltà di Ingegneria Corso di Laurea in Ingegneria Informatica a.a. 2005-2006 CORSO DI SISTEMI OPERATIVI A - ESERCITAZIONE 5 1 Segnali Vi sono spesso eventi importanti
DettagliESERCIZI SULLA PROGRAMMAZIONE DI SISTEMA GNU/LINUX
Autore: Classe: Luciano VIVIANI QUARTA INFORMATICA (4IB) Anno scolastico: 2004/2005 Scuola: Itis Euganeo ESERCIZI SULLA PROGRAMMAZIONE DI SISTEMA GNU/LINUX Questa dispensa non vuole essere un manuale di
DettagliChiamate 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);
DettagliIn 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
DettagliLinuxThreads: I thread nel sistema operativo LINUX: Linuxthreads. LinuxThreads. LinuxThreads
I thread nel sistema operativo LINUX: Linuxthreads : Caratteristiche Processi leggeri realizzati a livello kernel System call clone: int clone(int (*fn) (void *arg), void *child_stack, int flags, void
DettagliProcessi. Introduzione. Effective user/group id. Fork
Introduzione Processi = entità attiva 1. esiste per un certo lasso di tempo 2. utilizza risorse Ogni processo ha un identificatore intero (PID: process identifier) Tutti i processi UNIX hanno un genitore
DettagliSISTEMI 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
DettagliInput/Output. Console e File.
Input/Output Console e File http://www.dia.uniroma3.it/~roselli/ roselli@dia.uniroma3.it Credits Materiale a cura del Prof. Franco Milicchio Introduzione Le istruzioni di stampa servono a rendere visibili
DettagliPROGRAMMA DISCIPLINARE SVOLTO a. s. 2015 / 2016
PROGRAMMA DISCIPLINARE SVOLTO a. s. 2015 / 2016 DOCENTI: TESTARDO CINZIA, VALERIO FELICI CLASSE 4 a IA DISCIPLINA TPSI MACROARGOMENTI che sono stati trattati nel corso del corrente anno scolastico (in
DettagliIl registratore digitale
Il registratore digitale Nella pratica di laboratorio capita spesso di dover registrare segnali lentamente variabili per intervalli di tempo lunghi. Lo scopo della seconda esperienza è quello di realizzare
DettagliPrinciples of Concurrent Programming
Principles of Giuseppe Anastasi g.anastasi@iet.unipi.it Pervasive Computing & Networking Lab. () Dept. of Information Engineering, University of Pisa Overview Concetti preliminari Interazione fra processi
DettagliSegnali. I segnali in Unix sono un meccanismo semplice per inviare degli interrupt software ai processi.
Segnali I segnali in Unix sono un meccanismo semplice per inviare degli interrupt software ai processi. Solitamente sono utilizzati per gestire errori e condizioni anomale, piuttosto che per trasmettere
DettagliSC 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
DettagliFunzioni e. Alessandra Giordani Mercoledì 16 maggio 2012
Funzioni e passaggio parametri Alessandra Giordani agiordani@disi.unitn.it Mercoledì 16 maggio 2012 http://disi.unitn.it/~agiordani/ Cosa vedremo oggi Le funzioni Il passaggio dei parametri Le dichiarazioni
DettagliLe basi del linguaggio Java
Le basi del linguaggio Java Compilazione e interpretazione Quando si compila il codice sorgente scritto in Java, il compilatore genera il codice compilato, chiamato bytecode. È un codice generato per una
DettagliEsercizi di Verifica Aprile 2005 Università disalerno
Laboratorio di Sistemi Operativi: Prof.ssa A. Rescigno Anno Acc. 2004-2005 Esercizi di Verifica Aprile 2005 Università disalerno Nome e Cognome: Matricola: Classe 1 Classe 2 p-p p-d 1 2 3 4 5 6 7 tot /10
DettagliFunzioni, Stack e Visibilità delle Variabili in C
Funzioni, Stack e Visibilità delle Variabili in C Programmazione I e Laboratorio Corso di Laurea in Informatica A.A. 2016/2017 Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7
DettagliProcessi UNIX. I Processi nel SO UNIX. Gerarchie di processi UNIX. Modello di processo in UNIX
Processi UNIX I Processi nel SO UNIX UNIX è un sistema operativo multiprogrammato a divisione di tempo: unità di computazione è il processo Caratteristiche del processo UNIX: processo pesante con codice
DettagliSC 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
Dettagli5. I device driver. Device driver - gestori delle periferiche. Struttura interna del sistema operativo Linux. Tipi di periferiche. Tipi di periferiche
Device driver - gestori delle periferiche Struttura interna del sistema operativo Linux Sono moduli software che realizzano l interfacciamento e la gestione dei dispositivi periferici Interagiscono con
DettagliCorso di Reti di Calcolatori L-A
Università degli Studi di Bologna Facoltà di Ingegneria Corso di Reti di Calcolatori L-A Esercitazione 4 (proposta) Server Multiservizio: Socket C con select Luca Foschini Anno accademico 2010/2011 Esercitazione
DettagliInterazione fra processi: meccanismi di sincronizzazione e comunicazione
Interazione fra processi: meccanismi di sincronizzazione e comunicazione Classificazione Processi interagenti processi interagenti/indipendenti due processi sono indipendenti se l esecuzione di ognuno
DettagliSistemi Operativi GESTIONE DEI PROCESSI. D. Talia - UNICAL. Sistemi Operativi 4.1
GESTIONE DEI PROCESSI 4.1 Processi Concetto di Processo Scheduling di Processi Operazioni su Processi Processi Cooperanti Concetto di Thread Modelli Multithread I thread in diversi S.O. 4.2 Concetto di
DettagliThreads: 1. Concetti di base 2. Threads in sistemi operativi attuali (NT/UNIX)
Sistemi Operativi I Corso di Laurea in Ingegneria Informatica Facolta di Ingegneria, Universita La Sapienza Docente: Francesco Quaglia Threads: 1. Concetti di base 2. Threads in sistemi operativi attuali
Dettagliperror: individuare l errore quando una system call restituisce -1
perror: individuare l errore quando una system call restituisce -1 Quando una system call (o una funzione di libreria) non va a buon fine, restituisce come valore -1 Come si fa a sapere più precisamente
DettagliProcessi. 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
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
DettagliInterprocess communication: Pipe
Interprocess communication: Pipe Affinché due processi possano cooperare, è spesso necessario che comunichino fra loro dei dati. Una prima possibile soluzione a questo problema consiste nell utilizzo condiviso
Dettagli