Sistemi Operativi: Segnali
32 Questions
2 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 (D)</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. (D)</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); (B)</p> Signup and view all the answers

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

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

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

<p>sa_flags (D)</p> Signup and view all the answers

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

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

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

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

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

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

Quale delle seguenti affermazioni sui segnali è corretta?

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

Quale scenario non genera un segnale secondo le cause descritte?

<p>Scrivere nel buffer di un processo (C)</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 (D)</p> Signup and view all the answers

Chi notifica un processo quando si verifica un errore hardware?

<p>Il kernel (D)</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 (B)</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. (D)</p> Signup and view all the answers

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

<p>sigemptyset (D)</p> Signup and view all the answers

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

<p>sigset_t (C)</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 (A)</p> Signup and view all the answers

Cosa fa la funzione sigfillset?

<p>Inizializza il set con tutti i segnali. (C)</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. (A)</p> Signup and view all the answers

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

<p>SA_NODEFER (C)</p> Signup and view all the answers

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

<p>sigdelset (D)</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 (B)</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 (A)</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 (A)</p> Signup and view all the answers

Quale affermazione è corretta riguardo al segnale SIGINT?

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

Quale macro rappresenta il numero totale dei segnali disponibili?

<p>NSIG (A)</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 (C)</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 (B)</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 (A)</p> Signup and view all the answers

Flashcards

Segnale

Una notifica a un processo che indica un evento accaduto.

Evento Hardware

Errore hardware rilevato dall'HW e notificato al kernel, che poi invia un segnale al processo.

Caratteri speciali (terminale)

Caratteri come Ctrl+C (interrupt) e Ctrl+Z (suspend) che inviano segnali.

Evento Software

Eventi come input disponibile, timer scaduto, tempo di processo finito, o figlio del processo terminato.

Signup and view all the flashcards

Nomi simbolici dei segnali

Nomi come SIGSEGV, SIGINT, assegnati a interi unici che rappresentano i segnali.

Signup and view all the flashcards

SIGxxxx

Nomi simbolici per i segnali, come SIGINT.

Signup and view all the flashcards

Intero univoco dei segnali

Numero intero che identifica univocamente un segnale.

Signup and view all the flashcards

Kernel

Il nucleo del sistema operativo che gestisce le risorse del sistema e comunica con i processi.

Signup and view all the flashcards

kill() system call

La chiamata di sistema kill(pid_t pid, int sig) invia un segnale al processo identificato da pid.

Signup and view all the flashcards

pid_t pid

L'identificativo del processo a cui inviare il segnale.

Signup and view all the flashcards

int sig

Il tipo di segnale da inviare.

Signup and view all the flashcards

Segnale null (sig = 0)

Non invia un segnale ma controlla se il processo esiste e se si hanno i permessi per inviargli un segnale.

Signup and view all the flashcards

ESRCH (No such process)

Errore restituito da kill() se nessun processo corrisponde al pid.

Signup and view all the flashcards

EPERM (No permissions)

Errore restituito da kill() se si tenta di inviare un segnale ad un processo e non si hanno i permessi.

Signup and view all the flashcards

int kill(pid_t pid, int sig)

Chiamata di sistema per inviare un segnale a un processo.

Signup and view all the flashcards

Controllo di processo

Utilizza "kill" per gestire operazioni sul processo

Signup and view all the flashcards

Syscall sigaction

Sistema operativo per impostare il gestore di un segnale. Assume un intero per il numero del segnale, un puntatore ad un nuovo gestore e un puntatore al vecchio gestore. Ritorna 0 se è riuscita, altrimenti -1 con errno impostato.

Signup and view all the flashcards

Gestione segnali

Il modo in cui un programma reagisce a eventi specifici nel sistema operativo.

Signup and view all the flashcards

Struct sigaction

Struttura usata per memorizzare le informazioni sul gestore di un segnale.

Signup and view all the flashcards

sa_handler

Puntatore alla funzione che gestisce il segnale.

Signup and view all the flashcards

sa_mask

Maschera di segnali bloccati durante l'esecuzione del gestore.

Signup and view all the flashcards

sa_flags

Insieme di flag per modificare il comportamento del segnale.

Signup and view all the flashcards

Maschera segnali

Elenco dei segnali attualmente bloccati in un processo.

Signup and view all the flashcards

Ereditarietà maschera segnali

Un nuovo processo eredita la maschera segnali del processo padre.

Signup and view all the flashcards

SA_NODEFER

Un flag che, se impostato nella struttura sigaction, permette a un handler di segnale di essere richiamato anche se lo stesso segnale è bloccato (mascherato) durante l'esecuzione del handler stesso.

Signup and view all the flashcards

sigset_t

Tipo di dati utilizzato per rappresentare un set di segnali. Contiene un insieme di segnali.

Signup and view all the flashcards

sigemptyset(sigset_t *set)

Inizializza un set di segnali vuoto. Nessun segnale è incluso nel set.

Signup and view all the flashcards

sigfillset(sigset_t *set)

Inizializza un set di segnali contenente tutti i segnali. Tutti i segnali sono inclusi nel set.

Signup and view all the flashcards

sigaddset(sigset_t *set, int signum)

Aggiunge un particolare segnale (signum) al set di segnali.

Signup and view all the flashcards

sigdelset(sigset_t *set, int signum)

Rimuovi un particolare segnale (signum) dal set di segnali.

Signup and view all the flashcards

sigismember(const sigset_t *set, int signum)

Verifica se un particolare segnale (signum) è presente nel set di segnali. Restituisce 1 se presente, 0 altrimenti.

Signup and view all the flashcards

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

Configuring Cron Jobs
10 questions

Configuring Cron Jobs

InstrumentalModernism4095 avatar
InstrumentalModernism4095
Systemy Uniksowe i Partycjonowanie
16 questions
Use Quizgecko on...
Browser
Browser