Podcast
Questions and Answers
Cosa restituisce la chiamata di sistema sigaction in caso di successo?
Cosa restituisce la chiamata di sistema sigaction in caso di successo?
Quale dei seguenti parametri è un puntatore al nuovo gestore di segnali nella chiamata sigaction?
Quale dei seguenti parametri è un puntatore al nuovo gestore di segnali nella chiamata sigaction?
Cosa succede se il parametro 'act' è impostato a NULL durante la chiamata sigaction?
Cosa succede se il parametro 'act' è impostato a NULL durante la chiamata sigaction?
Quale dei seguenti membri della struttura sigaction è utilizzato per la maschera dei segnali bloccati?
Quale dei seguenti membri della struttura sigaction è utilizzato per la maschera dei segnali bloccati?
Signup and view all the answers
Cosa succede alla maschera dei segnali di un processo quando viene creato un nuovo processo?
Cosa succede alla maschera dei segnali di un processo quando viene creato un nuovo processo?
Signup and view all the answers
Quale invocazione di sigaction imposta un nuovo gestore di segnali e restituisce il gestore attuale?
Quale invocazione di sigaction imposta un nuovo gestore di segnali e restituisce il gestore attuale?
Signup and view all the answers
Quale valore è comunemente utilizzato per indicare un errore in casistica di sigaction?
Quale valore è comunemente utilizzato per indicare un errore in casistica di sigaction?
Signup and view all the answers
Quale dei seguenti membri della struttura sigaction modifica il comportamento del segnale?
Quale dei seguenti membri della struttura sigaction modifica il comportamento del segnale?
Signup and view all the answers
Quale dei seguenti eventi può generare un segnale in un processo?
Quale dei seguenti eventi può generare un segnale in un processo?
Signup and view all the answers
Quale carattere speciale, digitato dall'utente, genera un segnale di interruzione?
Quale carattere speciale, digitato dall'utente, genera un segnale di interruzione?
Signup and view all the answers
Cosa rappresentano le sequenze di interi unici utilizzati per i segnali?
Cosa rappresentano le sequenze di interi unici utilizzati per i segnali?
Signup and view all the answers
Quale delle seguenti affermazioni sui segnali è corretta?
Quale delle seguenti affermazioni sui segnali è corretta?
Signup and view all the answers
Quale scenario non genera un segnale secondo le cause descritte?
Quale scenario non genera un segnale secondo le cause descritte?
Signup and view all the answers
Cosa indica il carattere di sospensione (Control-Z) in un terminale?
Cosa indica il carattere di sospensione (Control-Z) in un terminale?
Signup and view all the answers
Chi notifica un processo quando si verifica un errore hardware?
Chi notifica un processo quando si verifica un errore hardware?
Signup and view all the answers
Quale dei seguenti eventi non è considerato un evento software per generare segnali?
Quale dei seguenti eventi non è considerato un evento software per generare segnali?
Signup and view all the answers
Cosa succede a un segnale inviato a un processo mentre esegue un handler senza il flag SA_NODEFER settato?
Cosa succede a un segnale inviato a un processo mentre esegue un handler senza il flag SA_NODEFER settato?
Signup and view all the answers
Quale funzione viene utilizzata per inizializzare un set di segnali come vuoto?
Quale funzione viene utilizzata per inizializzare un set di segnali come vuoto?
Signup and view all the answers
Qual è il tipo di dato utilizzato per rappresentare un set di segnali?
Qual è il tipo di dato utilizzato per rappresentare un set di segnali?
Signup and view all the answers
Quale delle seguenti funzioni serve a verificare se un segnale è membro di un set di segnali?
Quale delle seguenti funzioni serve a verificare se un segnale è membro di un set di segnali?
Signup and view all the answers
Cosa fa la funzione sigfillset?
Cosa fa la funzione sigfillset?
Signup and view all the answers
Cosa accade alla maschera dei segnali quando viene creato un nuovo processo?
Cosa accade alla maschera dei segnali quando viene creato un nuovo processo?
Signup and view all the answers
Quale flag deve essere utilizzato per permettere invocazioni annidate di un handler?
Quale flag deve essere utilizzato per permettere invocazioni annidate di un handler?
Signup and view all the answers
Quale funzione deve essere usata per rimuovere un segnale specifico da un set di segnali?
Quale funzione deve essere usata per rimuovere un segnale specifico da un set di segnali?
Signup and view all the answers
Qual è la funzione della chiamata di sistema kill() quando l'argomento sig è impostato a 0?
Qual è la funzione della chiamata di sistema kill() quando l'argomento sig è impostato a 0?
Signup and view all the answers
Cosa indica il valore di pid quando è uguale a 0 nella chiamata di sistema kill()?
Cosa indica il valore di pid quando è uguale a 0 nella chiamata di sistema kill()?
Signup and view all the answers
Cosa accade se la chiamata kill() fallisce con errore ESRCH?
Cosa accade se la chiamata kill() fallisce con errore ESRCH?
Signup and view all the answers
Quale affermazione è corretta riguardo al segnale SIGINT?
Quale affermazione è corretta riguardo al segnale SIGINT?
Signup and view all the answers
Quale macro rappresenta il numero totale dei segnali disponibili?
Quale macro rappresenta il numero totale dei segnali disponibili?
Signup and view all the answers
Cosa indica pid == -1 nella chiamata kill()?
Cosa indica pid == -1 nella chiamata kill()?
Signup and view all the answers
Quale condizione può portare a un errore EPERM nella chiamata kill()?
Quale condizione può portare a un errore EPERM nella chiamata kill()?
Signup and view all the answers
Qual è il risultato della chiamata kill() quando viene fornito un pid valido ma il segnale non può essere inviato?
Qual è il risultato della chiamata kill() quando viene fornito un pid valido ma il segnale non può essere inviato?
Signup and view all the answers
Study Notes
Introduzione al Laboratorio di Sistemi Operativi UNIX
- Il laboratorio si concentra sui sistemi operativi UNIX.
- Gli argomenti includono l'introduzione a UNIX, l'integrazione C (operatori bitwise, precedenze, preprocessore, pacchettizzazione del codice, compilazione condizionale e utility make), il controllo dei processi, segnali, pipe e FIFO, code di messaggi, memoria condivisa, semafori e introduzione alla programmazione bash.
- Il materiale si basa su appunti del professore degli anni precedenti, sul libro "The Linux Programming Interface" di Michael Kerrisk, e sul libro "Advanced Programming in the UNIX Environment" di W. Richard Stevens.
Cause che Generano i Segnali
- Un segnale è una notifica a un processo di un evento.
- Le cause includono eccezioni hardware (es. istruzioni errate, divisioni per 0, accesso a memoria non valida), eventi software (es. disponibilità di input da un file, timeout di un timer, terminazione di un processo figlio) e input utente (es. caratteri speciali come Ctrl+C o Ctrl+Z).
Nomi Simbolici e Numeri dei Segnali
- I segnali sono rappresentati da interi unici, iniziando da 1.
- Ogni segnale ha un nome simbolico (es. SIGINT, SIGSEGV) definito in
<signal.h>
o<sys/signal.h>
. - Per la portabilità, si consiglia di usare i nomi simbolici nei programmi.
Elenco dei Segnali con strsignal
- La funzione
strsignal
fornisce il nome simbolico di un segnale dato il suo numero.
Elenco dei Segnali BSD
- Presenta un elenco dettagliato dei segnali UNIX con i loro nomi e le azioni di default.
Ciclo di Vita dei Segnali
- Un segnale inizia con un evento.
- Successivamente, il segnale viene inviato a un processo.
- Il segnale è in "attesa" (pending) finché non viene consegnato.
Segnali in Attesa, Consegna e Blocco
- Un segnale in attesa viene inviato al processo durante l'esecuzione di questo.
- In alcuni casi, potrebbe essere necessario evitare che un segnale interrompa l'esecuzione di un segmento di codice. Questo si raggiunge aggiungendo un segnale alla maschera dei segnali del processo.
- L'aggiunta e la rimozione dei segnali dalla maschera vengono gestite da system call specifiche.
Azioni di Default dei Processi in Risposta a un Segnale
- Un processo in risposta a un segnale può ignorare il segnale, terminare, generare un core dump o fermarsi (stopped).
Generazione di un File Core Dump
- In questo caso, viene generato un file contenente un'immagine della memoria virtuale del processo al momento della terminazione.
Rilancio dell'Esecuzione del Processo
- Un processo può essere ripreso dopo essere stato bloccato.
Sistemi di Segnali in Unix & Le Trap
- Le trap sono segnali generati dai comportamenti errati del processo stesso. Esempi includono divisione per zero, accesso a indirizzi di memoria non validi, e tentativi di eseguire istruzioni privilegiate.
Sistemi di Segnali in Unix - Gli Interrupt
- Gli interrupt sono segnali generati da sorgenti esterne al processo, come l'utente.
- Sono generati da tasti di controllo sul terminale (es. Ctrl-C, Ctrl-Z).
Impostazione della Disposizione di Default dei Segnali
- I programmi possono modificare l'azione di default di un segnale.
- Ciò viene fatto impostando una di queste disposizioni: continuare con l'azione di default, ignorare il segnale o eseguire un handler di segnali.
Signal Handler
- Un signal handler è una funzione che gestisce un particolare segnale.
- Quando un segnale viene ricevuto, il kernel chiama l'handler, permettendo al programma di prendere azioni specifiche.
Signal Types and Default Actions
- Una lista di tipi di segnali e le loro azioni di default
Signal Types, Default Actions, & Specific Examples
- Descrizione dei tipi di segnali e le loro azioni corrispondenti nel contesto di UNIX (es. SIGABRT per abort program)
Gestione di Signal Handler
- L'installazione o la definizione di un
signal handler
significa informare il kernel che deve essere chiamata una funzione handler specifico se si riceve quell'evento. - Il kernel avvia l'esecuzione del codice scritto dal programmatore in risposta a un segnale.
- L'esecuzione principale del programma può essere interrotta.
- Un'esecuzione del programma può riprendere esattamente dal punto in cui era stata interrotta quando l'handler termina.
Setting Signal Disposition in Signal Handlers
- Descrizione di come il programma può configurare diversi comportamenti di un segnale.
Signal Handlers and Flow Control
- Descrizione di come un signal handler può gestire il flusso di esecuzione di un processo nel sistema operativo.
Cosa Succede se un Processo Riceve un Segnale Mentre è Sospeso
- Descrizione del comportamento di un processo che riceve un segnale mentre è sospeso (in attesa di una operazione di sistema).
Il Codice del Handler
- Un esempio di codice di un
signal handler
.
kill() System Call
- Descrizione dettagliata della system call
kill()
in UNIX e dei parametri (pid
,sig
). - Eventi di errore.
sigaction() System Call
- Descrizione dettagliata di
sigaction()
, e argomenti comesignum
,act
,oldact
.
La Struttura sigaction
- Descrizione completa della struttura
sigaction
, in particolare consa_handler
,sa_mask
, esa_flags
.
Mask & Fork
- Spiega la maschera del segnale per i processi (i processi ereditano la maschera dei segnali).
- Descrizione di come la maschera viene modificata e/o gestita dai processi.
Sblocco del Segnale Durante un Handler
- Spiega il comportamento del sistema quando un segnale viene inviato durante l'esecuzione di un handler, e quando l'handler restituisce.
Signal Mask
- Descrizione della gestione della
signal mask
per i processi, mostrando le diverse funzioni utilizzate per manipolare isignal set
.
Signal Sets
- Descrizione del tipo di dato
sigset_t
e come rappresentare l'insieme dei segnali.
Impostazione della Maschera dei Segnali di un Processo
- Descrizione delle diverse possibilità di impostazione della maschera dei segnali di un processo.
Gestione dei Segnali in Sistemi Sospesi
- Eventi di errore e risposte del sistema a processi sospesi su
wait
,pause
,sleep
o altre System Call
Handlers di Segnali
- Spiegazione di come l'handler deve essere associato al segnale desiderato per essere attivato e di come vengono gestite le differenti situazioni.
Sending Signals
- Utilizzazione della system call
kill()
per inviare segnali a un processo.
Gestione dei Segnali in Unix
- Descrizione di come vengono gestiti i segnali.
Conclusioni e Disclaimer
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.
Related Documents
Description
Questo quiz si concentra sulla teoria e pratiche relative ai sistemi operativi UNIX. Gli argomenti trattati includono l'integrazione C, controllo dei processi, segnali e programmazione bash. Utilizzerai materiali basati su appunti e testi fondamentali del settore.