Podcast
Questions and Answers
Qual è la funzione di shmctl
nel contesto della memoria condivisa?
Qual è la funzione di shmctl
nel contesto della memoria condivisa?
Quale campo della struttura shmid_ds
viene utilizzato per modificare l'owner ID?
Quale campo della struttura shmid_ds
viene utilizzato per modificare l'owner ID?
Quali categorie di permessi sono presenti nella sottostruttura ipc_perm
?
Quali categorie di permessi sono presenti nella sottostruttura ipc_perm
?
Qual è l'uso principale dei comandi ipcs
e ipcrm
?
Qual è l'uso principale dei comandi ipcs
e ipcrm
?
Signup and view all the answers
Come vengono inizializzati i permessi in un oggetto IPC?
Come vengono inizializzati i permessi in un oggetto IPC?
Signup and view all the answers
Quale costante rappresenta il permesso di scrittura per l'utente?
Quale costante rappresenta il permesso di scrittura per l'utente?
Signup and view all the answers
Cosa succede se un processo specifica IPC_EXCL e l'oggetto IPC esiste già?
Cosa succede se un processo specifica IPC_EXCL e l'oggetto IPC esiste già?
Signup and view all the answers
Quale delle seguenti combinazioni di permessi connette un oggetto con tutti i diritti possibili per l'utente?
Quale delle seguenti combinazioni di permessi connette un oggetto con tutti i diritti possibili per l'utente?
Signup and view all the answers
In quale situazione viene utilizzata la costante IPC_CREAT?
In quale situazione viene utilizzata la costante IPC_CREAT?
Signup and view all the answers
Qual è il valore simbolico per la lettura per gli altri?
Qual è il valore simbolico per la lettura per gli altri?
Signup and view all the answers
Qual è il permesso di esecuzione per il gruppo?
Qual è il permesso di esecuzione per il gruppo?
Signup and view all the answers
Quale costante combinata rappresenta tutti i diritti di accesso per il gruppo?
Quale costante combinata rappresenta tutti i diritti di accesso per il gruppo?
Signup and view all the answers
Cosa deve specificare un processo per ottenere lo stesso identificatore IPC?
Cosa deve specificare un processo per ottenere lo stesso identificatore IPC?
Signup and view all the answers
Qual è il ruolo del numero i-node nella generazione della chiave con ftok()?
Qual è il ruolo del numero i-node nella generazione della chiave con ftok()?
Signup and view all the answers
Quale di queste asserzioni riguarda l'argomento proj nella funzione ftok()?
Quale di queste asserzioni riguarda l'argomento proj nella funzione ftok()?
Signup and view all the answers
Cosa rappresenta la struttura dati ipc_perm in relazione agli oggetti IPC?
Cosa rappresenta la struttura dati ipc_perm in relazione agli oggetti IPC?
Signup and view all the answers
Quale syscall deve essere utilizzata per ottenere una copia della struttura ipc_perm?
Quale syscall deve essere utilizzata per ottenere una copia della struttura ipc_perm?
Signup and view all the answers
Cosa accade se un file viene rimosso e ricreato mentre un'applicazione è in esecuzione?
Cosa accade se un file viene rimosso e ricreato mentre un'applicazione è in esecuzione?
Signup and view all the answers
Quale delle seguenti affermazioni è vera riguardo alla struttura shmid_ds?
Quale delle seguenti affermazioni è vera riguardo alla struttura shmid_ds?
Signup and view all the answers
Qual è il risultato di chiamare ipc_perm con l'operazione IPC_SET?
Qual è il risultato di chiamare ipc_perm con l'operazione IPC_SET?
Signup and view all the answers
Quale modalità non fa parte della struttura ipc_perm?
Quale modalità non fa parte della struttura ipc_perm?
Signup and view all the answers
Qual è la funzione della chiamata di sistema shmctl con IPC_RMID?
Qual è la funzione della chiamata di sistema shmctl con IPC_RMID?
Signup and view all the answers
Cosa accade alla memoria condivisa quando viene emessa la chiamata shmctl con IPC_RMID?
Cosa accade alla memoria condivisa quando viene emessa la chiamata shmctl con IPC_RMID?
Signup and view all the answers
Quale affermazione descrive correttamente la persistenza degli oggetti IPC?
Quale affermazione descrive correttamente la persistenza degli oggetti IPC?
Signup and view all the answers
Qual è uno degli svantaggi della persistenza degli oggetti IPC?
Qual è uno degli svantaggi della persistenza degli oggetti IPC?
Signup and view all the answers
Cosa succede a un oggetto IPC se un processo lo cancella mentre altri processi lo stanno ancora utilizzando?
Cosa succede a un oggetto IPC se un processo lo cancella mentre altri processi lo stanno ancora utilizzando?
Signup and view all the answers
Qual è la caratteristica principale degli oggetti IPC in termini di connessione?
Qual è la caratteristica principale degli oggetti IPC in termini di connessione?
Signup and view all the answers
Quale operazione di controllo è comune a tutti i meccanismi di IPC?
Quale operazione di controllo è comune a tutti i meccanismi di IPC?
Signup and view all the answers
Che effetto ha la cancellazione degli oggetti IPC rispetto all'informazione contenuta in essi?
Che effetto ha la cancellazione degli oggetti IPC rispetto all'informazione contenuta in essi?
Signup and view all the answers
Quale comando viene utilizzato per cancellare un oggetto IPC?
Quale comando viene utilizzato per cancellare un oggetto IPC?
Signup and view all the answers
Cosa visualizza il comando ipcs per i semafori?
Cosa visualizza il comando ipcs per i semafori?
Signup and view all the answers
Qual è il comportamento predefinito del comando ipcs su Linux riguardo ai permessi?
Qual è il comportamento predefinito del comando ipcs su Linux riguardo ai permessi?
Signup and view all the answers
Quale delle seguenti informazioni non viene visualizzata da ipcs per la memoria condivisa?
Quale delle seguenti informazioni non viene visualizzata da ipcs per la memoria condivisa?
Signup and view all the answers
Quali sono i parametri che possono essere utilizzati con il comando ipcrm?
Quali sono i parametri che possono essere utilizzati con il comando ipcrm?
Signup and view all the answers
Quale informazione viene visualizzata per le code di messaggi tramite ipcs?
Quale informazione viene visualizzata per le code di messaggi tramite ipcs?
Signup and view all the answers
Quale dei seguenti comandi non è corretto per l'uso di ipcrm?
Quale dei seguenti comandi non è corretto per l'uso di ipcrm?
Signup and view all the answers
Quale informazione non è data da ipcs riguardo agli oggetti IPC?
Quale informazione non è data da ipcs riguardo agli oggetti IPC?
Signup and view all the answers
Qual è una caratteristica distintiva delle code di messaggi rispetto a pipe e FIFO?
Qual è una caratteristica distintiva delle code di messaggi rispetto a pipe e FIFO?
Signup and view all the answers
Quale funzione viene utilizzata per creare o aprire una coda di messaggi?
Quale funzione viene utilizzata per creare o aprire una coda di messaggi?
Signup and view all the answers
Quale argomento della funzione msgget() serve per definire i permessi della coda di messaggi?
Quale argomento della funzione msgget() serve per definire i permessi della coda di messaggi?
Signup and view all the answers
Quale delle seguenti affermazioni è vera riguardo alla comunicazione delle code di messaggi?
Quale delle seguenti affermazioni è vera riguardo alla comunicazione delle code di messaggi?
Signup and view all the answers
Che cosa viene restituito dalla funzione msgget() in caso di successo?
Che cosa viene restituito dalla funzione msgget() in caso di successo?
Signup and view all the answers
In che ordine vengono prelevati i messaggi da una coda di messaggi?
In che ordine vengono prelevati i messaggi da una coda di messaggi?
Signup and view all the answers
Quale dei seguenti metodi può essere utilizzato per generare una chiave per msgget()?
Quale dei seguenti metodi può essere utilizzato per generare una chiave per msgget()?
Signup and view all the answers
Quale opzione descrive correttamente il comportamento delle code di messaggi?
Quale opzione descrive correttamente il comportamento delle code di messaggi?
Signup and view all the answers
Study Notes
Laboratorio di Sistemi Operativi - Code di Messaggi
- Il materiale della lezione è tratto da appunti precedenti del Prof. Gunetti, dal libro "The Linux Programming Interface" e da "Advanced Programming in the UNIX Environment".
- I libri citati sono:
- Michael Kerrisk, "The Linux Programming Interface", 2010.
- W. Richard Stevens e Stephen A. Rago, "Advanced Programming in the UNIX Environment", 2005.
Argomenti del Laboratorio UNIX
- Introduzione a UNIX
- Integrazione C: operatori bitwise, precedenze, preprocessore, impacchettamento del codice, compilazione condizionale e utility make.
- Controllo dei processi
- Segnali
- Pipe e FIFO
- Code di messaggi
- Memoria condivisa
- Semafori
- Introduzione alla programmazione bash
System V IPC: Message Queues
- System V IPC è un'etichetta che si riferisce a tre meccanismi di comunicazione inter-processi (IPC): code di messaggi.
- Le code di messaggi sono simili alle pipe, ma hanno due differenze chiave:
- I messaggi sono delimitati, permettendo un'interazione basata su messaggi completi e non su flussi di byte.
- Ogni messaggio contiene un membro
type
di tipo intero, consentendo la selezione dei messaggi in base al loro tipo e non solo all'ordine di invio.
System V IPC: Semafori
- I semafori permettono a molteplici processi di sincronizzare le loro azioni.
- Un semaforo è un valore intero gestito dal kernel, visibile a tutti i processi con i permessi necessari.
- I processi modificano il valore del semaforo per indicare azioni eseguite.
System V IPC: Memoria Condivisa
- La memoria condivisa consente a molteplici processi di condividere lo stesso segmento di memoria.
- L'accesso alla memoria utente è veloce, rendendo la memoria condivisa uno degli strumenti IPC più veloci.
- Le modifiche apportate da un processo alla memoria condivisa sono immediatamente visibili agli altri processi che la condividono.
Creazione/Apertura degli Oggetti IPC
- Ogni meccanismo IPC di System V ha una system call (
msgget
,semget
,shmget
) corrispondente alla system callopen
per i file. - Una chiamata
get
accetta unakey
intera, che crea un nuovo oggetto, oppure restituisce l'identificatore di un oggetto esistente
Creazione/Apertura Oggetti IPC - dettagli
- La chiamata
get
riceve unakey
e crea/restituisce l'ID dell'oggetto IPC. - Se richiesto, crea un nuovo oggetto con questa
key
. - Se l'oggetto esiste, restituisce il suo ID.
Cancellazione degli Oggetti IPC
- La chiamata
shmctl
(e analoghe per le altre classi di oggetti) gestisce le operazioni di controllo sugli oggetti IPC. -
IPC_RMID
è utilizzata per cancellare un oggetto IPC.
Cancellazione e Persistenza degli Oggetti IPC
- La cancellazione di code di messaggi e semafori è immediata.
- La cancellazione di oggetti legati alla memoria condivisa avviene solo dopo che tutti i processi hanno terminato l'utilizzo del segmento di memoria.
IPC Keys
- Le chiavi IPC in System V sono valori interi (tipo
key_t
). - La chiamata
get
mappa una chiave (key
) ad un identificatore IPC intero. - La chiamate garantiscono che un nuovo oggetto IPC ha un ID unico e se un oggetto esiste, un'altra chiamata a
get
sulla stessa key restituirà lo stesso identificatore.
Generazione di Chiavi con ftok()
- La funzione
ftok
genera una chiave (key
) a partire da un pathname e un progetto (proj
). -
ftok
utilizza il numero i-node del file per generare la chiave e non il nome del file.
Permessi degli Oggetti IPC
- Ogni istanza di un oggetto IPC ha una struttura dati gestita dal kernel.
- Questa struttura dati contiene i permessi per l'oggetto (utente proprietario, gruppo, altri)
Comandi ipcs e ipcrm
- I comandi
ipcs
eipcrm
sono analogo als
erm
sui file, ma per gli oggetti IPC. -
ipcs
visualizza le code di messaggi, le aree di memoria condivisa, e i semafori disponibili. -
ipcrm
permette di rimuovere gli oggetti IPC.
Code di Messaggi
- Le code di messaggi sono canali di comunicazione tra processi, simili a pipe e FIFO.
Creazione e Apertura di una Coda di Messaggi
- La chiamata system call
msgget
crea o restituisce l'identificatore di una coda di messaggi. - Utilizza una
key
e flag comeIPC_PRIVATE
oIPC_CREAT
per operare.
Operazioni sulle Code di Messaggi
- La chiamata
msgsnd
scrive messaggi in una coda. - La chiamata
msgrcv
legge messaggi da una coda. - Entrambi utilizzano una struttura
msg
con un campo di tipo e un campo dati.
Utilizzo di msgtyp
-
msgtyp
permette di selezionare messaggi specifici. - Se
msgtyp
è = 0, la coda restituisce il primo; se è > 0, trova il primo con quel valore.
Utilizzo di msgtyp (Priorità)
- Se
msgtyp
<0, la coda è gestita come una coda con priorità, e i messaggi con il valore assoluto più basso dimsgtyp
saranno restituiti per primi.
Controllo delle Code di Messaggi
- La chiamata
msgctl
gestisce le operazioni sulle code di messaggi. -
IPC_RMID
per rimuovere una coda. -
IPC_STAT
per ottenere informazioni su una coda. -
IPC_SET
per modificare le proprietà di una coda.
Client Server con le Code di Messaggi
- Due approcci per gli scambi client-server:
- Una singola coda di messaggi per scambiare nella stessa direzione (per piccoli messaggi).
- Code separate per il client e il server (adatti per messaggi più grandi).
Utilizzo di una Coda per ogni Cliente
- L'utilizzo di una coda separata per client permette lo scambio di messaggi più grandi e di gestire casi in cui un client si connette ed emette richieste, ma smette involontariamente di elaborare quelle risposte.
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.
Related Documents
Description
Questo quiz esplora le code di messaggi nell'ambito del laboratorio di Sistemi Operativi. Gli argomenti trattati includono le caratteristiche delle code di messaggi, il controllo dei processi e l'integrazione con C. Basato sui testi di Gunetti, Kerrisk e Stevens, approfondiremo le tecniche di comunicazione inter-processi in UNIX.