Podcast
Questions and Answers
Quale operazione viene utilizzata per rimuovere un set di semafori dopo che tutti i processi hanno terminato di usarlo?
Quale operazione viene utilizzata per rimuovere un set di semafori dopo che tutti i processi hanno terminato di usarlo?
Quale funzione è utilizzata per inizializzare i valori dei semafori in un set?
Quale funzione è utilizzata per inizializzare i valori dei semafori in un set?
Cosa viene creato dalla system call semget() al momento della sua chiamata?
Cosa viene creato dalla system call semget() al momento della sua chiamata?
Quale operazione viene utilizzata per eseguire operazioni sui valori del semaforo?
Quale operazione viene utilizzata per eseguire operazioni sui valori del semaforo?
Signup and view all the answers
Cosa indica tipicamente un processo quando usa un semaforo?
Cosa indica tipicamente un processo quando usa un semaforo?
Signup and view all the answers
Quale delle seguenti affermazioni riguarda il permesso S_ISUID?
Quale delle seguenti affermazioni riguarda il permesso S_ISUID?
Signup and view all the answers
Quale valore ottale corrisponde al permesso S_IWUSR?
Quale valore ottale corrisponde al permesso S_IWUSR?
Signup and view all the answers
Cosa indica il permesso S_IRGRP?
Cosa indica il permesso S_IRGRP?
Signup and view all the answers
Quale bit deve essere impostato per il controllo di sticky su un file?
Quale bit deve essere impostato per il controllo di sticky su un file?
Signup and view all the answers
Quale rappresenta il permesso S_IXGRP?
Quale rappresenta il permesso S_IXGRP?
Signup and view all the answers
Qual è il valore ottale per S_IRUSR?
Qual è il valore ottale per S_IRUSR?
Signup and view all the answers
Quale di queste opzioni rappresenta un permesso di esecuzione per l'utente?
Quale di queste opzioni rappresenta un permesso di esecuzione per l'utente?
Signup and view all the answers
Qual è la funzione del permesso S_IWGRP?
Qual è la funzione del permesso S_IWGRP?
Signup and view all the answers
Quale funzione restituisce il valore del semaforo specificato da semid e semnum?
Quale funzione restituisce il valore del semaforo specificato da semid e semnum?
Signup and view all the answers
Quale operazione viene utilizzata per inizializzare il valore di un singolo semaforo?
Quale operazione viene utilizzata per inizializzare il valore di un singolo semaforo?
Signup and view all the answers
Cosa restituisce la funzione GETPID riguardo a un semaforo?
Cosa restituisce la funzione GETPID riguardo a un semaforo?
Signup and view all the answers
Quale operazione ignora il parametro semnum?
Quale operazione ignora il parametro semnum?
Signup and view all the answers
Quale richiesta di permessi è necessaria per le operazioni di lettura sui semafori?
Quale richiesta di permessi è necessaria per le operazioni di lettura sui semafori?
Signup and view all the answers
Quale funzione permette di prelevare i valori di tutti i semafori nel set?
Quale funzione permette di prelevare i valori di tutti i semafori nel set?
Signup and view all the answers
Quando si utilizza GETALL, cosa deve garantire il programmatore?
Quando si utilizza GETALL, cosa deve garantire il programmatore?
Signup and view all the answers
Quale operazione è utilizzata per inizializzare tutti i semafori di un set con valori da un array?
Quale operazione è utilizzata per inizializzare tutti i semafori di un set con valori da un array?
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à?
Quale flag può essere utilizzato con la funzione semget per creare un nuovo set di semafori se non esiste già?
Signup and view all the answers
Quale valore rappresenta S_IRWXO nel contesto delle maschere di permessi?
Quale valore rappresenta S_IRWXO nel contesto delle maschere di permessi?
Signup and view all the answers
Cosa restituisce la funzione semctl in caso di errore?
Cosa restituisce la funzione semctl in caso di errore?
Signup and view all the answers
Quale argomento nella funzione semctl è usato per identificare il set di semafori su cui eseguire l'operazione?
Quale argomento nella funzione semctl è usato per identificare il set di semafori su cui eseguire l'operazione?
Signup and view all the answers
Quale operazione non è specificata dall'argomento cmd nella funzione semctl?
Quale operazione non è specificata dall'argomento cmd nella funzione semctl?
Signup and view all the answers
Cosa avviene se si specifica IPC_EXCL con IPC_CREAT e il set di semafori esiste già?
Cosa avviene se si specifica IPC_EXCL con IPC_CREAT e il set di semafori esiste già?
Signup and view all the answers
Quale dei seguenti identificatori è utilizzato per eseguire operazioni su singoli semafori nella funzione semctl?
Quale dei seguenti identificatori è utilizzato per eseguire operazioni su singoli semafori nella funzione semctl?
Signup and view all the answers
Quale costante rappresenta i permessi di lettura, scrittura ed esecuzione per l'utente proprietario?
Quale costante rappresenta i permessi di lettura, scrittura ed esecuzione per l'utente proprietario?
Signup and view all the answers
Cosa restituisce GETNCNT in relazione ai semafori?
Cosa restituisce GETNCNT in relazione ai semafori?
Signup and view all the answers
Qual è la funzione del membro sem_otime nella struttura semid_ds?
Qual è la funzione del membro sem_otime nella struttura semid_ds?
Signup and view all the answers
Quando viene inizializzato il membro sem_ctime nella struttura semid_ds?
Quando viene inizializzato il membro sem_ctime nella struttura semid_ds?
Signup and view all the answers
Quale delle seguenti affermazioni sui membri uid, gid e mode è corretta?
Quale delle seguenti affermazioni sui membri uid, gid e mode è corretta?
Signup and view all the answers
Cosa rappresenta la struttura semun?
Cosa rappresenta la struttura semun?
Signup and view all the answers
Quale valore della struttura sem_nsems indica?
Quale valore della struttura sem_nsems indica?
Signup and view all the answers
Cosa accade al membro sem_otime alla creazione del semaforo?
Cosa accade al membro sem_otime alla creazione del semaforo?
Signup and view all the answers
Qual è la funzione della chiamata semctl() IPC_SET?
Qual è la funzione della chiamata semctl() IPC_SET?
Signup and view all the answers
Qual è l'obiettivo principale dell'inserimento del codice che forza il secondo processo ad attendere?
Qual è l'obiettivo principale dell'inserimento del codice che forza il secondo processo ad attendere?
Signup and view all the answers
Cosa rappresenta 'sem_otime' nel contesto del semaforo?
Cosa rappresenta 'sem_otime' nel contesto del semaforo?
Signup and view all the answers
Quale dichiarazione è vera riguardo alla creazione del semaforo?
Quale dichiarazione è vera riguardo alla creazione del semaforo?
Signup and view all the answers
Cosa succede se il semaforo non è stato creato e 'errno' è diverso da 'EEXIST'?
Cosa succede se il semaforo non è stato creato e 'errno' è diverso da 'EEXIST'?
Signup and view all the answers
Per quale motivo viene utilizzato un ciclo di attesa nella creazione di un semaforo esistente?
Per quale motivo viene utilizzato un ciclo di attesa nella creazione di un semaforo esistente?
Signup and view all the answers
Qual è il comando utilizzato per impostare il valore del semaforo dopo la sua creazione?
Qual è il comando utilizzato per impostare il valore del semaforo dopo la sua creazione?
Signup and view all the answers
Cosa significa la linea 'sop.sem_op = 0;'?
Cosa significa la linea 'sop.sem_op = 0;'?
Signup and view all the answers
Cosa accade se 'semop()' restituisce -1?
Cosa accade se 'semop()' restituisce -1?
Signup and view all the answers
Qual è il valore iniziale assegnato al semaforo nella creazione?
Qual è il valore iniziale assegnato al semaforo nella creazione?
Signup and view all the answers
Perché non tutte le applicazioni richiedono una soluzione al problema della condizione di corsa?
Perché non tutte le applicazioni richiedono una soluzione al problema della condizione di corsa?
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
oSETALL
disemctl()
- Eseguire operazioni sui valori dei semafori tramite
semop()
- Creare o aprire un set di semafori tramite
- I processi usano le operazioni sui semafori per gestire l'accesso alle risorse condivise
- La rimozione del set di semafori avviene tramite
IPC_RMID
disemctl()
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 utilizzandosemop()
. - I processi usano i semafori per indicare acquisizione e rilascio di risorse condivise.
- La rimozione del set di semafori avviene tramite
IPC_RMID
disemctl()
.
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.
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.