Programmazione di Sistema
|
|
- Gilda Lelli
- 5 anni fa
- Visualizzazioni
Transcript
1 Programmazione di Sistema Massimo Bernaschi Istituto per le Applicazioni del Calcolo Mauro Picone Consiglio Nazionale delle Ricerche Viale Manzoni, Rome - Italy m.bernaschi@iac.cnr.it
2 Gestione delle eccezioni in Win32 In Win32 è possibile per un applicazione gestire eventi inattesi come errori di indirizzamento, operazioni illegali o errori di sistema attraverso i meccanismi di Structured Exception Handling (SEH) Ad esempio un programma che cerca di dereferenziare un puntatore a NULL dovrebbe terminare immediatamente. La SEH permette di definire un exception handler che viene invocata prima della terminazione. È importante comprendere la differenza tra una condizione di errore che, in genere, avviene occasionalmente in locazioni note e un eccezione che può avvenire quasi ovunque ed in maniera non prevedibile. La SEH è supportata attraverso una combinazione di funzioni 2
3 Win32, supporto del compilatore e del run-time. 1. prima di tutto deve essere individuato il blocco di codice da controllare 2. il blocco viene inserito in: try { /* blocco di codice da controllare */ } 3. l eccezione è gestita da: except (filter expression) { /* codice di gestione dell eccezione */ } try e except sono speciali keyword. Il meccanismo gestisce anche i casi di annidamento di blocchi e di chiamate a funzione. 3
4 Una volta che l handler completa l esecuzione, il controllo passa all istruzione successiva al blocco dell handler La filter expression è valutata immediatamente dopo l eccezione. L espressione può essere una costante, una espressione condizionale (? : ) o una chiamata ad una funzione di filtro. In ogni caso l espressione ritorna uno di tre possibili valori: EXCEPTION EXECUTE HANDLER EXCEPTION CONTINUE SEARCH EXCEPTION CONTINUE EXECUTION È possibile determinare il tipo di eccezione usando la funzione DWORD GetExceptionCode(). EXCEPTION ACCESS VIOLATION, EXCEPTION DATATYPE MISALIGNMENT, EXCEPTION NONCONTINUABLE EXECUTION, 4
5 EXCEPTION FLT OVERFLOW,... speciali eccezioni possono essere definite dall utente tramite la funzione void RaiseException( DWORD dwexceptioncode, DWORD dwexceptionflags, DWORD nnumberofarguments, const ULONG_PTR* lparguments); Notare come non sia possibile sollevare un eccezione in un altro processo. le eccezioni floating point sono disabilitate per default ma possono essere attivate con la funzione controlp() Ulteriori informazioni possono essere ottenute con la funzione GetExceptionInformation() che può essere invocata però solo all interno dell espressione filtro. 5
6 Handler per la terminazione in Win32 Un termination handler è molto simile ad un gestore di eccezioni ma viene eseguito sia quando un thread lascia un blocco al termine della regolare esecuzione sia quando viene sollevata un eccezione. La struttura è simile alla precedente: try { /* blocco di codice */ } finally { /* handler di terminazione */ } ma non esiste il concetto di filtro (perché il blocco viene eseguito comunque). 6
7 Lo scopo di questo handler è quello di ripristinare lo stato del processo indipendentemente dal modo di uscita dal blocco try conclusione naturale falling through; esecuzione di return, break, goto, longjump, continue, leave leave è specifico del C Microsoft ed è più efficiente di un goto perché non c è gestione dello stack; eccezione; BOOL AbnormalTermination() indica il tipo di terminazione. Notare che un blocco try non può avere contemporaneamente un blocco except e finally ma è possibile annidare i blocchi!. 7
8 try { while(...) try {... if(...) try { } except() { } } finally { } } except() { } I termination handler non sono eseguiti se un processo (o thread) termina (via ExitXXX o TerminateXXX). 8
9 UNIX/Linux offrono la funzione atexit(void (*function)(void)) Notare le differenze con meccanismi analoghi di gestione delle eccezioni presenti in C++ e Java. Microsoft consiglia di non usare gli exception handler di Win32 all interno di programmi in C++. esempio: programmi 4.2 e 4.3 (uso dei filtri). 9
10 Console Control Handler I Console Control Handler sono in grado di rilevare e gestire anche eventi come lo scollegamento di un utente o il Ctrl-c da tastiera. Sono disponibili su tutte le piattaforme Windows ad eccezione di WindowsCE (o PockePC). Per aggiungere o rimuovere un console handler: BOOL SetConsoleCtrlHandler ( PHANDLER_ROUTINE HandlerRoutine, BOOL Add) Se Add è TRUE la funzione HandlerRoutine è eseguita quando viene generata la sequenza Ctrl-c o Ctrl-break (ed altre). La funzione HandlerRoutine prende un argomento (tipo DWORD) che indica il tipo di segnale e ritorna un valore 10
11 booleano. Se HandlerRoutine è NULL ed Add è TRUE i segnali Ctrl sono ignorati. A seconda del valore di ritorno di HandlerRoutine i successivi handler sono eseguiti oppure no. Notare che gli handler sono eseguiti in ordine inverso a quello con cui sono stati inseriti. L handler esegue in un thread indipendente. Il programma continua ad operare. Per generare questo tipo di segnali da un applicazione si può usare la GenerateConsoleCtrlEvent(). I segnali sono applicati all intero processo mentre le eccezioni si applicano solo ai singoli thread che eseguono il codice dove avviene l eccezione stessa (esempio: programma 4.5). 11
12 Annidamento di eccezioni Un eccezione può essere gestita da un solo handler. Più handler possono fare riferimento ad uno stesso blocco nel senso che se un filtro ritorna il valore EXCEPTION CONTINUE SEARCH, allora viene cercato un altro handler nel blocco che include il precedente. try In Win32 più handler non possono stare allo stesso livello per un singolo blocco try. 12
13 Eccezioni in C++ e Java Il C++ offre tre operatori per la gestione delle eccezioni: try, throw, catch. L utilizzo è il seguente: try { // blocco di codice throw exception; } catch (type exception) { // codice da eseguire in caso di eccezione } L eccezione viene sollevata esplicitamente dall operatore throw Il blocco catch viene eseguito ricevendo il parametro passato da throw 13
14 catch può essere overloaded in modo da accettare diversi tipi come parametri. È possibile define un blocco catch in modo da catturare tutte le eccezioni indipendentemente dal tipo usato nella throw. Per questo è sufficiente usare la forma catch(...) È possibile annidare blocchi try-catch all interno di altri blocchi try 14
15 La gestione delle eccezioni in Java è simile ma non identica a quella del C++. Gli statement utilizzati sono sempre try, catch e thrown per generare eccezioni custom. Un blocco try può essere seguito da più blocchi catch che specificano diversi tipi (sottoclassi in Java) della classe Exception. I blocchi catch sono valutati in ordine fino a quando uno non è applicabile. Un solo blocco catch è eseguito per una data eccezione. 15
16 Gestione dei segnali (Unix/Linux) La gestione dei segnali in Unix avviene in gran parte nella libreria C. La funzionalità più simile ai segnali Unix in Win32 sono i console control handlers Alcuni segnali Unix corrispondono ad eccezioni in Win32: SIGILL - EXCEPTION PRIV INSTRUCTION SIGSEGV - EXCEPTION ACCESS VIOLATION SIGUSR1 e SIGUSR2 - Eccezioni generate dall utente. Win32 non genera SIGILL, SIGSEGV, SIGTERM e non supporta SIGINT 16
17 Gestione dei segnali in UNIX Un signal indica ad un processo che è avvenuto un evento. Il processo non sa esattamente quando viene inviato il signal. La maniera migliore di gestire un segnale è utilizzare la funzione sigaction. Una volta che è stato installato, il signal handler rimane definito (originariamente non era così). Mentre l handler per un certo segnale è in esecuzione, lo stesso segnale è bloccato così come tutti gli altri segnali specificati nella sa mask passata alla sigaction. Anche se un segnale è generato più di una volta mentre è bloccato, viene inviato una sola volta. In altre parole, i segnali Unix non si accodano. 17
18 POSIX.1 non specifica l ordine nel quali i segnali sono inviati ad un processo. In genere, comunque, i segnali relativi allo stato corrente del processo, come SIGSEGV, sono inviati prima di tutti gli altri. 18
19 Signal Handling #include <signal.h> struct sigaction { void (*sa_handler)(int); sigset_t sa_mask; int sa_flags; void (*sa_restorer)(void); } int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact); 19
20 Signal Handling Il primo argomento per il signal handler è sempre il numero del segnale. Esistono alcuni valori speciali per il signal handler quali: SIG IGN: ignora il segnale SIG DFL: azione di default (nella gran parte dei casi kill il processo). SIGSTOP and SIGKILL non possono essere intercettati. 20
21 Signal Handling Possibili valori per i signal flags sono: SA RESTART: system calls interrotte dai segnali sono rinizializzate automaticamente. SA NODEFER: un segnale non è automaticamente bloccato dal sistema mentre è in esecuzione il corrispondente signal-handler. SA SIGINFO: fornisce informazioni aggiuntive ad un signal handler (vedi la struct siginfo). La lista completa dei segnali è disponibile (sotto Linux) in: /usr/include/bits/signum.h. 21
22 Signal Handling Altre funzioni relative alla gestione di segnali: int sigprocmask(int how, const sigset t *set, sigset t *oldset); La maschera dei segnali bloccati è modificata a seconda del valore del parametro how: SIG BLOCK: la nuova maschera è l unione della maschera corrente e dell insieme specificato in set; SIG UNBLOCK: la nuova maschera è l intersezione della maschera corrente e del complemento dell insieme specificato in set; SIG SETMASK: la maschera attuale è sostituita con il set specificato; int sigpending(sigset t *set); int sigsuspend(const sigset t *mask); La funzione sigsuspend sostituisce temporaneamente la signal mask di un processo con quella passata come argomento e sospende il processo fino a quando non viene ricevuto un segnale (non bloccato). unsigned int alarm(unsigned int seconds); 22
23 Come inviare un segnale La funzione kill invia un segnale ad un processo o ad un gruppo di processi. int kill(pid t pid, int signo) Ci sono quattro diverse possibilità per il valore dell argomento pid: pid>0 Il segnale è inviato al processo pid. pid==0 Il segnale è inviato a tutti i processi che fanno parte del gruppo a cui appartiene il processo invocante. pid==-1 Il segnale è inviato ad ogni processo ad eccezione del processo numero 1 (init) pid<-1 Il segnale è inviato ad ogni processo nel gruppo -pid 23
24 Se signo è uguale a 0, non viene inviato nessun segnale, ma viene comunque effettuato il controllo degli errori. Affinché un processo possa inviare un segnale ad un altro, o il processo deve avere privilegi di root, oppure il real o effective user ID deve essere lo stesso del real o saved ID del ricevente. La funzione raise invia un segnale al processo invocante. 24
25 goto non locale Il linguaggio C non permette un goto ad un punto (label) appartenente ad un altra funzione. Questo tipo di salto incondizionato è reso possibile dalle funzioni setjmp e longjmp. setjmp(jmp buf env) e longjmp sono utili per gestire errori ed interruzioni ricevute in una funzione fortemente annidata in un programma. setjmp() salva lo stack in env affinché possa essere utilizzato successivamente dalla longjmp(); 25
26 goto non locale #include <setjmp.h> int setjmp(jmp_buf env); void longjmp(jmp_buf env, int val); longjmp non può usare 0 come valore di ritorno (secondo argomento). Se longjmp viene invocata con un secondo argomento uguale a 0, viene ritornato automaticamente 1. 26
27 goto non locale Quale è lo stato delle variabili automatiche? Hanno valori corrispondenti a quelli precedenti il momento in cui è stata invocata la setjmp? Le variabili che sono dichiarate globali o statiche non sono modificate quando viene eseguita la longjmp. esempio: apue/environ/testjmp.c 27
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
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 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
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
DettagliLABORATORIO DI SISTEMI OPERATIVI
LABORATORIO DI SISTEMI OPERATIVI Corso di Laurea Triennale in Ingegneria Informatica A.A. 2018/2019 Guglielmo Cola Email: g.cola@iet.unipi.it Web: iet.unipi.it/g.cola Processi in Unix/Linux (parte II)
DettagliSegnali. Tecnica di comunicazione asincrona tra processi. Si può solo inviare uno tra un insieme fissato di segnali
Segnali ed allarmi Segnali Tecnica di comunicazione asincrona tra processi Si può solo inviare uno tra un insieme fissato di segnali Il destinatario viene interrotto, e si salta ad una procedura specifica
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 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:
DettagliLINUX: struttura generale
LINUX: struttura generale User Interface The layers of a UNIX system. 1 Processi in LINUX Ogni processo nasce con un solo thread Un processo gira in modalità utente; quando effettua una system call passa
DettagliI segnali. First the signals described in the original POSIX standard.
I segnali Prof.ssa Sara Michelangeli I segnali sono interruzioni inviate ai processi dal kernel, da un altro processo utente, oppure da un processo a se' stesso. Possono essere utilizzati dal sistema operativo
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
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
DettagliProgrammazione a Oggetti Lezione 11. Eccezioni e Packages
Programmazione a Oggetti Lezione 11 Eccezioni e Packages Sommario Eccezioni Sollevamento Cattura Trattamento Packages e visibilità Eccezioni I programmi spesso si trovano ad operare in condizioni anomale:
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:
DettagliInsegnamento di Laboratorio di algoritmi e strutture dati
Insegnamento di Laboratorio di algoritmi e strutture dati Roberto Posenato ver. 0.6, 31/01/2008 1 / 25 Si comincia... 1 Esigenza... Definizione Tipi di eccezioni Sollevare eccezioni Gestire le eccezioni
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
DettagliProcessi 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
DettagliLe eccezioni in Java
Eccezioni 1 Le eccezioni in Java i tipi di eccezione sono particolari classi che contengono solo il costruttore ci possono essere più costruttori overloaded sono definite in moduli separati da quelli che
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
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
DettagliTerza 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ò
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
DettagliOCA JAVA 7 SE PROGRAMMER I DOCENTE: DOTT. FAUSTO DELL ANNO
CENTRO STUDI ULISSE Via Buccino, n. 22 - C.a.p. 84018 - Scafati (SA) Tel. Fax. 081.19970299-339.2365416-349.4152010 E-mail: info@centrostudiulisse.it - www.centrostudiulisse.it OCA JAVA 7 SE PROGRAMMER
DettagliSincronizzazione tra processi! in Unix: i segnali!
Sincronizzazione tra processi! in Unix: i segnali! 1 Sincronizzazione tra processi La sincronizzazione permette di imporre vincoli sull'ordine di esecuzione delle operazioni dei processi interagenti. Unix
DettagliEccezioni e Thread (cenni)
Eccezioni e Thread (cenni) Linguaggi di Programmazione: Paradigmi di Programmazione (Sperimentazioni) Matteo Baldoni Dipartimento di Informatica Universita` degli Studi di Torino C.so Svizzera, 185 I-10149
DettagliIl linguaggio C. Istruzioni, funzioni, dati strutturati
Il linguaggio C Istruzioni, funzioni, dati strutturati Istruzioni Servono a dirigere il flusso di esecuzione di un programma controllano l ordine di esecuzione delle espressioni, quindi dei loro side effects
DettagliProgrammazione ad Oggetti
Programmazione ad Oggetti Java Eccezioni Eccezioni in breve Un eccezione è un oggetto che descrive una situazione anomala o di errore L eccezioni vengono lanciate da una parte di un programma e possono
DettagliGestione delle eccezioni in Java
Gestione delle eccezioni in Java Fondamenti di Informatica Ingegneria Gestionale Canale AL 1 Le eccezioni in Java Exception handling: insieme di costrutti e regole sintattiche e semantiche presenti nel
DettagliProgrammazione a Oggetti. Eccezioni
Programmazione a Oggetti Eccezioni Sommario Eccezioni Generalità, motivazioni Eccezioni in Java Sollevamento Cattura Trattamento Eccezioni I programmi spesso si trovano ad operare in condizioni anomale:
DettagliTerza 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ò
DettagliLe eccezioni in Java
Le eccezioni in Java Corso di laurea in 1 Eccezioni L istruzione try/catch La propagazione dell eccezioni Intercettare e gestire eccezioni 2 Eccezioni in breve Un eccezione è un oggetto che descrive una
DettagliIl linguaggio Java. Le eccezioni
Il linguaggio Java Le eccezioni Eccezioni Definizione: evento eccezionale che si verifica durante l esecuzione di un programma e che ne altera il normale flusso di esecuzione Situazioni che causano eccezioni
DettagliProcesso in esecuzione
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.
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.
DettagliFunzioni, Stack e Visibilità delle Variabili in C
Funzioni, Stack e Visibilità delle Variabili in C Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2018/2019 Argomenti del Corso Ogni lezione consta di una spiegazione assistita da slide,
DettagliCast implicito. Il cast è fatto automaticamente quando un tipo più basso viene assegnato ad un tipo più alto. byte short int long float double
Il cast Cast implicito Il cast è fatto automaticamente quando un tipo più basso viene assegnato ad un tipo più alto Per esempio: byte short int long float double int x = 10; float f; f = x; Il valore di
DettagliProcesso in esecuzione
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.
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
DettagliJava Virtual Machine. Indipendenza di java dalla macchina ospite. I threads in Java
programmi sorgente: files.java compilatore Indipendenza di java dalla macchina ospite Programmi java Programmi java Programmi java files.class bytecode linker/loader bytecode bytecode Java API files.class
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
DettagliLaboratorio di reti I
Laboratorio di reti I Stefano Brocchi brocchi@dsi.unifi.it 13 ottobre, 2009 Stefano Brocchi Laboratorio di reti I 13 ottobre, 2009 1 / 27 Introduzione Obiettivi del corso Aspetti di programmazione Java
DettagliLe eccezioni in Java
Eccezioni 1 Le eccezioni in Java i tipi di eccezione sono particolari classi che contengono solo il costruttore ci possono essere più costruttori overloaded sono definite in moduli separati da quelli che
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:
DettagliEccezioni in Java A. FERRARI
Eccezioni in Java A. FERRARI Eccezioni Una eccezione è un oggetto che descrive una situazione anomala o una situazione di errore Le eccezioni vengono «lanciate» (throw) in un punto del programma e possono
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
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:
DettagliCominciamo ad analizzare la rappresentazione delle informazioni... di Cassino. C. De Stefano Corso di Fondamenti di Informatica Università degli Studi
Un linguaggio ad alto livello deve offrire degli strumenti per: rappresentare le informazioni di interesse dell algoritmo definire le istruzioni che costituiscono l algoritmo Cominciamo ad analizzare la
DettagliSistemi 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
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
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
DettagliModulo 7 System call relative ai segnali
1 Modulo 7 Laboratorio di Sistemi Operativi I Anno Accademico 2008-2009 Copyright 2005-2007 Francesco Pedullà, Massimo Verola Copyright 2001-2005 Renzo Davoli (Università di Bologna), Alberto Montresor
Dettaglieccezioni Alberto Ferrari Alberto Ferrari Programmazione di applicazioni SW
eccezioni Alberto Ferrari eccezioni o C++ fornisce strumenti per gestire situazioni eccezionali o terminologia o sollevare un eccezione (to throw an exception) = segnalare una situazione eccezionale o
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
DettagliSegnali. Sono interruzioni software
I segnali 1 Segnali Sono interruzioni software comunicano al processo il verificarsi di un evento ad ogni evento corrisponde un segnale numerato un processo all arrivo di un segnale di un certo tipo può
DettagliCORSO DI SISTEMI OPERATIVI A - ESERCITAZIONE 5
UNIVERSITÀ DEGLI STUDI DI PARMA Facoltà di Ingegneria Corso di Laurea in Ingegneria Elettronica-Informatica-Telecomunicazioni a.a. 2001-2002 CORSO DI SISTEMI OPERATIVI A - ESERCITAZIONE 5 1 Segnali void
DettagliSegnali. Sono interruzioni software
I segnali 1 Segnali Sono interruzioni software comunicano al processo il verificarsi di un evento ad ogni evento corrisponde un segnale numerato un processo all arrivo di un segnale di un certo tipo può
DettagliGestire le situazioni di errore
Gestire le situazioni di errore #include using namespace std; Classe VettoreDiInteri const int MAX = 10; class VettoreInteri { int v[max]; public: ; Gestire le situazioni di errore Ottenere
DettagliInformatica 1 Tipi e dichiarazioni in C++ C++ - Tipi e dichiarazioni 1
Informatica 1 Tipi e dichiarazioni in C++ C++ - Tipi e dichiarazioni 1 Cosa è il C++ E un linguaggio di programmazione derivato dal C Può essere usato per modificare il SO Unix e i suoi derivati (Linux)
DettagliSpazio di indirizzamento virtuale
Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 016-01 Spazio di indirizzamento virtuale Pietro Di Lena - pietro.dilena@unibo.it // The function name says it all int stack_overflow (){
DettagliProgrammazione a Oggetti Lezione 7. Il linguaggio Java: aspetti generali
Programmazione a Oggetti Lezione 7 Il linguaggio Java: aspetti generali Sommario Obiettivi di JAVA Portabilità: produrre codice eseguibile su più piattaforme (JVM) Affidabilità: Evitare il più possibile
DettagliProgrammazione a oggetti
Programmazione a oggetti Quanti oggetti, tra di loro parlando, fanno programmi. Pilu Crescenzi piluc@dsi.unifi.it Università di Firenze Programmazione a oggetti p.1/32 Cosa è un oggetto Una scatola software
DettagliAstrazione procedurale
Astrazione procedurale 1 Procedure stand alone indipendenti da specifici oggetti come si realizzano in Java insieme di metodi statici definiti dentro una classe che non ha variabili e metodi di istanza
DettagliIntroduzione ai thread
Introduzione ai thread Processi leggeri. Immagine di un processo (codice, variabili locali e globali, stack, descrittore). Risorse possedute: : (file aperti, processi figli, dispositivi di I/O..),. L immagine
DettagliCorso di Fondamenti di Informatica Il sistema dei tipi in C++
Corso di Fondamenti di Informatica Il sistema dei tipi in C++ Anno Accademico Francesco Tortorella Struttura di un programma C++ // Programma semplice in C++ #include int main() { cout
DettagliCorso 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
DettagliInformatica 3. LEZIONE 6: Il controllo dell esecuzione. Modulo 1: La gestione delle eccezioni Modulo 2: Programmazione concorrente
Informatica 3 LEZIONE 6: Il controllo dell esecuzione Modulo 1: La gestione delle eccezioni Modulo 2: Programmazione concorrente Informatica 3 Lezione 6 - Modulo 1 La gestione delle eccezioni Il controllo
DettagliAvvio. 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.
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
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
DettagliLe eccezioni in Java
Le eccezioni in Java G. Grossi 17 gennaio 2007 Indice 1 Le eccezioni Gerarchia eccezioni Le eccezioni Object Throwable Error Exception Controllate Non controllate RunTimeException Indice Le eccezioni 1
DettagliInterrupts and Exceptions
s and Exceptions Da Understanding Linux Kernel Daniel P. Bovet, Marco Cesati Gli interrupts sono generati da timer e da periferiche sono asincroni Le exception sono sincrone Errori di programma Condizioni
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
DettagliRichiami sui Concetti Fondamentali dei Processi
Processi Processi 1 Richiami sui Concetti Fondamentali dei Processi Processi 2 Definizione Nell ambito dei sistemi operativi esistono diverse definizioni di processo, ad es. un programma in esecuzione
DettagliEccezioni. Programmazione in rete e laboratorio Eccezioni. Classi eccezioni
Programmazione in rete e laboratorio 2004-05 Alberto Martelli Eccezioni Eccezioni Eccezioni: meccanismo per trattare condizioni eccezionali - divisione per zero - indice di array fuori dai limiti - errori
DettagliVariabili e Funzioni. Informatica 1 / 19
Variabili e Funzioni Informatica 1 / 19 Programmi C e Un programma C e composto da funzioni e variabili Variabile: memorizza valori appartenenti ad un insieme di definizione (dipendente dal tipo) Funzione:
DettagliUniversità degli Studi di Cassino
Corso di Gestione eccezioni nel MIPS Interruzioni Anno Accademico 2007/2008 Francesco Tortorella Modi di esecuzione user / kernel Due modi di esecuzione: User kernel Per ognuno dei due modi di esecuzione
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()
DettagliProgrammazione ad oggetti
DAIS Univ. Ca' Foscari Venezia Programmazione ad oggetti Samuel Rota Bulò Eccezioni Le eccezioni sono situazioni di errore che possono essere generate e gestite dal vostro programma a run-time Quando viene
DettagliUniversità degli Studi di Cassino
Corso di Gestione eccezioni nel MIPS Interruzioni Anno Accademico 2004/2005 Francesco Tortorella Modi di esecuzione user / kernel Due modi di esecuzione: User kernel Per ognuno dei due modi di esecuzione
DettagliModi di esecuzione user / kernel
Corso di Gestione eccezioni nel MIPS Interruzioni Anno Accademico 2006/2007 Francesco Tortorella Modi di esecuzione user / kernel Due modi di esecuzione: User kernel Per ognuno dei due modi di esecuzione
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
DettagliPerché il linguaggio C?
Il linguaggio C 7 Perché il linguaggio C? Larga diffusione nel software applicativo Standard di fatto per lo sviluppo di software di sistema Visione a basso livello della memoria Capacità di manipolare
DettagliPag. 1. Il Nucleo del sistema operativo (la gestione dei processi)
shell Programmi utente Modo utente Il Nucleo del sistema operativo (la gestione dei processi) Interfaccia delle chiamate di sistema File system Gestione processi Device driver Gestione memoria HARDWARE
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
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
DettagliInizializzare oggetti
Inizializzare oggetti Uso della Classe Software per TLC - AA 2008/2009 1 Costruttori e polimorfismo Uso della Classe Un codice migliore Software per TLC - AA 2008/2009 2 Costruttori ed Ereditarietà Output:
DettagliOggi. La programmazione strutturata - III. Sequenza e selezione. Dove siamo. Iterazione: while e do/while. Raffinamenti successivi.
La programmazione strutturata - Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro/ mizzaro@dimi.uniud.it Programmazione, lezione 6 Oggi Stefano
DettagliStruttura di un programma C++
Struttura di un programma C++ // Programma semplice in C++ #include using namespace std; int main() { cout
DettagliSISTEMI OPERATIVI THREAD. Giorgio Giacinto Sistemi Operativi
SISTEMI OPERATIVI THREAD 2 Motivazioni» Un programma complesso può eseguire in modo concorrente più funzioni attraverso la creazione e gestione di processi figli attraverso il meccanismo dei thread» La
DettagliIl linguaggio C. Notate che...
Il linguaggio C Notate che... 1 Il C è un linguaggio a blocchi int main (void) { blocco } 2 Il C è un linguaggio a blocchi (2) Non è possibile mischiare dichiarazioni e comandi! int main (void) { } Dichiarazione
DettagliFONDAMENTI DI INFORMATICA C Linguaggio Java: Eccezioni
Università degli Studi di Modena e Reggio Emilia Facoltà di Ingegneria CORSO DI FONDAMENTI DI INFORMATICA C Linguaggio Java: Eccezioni Prof. Zambonelli, Ing. Cabri, Ing. Denti, Ing. Andrea Aime Zambonelli,
DettagliACSO Programmazione di Sistema e Concorrente
ACSO Programmazione di Sistema e Concorrente P2 Modello Thread 2/12/2015 programma e parallelismo il tipo di parallelismo dipende dal grado di cooperazione (scambio di informazione) necessario tra attività
DettagliPROGRAMMAZIONE Nomi, binding, regole di visibilità (scope)
PROGRAMMAZIONE 2 19. Nomi, binding, regole di visibilità (scope) PR2 2017-2018 1 Nomi Un nome in un linguaggio di programmazione è esattamente quello che immaginate o la maggior parte dei nomi sono definiti
DettagliEccezioni. Comportamento di default (esempio) Propagazione delle eccezioni
Università degli Studi di Roma La Sapienza Corso di Laurea in Ingegneria dell Informazione (sede di Latina) Corso di Laurea in Ingegneria dell Informazione (consorzio Nettuno) Eccezioni L esistenza di
DettagliCostrutti di Programmazione Strutturata. Informatica 1 / 22
Costrutti di Programmazione Strutturata Informatica 1 / 22 Costrutti di Base Ricordi? Un algoritmo è detto strutturato se usa solo Sequenze di istruzioni Selezioni (se predicato allora fai istruzioni altrimenti
DettagliGESTIONE DEGLI ERRORI
GESTIONE DEGLI ERRORI Spesso vi sono istruzioni critiche, che in certi casi possono produrre errori L approccio classico consiste nell inserire controlli (if else..) per cercare di intercettare a priori
DettagliGESTIONE DEGLI ERRORI
GESTIONE DEGLI ERRORI Spesso vi sono istruzioni critiche, che in certi casi possono produrre errori L approccio classico consiste nell inserire controlli (if else..) per cercare di intercettare a priori
Dettagli