Sistemi Operativi: Segnali
32 Questions
0 Views

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to lesson

Podcast

Play an AI-generated podcast conversation about this lesson

Questions and Answers

Cosa restituisce la chiamata di sistema sigaction in caso di successo?

  • 0 (correct)
  • -1
  • errno
  • 1
  • Quale dei seguenti parametri è un puntatore al nuovo gestore di segnali nella chiamata sigaction?

  • sa_handler
  • signum
  • act (correct)
  • oldact
  • Cosa succede se il parametro 'act' è impostato a NULL durante la chiamata sigaction?

  • Il gestore viene impostato a default.
  • Viene restituito un errore.
  • Il gestore rimane invariato. (correct)
  • Il gestore di segnali viene rimosso.
  • Quale dei seguenti membri della struttura sigaction è utilizzato per la maschera dei segnali bloccati?

    <p>sa_mask</p> Signup and view all the answers

    Cosa succede alla maschera dei segnali di un processo quando viene creato un nuovo processo?

    <p>Eredità dal processo padre.</p> Signup and view all the answers

    Quale invocazione di sigaction imposta un nuovo gestore di segnali e restituisce il gestore attuale?

    <p>sigaction(signum, new, old);</p> Signup and view all the answers

    Quale valore è comunemente utilizzato per indicare un errore in casistica di sigaction?

    <p>-1</p> Signup and view all the answers

    Quale dei seguenti membri della struttura sigaction modifica il comportamento del segnale?

    <p>sa_flags</p> Signup and view all the answers

    Quale dei seguenti eventi può generare un segnale in un processo?

    <p>Divisione per zero</p> Signup and view all the answers

    Quale carattere speciale, digitato dall'utente, genera un segnale di interruzione?

    <p>Control-C</p> Signup and view all the answers

    Cosa rappresentano le sequenze di interi unici utilizzati per i segnali?

    <p>Nomi simbolici delle forme SIGxxxx</p> Signup and view all the answers

    Quale delle seguenti affermazioni sui segnali è corretta?

    <p>I segnali possono derivare anche da eventi software</p> Signup and view all the answers

    Quale scenario non genera un segnale secondo le cause descritte?

    <p>Scrivere nel buffer di un processo</p> Signup and view all the answers

    Cosa indica il carattere di sospensione (Control-Z) in un terminale?

    <p>Interrompe il processo in modo temporaneo</p> Signup and view all the answers

    Chi notifica un processo quando si verifica un errore hardware?

    <p>Il kernel</p> Signup and view all the answers

    Quale dei seguenti eventi non è considerato un evento software per generare segnali?

    <p>Un'operazione di scrittura su un file</p> 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?

    <p>Il segnale è bloccato fino al termine dell'handler.</p> Signup and view all the answers

    Quale funzione viene utilizzata per inizializzare un set di segnali come vuoto?

    <p>sigemptyset</p> Signup and view all the answers

    Qual è il tipo di dato utilizzato per rappresentare un set di segnali?

    <p>sigset_t</p> Signup and view all the answers

    Quale delle seguenti funzioni serve a verificare se un segnale è membro di un set di segnali?

    <p>sigismember</p> Signup and view all the answers

    Cosa fa la funzione sigfillset?

    <p>Inizializza il set con tutti i segnali.</p> Signup and view all the answers

    Cosa accade alla maschera dei segnali quando viene creato un nuovo processo?

    <p>Il nuovo processo eredita la maschera del processo genitore.</p> Signup and view all the answers

    Quale flag deve essere utilizzato per permettere invocazioni annidate di un handler?

    <p>SA_NODEFER</p> Signup and view all the answers

    Quale funzione deve essere usata per rimuovere un segnale specifico da un set di segnali?

    <p>sigdelset</p> Signup and view all the answers

    Qual è la funzione della chiamata di sistema kill() quando l'argomento sig è impostato a 0?

    <p>Controlla se il processo esiste senza inviare alcun segnale</p> Signup and view all the answers

    Cosa indica il valore di pid quando è uguale a 0 nella chiamata di sistema kill()?

    <p>Il segnale è inviato a tutti i processi nello stesso gruppo del chiamante</p> Signup and view all the answers

    Cosa accade se la chiamata kill() fallisce con errore ESRCH?

    <p>Non esiste alcun processo corrispondente al pid specificato</p> Signup and view all the answers

    Quale affermazione è corretta riguardo al segnale SIGINT?

    <p>Corrisponde all'interrupt dell'utente</p> Signup and view all the answers

    Quale macro rappresenta il numero totale dei segnali disponibili?

    <p>NSIG</p> Signup and view all the answers

    Cosa indica pid == -1 nella chiamata kill()?

    <p>Il segnale è inviato a tutti i processi a cui il chiamante può inviare segnali</p> Signup and view all the answers

    Quale condizione può portare a un errore EPERM nella chiamata kill()?

    <p>Non si hanno i permessi per inviare un segnale al processo</p> 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?

    <p>Il valore di ritorno sarà -1 e errno sarà impostato a EPERM</p> 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 come signum, act, oldact.

    La Struttura sigaction

    • Descrizione completa della struttura sigaction, in particolare con sa_handler, sa_mask, e sa_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 i signal 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.

    Quiz Team

    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.

    More Like This

    /usr, /etc, /dev in Unix Systems
    11 questions
    Systemy Uniksowe i Partycjonowanie
    16 questions
    Use Quizgecko on...
    Browser
    Browser