Laboratorio Sistemi Operativi - Semafori
47 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

Quale operazione viene utilizzata per rimuovere un set di semafori dopo che tutti i processi hanno terminato di usarlo?

  • semop()
  • IPC_RMID (correct)
  • semget()
  • semctl()
  • Quale funzione è utilizzata per inizializzare i valori dei semafori in un set?

  • semop()
  • semget()
  • semctl() (correct)
  • IPC_PRIVATE
  • Cosa viene creato dalla system call semget() al momento della sua chiamata?

  • Un set di semafori (correct)
  • Un processo
  • Una risorsa condivisa
  • Un semaforo
  • Quale operazione viene utilizzata per eseguire operazioni sui valori del semaforo?

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

    Cosa indica tipicamente un processo quando usa un semaforo?

    <p>L'acquisizione e il rilascio di una risorsa condivisa</p> Signup and view all the answers

    Quale delle seguenti affermazioni riguarda il permesso S_ISUID?

    <p>Consente l'assegnazione del bit set-user-ID.</p> Signup and view all the answers

    Quale valore ottale corrisponde al permesso S_IWUSR?

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

    Cosa indica il permesso S_IRGRP?

    <p>Il file è leggibile dal gruppo.</p> Signup and view all the answers

    Quale bit deve essere impostato per il controllo di sticky su un file?

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

    Quale rappresenta il permesso S_IXGRP?

    <p>Permesso di esecuzione per il gruppo.</p> Signup and view all the answers

    Qual è il valore ottale per S_IRUSR?

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

    Quale di queste opzioni rappresenta un permesso di esecuzione per l'utente?

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

    Qual è la funzione del permesso S_IWGRP?

    <p>Consente la scrittura solo per il gruppo.</p> Signup and view all the answers

    Quale funzione restituisce il valore del semaforo specificato da semid e semnum?

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

    Quale operazione viene utilizzata per inizializzare il valore di un singolo semaforo?

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

    Cosa restituisce la funzione GETPID riguardo a un semaforo?

    <p>Il PID del processo che ha eseguito semop()</p> Signup and view all the answers

    Quale operazione ignora il parametro semnum?

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

    Quale richiesta di permessi è necessaria per le operazioni di lettura sui semafori?

    <p>Permessi in lettura</p> Signup and view all the answers

    Quale funzione permette di prelevare i valori di tutti i semafori nel set?

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

    Quando si utilizza GETALL, cosa deve garantire il programmatore?

    <p>Che l'array sia abbastanza capiente</p> Signup and view all the answers

    Quale operazione è utilizzata per inizializzare tutti i semafori di un set con valori da un array?

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

    Quale flag può essere utilizzato con la funzione semget per creare un nuovo set di semafori se non esiste già?

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

    Quale valore rappresenta S_IRWXO nel contesto delle maschere di permessi?

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

    Cosa restituisce la funzione semctl in caso di errore?

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

    Quale argomento nella funzione semctl è usato per identificare il set di semafori su cui eseguire l'operazione?

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

    Quale operazione non è specificata dall'argomento cmd nella funzione semctl?

    <p>Rinnovo di un semaforo</p> Signup and view all the answers

    Cosa avviene se si specifica IPC_EXCL con IPC_CREAT e il set di semafori esiste già?

    <p>Si verifica un errore EEXIST</p> Signup and view all the answers

    Quale dei seguenti identificatori è utilizzato per eseguire operazioni su singoli semafori nella funzione semctl?

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

    Quale costante rappresenta i permessi di lettura, scrittura ed esecuzione per l'utente proprietario?

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

    Cosa restituisce GETNCNT in relazione ai semafori?

    <p>Il numero di processi in attesa di un incremento del valore del semaforo.</p> Signup and view all the answers

    Qual è la funzione del membro sem_otime nella struttura semid_ds?

    <p>Segna il tempo dell'ultima operazione semop() riuscita.</p> Signup and view all the answers

    Quando viene inizializzato il membro sem_ctime nella struttura semid_ds?

    <p>Solo al momento della creazione del set di semafori.</p> Signup and view all the answers

    Quale delle seguenti affermazioni sui membri uid, gid e mode è corretta?

    <p>Possono essere aggiornati con l'operazione IPC_SET.</p> Signup and view all the answers

    Cosa rappresenta la struttura semun?

    <p>Una serie di informazioni sui semafori e i processi associati.</p> Signup and view all the answers

    Quale valore della struttura sem_nsems indica?

    <p>Il numero totale di semafori in un set.</p> Signup and view all the answers

    Cosa accade al membro sem_otime alla creazione del semaforo?

    <p>Viene impostato a 0.</p> Signup and view all the answers

    Qual è la funzione della chiamata semctl() IPC_SET?

    <p>Aggiornare i membri uid, gid e mode.</p> Signup and view all the answers

    Qual è l'obiettivo principale dell'inserimento del codice che forza il secondo processo ad attendere?

    <p>Prevenire la condizione di corsa.</p> Signup and view all the answers

    Cosa rappresenta 'sem_otime' nel contesto del semaforo?

    <p>Il tempo in cui è stata eseguita l'operazione 'semop'.</p> Signup and view all the answers

    Quale dichiarazione è vera riguardo alla creazione del semaforo?

    <p>Il semaforo può essere creato utilizzando 'semget' con parametri appropriati.</p> Signup and view all the answers

    Cosa succede se il semaforo non è stato creato e 'errno' è diverso da 'EEXIST'?

    <p>Si genera un errore e il processo termina.</p> Signup and view all the answers

    Per quale motivo viene utilizzato un ciclo di attesa nella creazione di un semaforo esistente?

    <p>Per assicurarsi che il semaforo sia stato inizializzato da un altro processo.</p> Signup and view all the answers

    Qual è il comando utilizzato per impostare il valore del semaforo dopo la sua creazione?

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

    Cosa significa la linea 'sop.sem_op = 0;'?

    <p>Il processo aspetta un valore di semaforo pari a zero.</p> Signup and view all the answers

    Cosa accade se 'semop()' restituisce -1?

    <p>Si verifica un errore e il processo termina.</p> Signup and view all the answers

    Qual è il valore iniziale assegnato al semaforo nella creazione?

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

    Perché non tutte le applicazioni richiedono una soluzione al problema della condizione di corsa?

    <p>Non tutte le applicazioni condividono risorse.</p> Signup and view all the answers

    Study Notes

    Laboratorio Sistemi Operativi - Semafori

    • Il laboratorio si concentra sui semafori, uno strumento di comunicazione tra processi
    • I semafori, diversamente da altri strumenti IPC, non trasferiscono dati, ma sincronizzano le azioni dei processi
    • Sono cruciali per gestire l'accesso a risorse condivise evitando conflitti
    • Un semaforo è un intero gestito dal kernel, sempre maggiore o uguale a 0
    • Sono possibili diverse operazioni sui semafori, tra cui:
      • Impostare il semaforo a un valore specifico
      • Incrementare il valore corrente del semaforo
      • Decrementare il valore corrente del semaforo
      • Attendere che il valore del semaforo sia 0
    • Le ultime due operazioni possono bloccare il processo chiamante
    • Il kernel blocca eventuali tentativi di decremento del valore del semaforo al di sotto di 0
    • I semafori sono allocati in gruppi detti set di semafori
    • Il numero di semafori in un set è specificato durante la creazione del set tramite la system call semget()
    • Spesso si utilizza un solo semaforo alla volta, ma la system call semop() permette l'esecuzione atomica di più operazioni su un set di semafori
    • I passi per utilizzare i semafori sono:
      • Creare o aprire un set di semafori tramite semget()
      • Inizializzare i semafori nel set usando SETVAL o SETALL di semctl()
      • Eseguire operazioni sui valori dei semafori tramite semop()
    • I processi usano le operazioni sui semafori per gestire l'accesso alle risorse condivise
    • La rimozione del set di semafori avviene tramite IPC_RMID di semctl()

    Argomenti del Laboratorio UNIX

    • Introduzione a UNIX
    • Integrazione C (operatori bitwise, precedenze, preprocessore, pacchettizzazione, compilazione condizionale e utility make)
    • Controllo dei processi
    • Segnali
    • Pipe e FIFO
    • Code di messaggi
    • Semafori
    • Memoria condivisa
    • Introduzione alla programmazione bash

    Crediti

    • Le lezioni si basano su materiale di anni precedenti
    • Su libri come:
      • "The Linux Programming interface" (Michael Kerrisk)
      • "Advanced Programming in the UNIX Environment" (W. Richard Stevens)

    Introduzione: Semafori

    • I semafori, a differenza di altri strumenti IPC, non trasferiscono dati, ma gestiscono la sincronizzazione tra processi.
    • Servono a sincronizzare l'accesso a blocchi di memoria condivisa.

    Utilizzo dei Semafori

    • I passi per utilizzare i semafori includono la creazione/apertura del set, l'inizializzazione dei semafori nel set tramite semctl() (SETVAL o SETALL) e l'esecuzione di operazioni sui semafori utilizzando semop().
    • I processi usano i semafori per indicare acquisizione e rilascio di risorse condivise.
    • La rimozione del set di semafori avviene tramite IPC_RMID di semctl().

    Problemi di Inizializzazione e Race Condition

    • Due processi che eseguono lo stesso codice simultaneamente possono causare problemi di sincronizzazione, detti race condition.
    • Una soluzione consiste nel far sì che un processo attendi che l'altro abbia inizializzato il semaforo prima di procedere.

    Operazioni sui Semafori

    • La system call semop() esegue le operazioni sui semafori.
    • L'argomento sops è un puntatore a un array di strutture sembuf che contengono le operazioni da eseguire.
    • Ogni struttura sembuf specifica il numero del semaforo e l'operazione da effettuare.

    sembuf: operazioni sui semafori

    • Il campo sem_op specifica l'operazione:
      • Maggiore di 0: incrementa il valore del semaforo
      • Uguale a 0: controlla se il valore del semaforo è 0
      • Minore di 0: decrementa il valore del semaforo
    • Operazioni atomiche: eseguite in blocco

    Studying That Suits You

    Use AI to generate personalized quizzes and flashcards to suit your learning preferences.

    Quiz Team

    Related Documents

    Description

    Questo quiz esplora il concetto di semafori come strumento di sincronizzazione nei sistemi operativi. I semafori sono essenziali per gestire l'accesso a risorse condivise e per evitare conflitti tra processi. Imparerai a conoscere le operazioni sui semafori e il loro utilizzo nel contesto della comunicazione tra processi.

    More Like This

    Use Quizgecko on...
    Browser
    Browser