Podcast
Questions and Answers
Qual è la funzione di shmctl
nel contesto della memoria condivisa?
Qual è la funzione di shmctl
nel contesto della memoria condivisa?
- Modifica i permessi dell'oggetto IPC. (correct)
- Invia segnali agli altri processi che utilizzano la memoria condivisa.
- Copia i dati dalla memoria condivisa all'utente.
- Imposta un nuovo owner ID per il segmento di memoria.
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?
- shm_perm.key
- shm_perm.uid (correct)
- shm_perm.gid
- shm_perm.mode
Quali categorie di permessi sono presenti nella sottostruttura ipc_perm
?
Quali categorie di permessi sono presenti nella sottostruttura ipc_perm
?
- Read, Write, Execute
- Admin, User, Guest
- System, Application, User
- Owner, Group, Other (correct)
Qual è l'uso principale dei comandi ipcs
e ipcrm
?
Qual è l'uso principale dei comandi ipcs
e ipcrm
?
Come vengono inizializzati i permessi in un oggetto IPC?
Come vengono inizializzati i permessi in un oggetto IPC?
Quale costante rappresenta il permesso di scrittura per l'utente?
Quale costante rappresenta il permesso di scrittura per l'utente?
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à ?
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?
In quale situazione viene utilizzata la costante IPC_CREAT?
In quale situazione viene utilizzata la costante IPC_CREAT?
Qual è il valore simbolico per la lettura per gli altri?
Qual è il valore simbolico per la lettura per gli altri?
Qual è il permesso di esecuzione per il gruppo?
Qual è il permesso di esecuzione per il gruppo?
Quale costante combinata rappresenta tutti i diritti di accesso per il gruppo?
Quale costante combinata rappresenta tutti i diritti di accesso per il gruppo?
Cosa deve specificare un processo per ottenere lo stesso identificatore IPC?
Cosa deve specificare un processo per ottenere lo stesso identificatore IPC?
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()?
Quale di queste asserzioni riguarda l'argomento proj nella funzione ftok()?
Quale di queste asserzioni riguarda l'argomento proj nella funzione ftok()?
Cosa rappresenta la struttura dati ipc_perm in relazione agli oggetti IPC?
Cosa rappresenta la struttura dati ipc_perm in relazione agli oggetti IPC?
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?
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?
Quale delle seguenti affermazioni è vera riguardo alla struttura shmid_ds?
Quale delle seguenti affermazioni è vera riguardo alla struttura shmid_ds?
Qual è il risultato di chiamare ipc_perm con l'operazione IPC_SET?
Qual è il risultato di chiamare ipc_perm con l'operazione IPC_SET?
Quale modalità non fa parte della struttura ipc_perm?
Quale modalità non fa parte della struttura ipc_perm?
Qual è la funzione della chiamata di sistema shmctl con IPC_RMID?
Qual è la funzione della chiamata di sistema shmctl con IPC_RMID?
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?
Quale affermazione descrive correttamente la persistenza degli oggetti IPC?
Quale affermazione descrive correttamente la persistenza degli oggetti IPC?
Qual è uno degli svantaggi della persistenza degli oggetti IPC?
Qual è uno degli svantaggi della persistenza degli oggetti IPC?
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?
Qual è la caratteristica principale degli oggetti IPC in termini di connessione?
Qual è la caratteristica principale degli oggetti IPC in termini di connessione?
Quale operazione di controllo è comune a tutti i meccanismi di IPC?
Quale operazione di controllo è comune a tutti i meccanismi di IPC?
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?
Quale comando viene utilizzato per cancellare un oggetto IPC?
Quale comando viene utilizzato per cancellare un oggetto IPC?
Cosa visualizza il comando ipcs per i semafori?
Cosa visualizza il comando ipcs per i semafori?
Qual è il comportamento predefinito del comando ipcs su Linux riguardo ai permessi?
Qual è il comportamento predefinito del comando ipcs su Linux riguardo ai permessi?
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?
Quali sono i parametri che possono essere utilizzati con il comando ipcrm?
Quali sono i parametri che possono essere utilizzati con il comando ipcrm?
Quale informazione viene visualizzata per le code di messaggi tramite ipcs?
Quale informazione viene visualizzata per le code di messaggi tramite ipcs?
Quale dei seguenti comandi non è corretto per l'uso di ipcrm?
Quale dei seguenti comandi non è corretto per l'uso di ipcrm?
Quale informazione non è data da ipcs riguardo agli oggetti IPC?
Quale informazione non è data da ipcs riguardo agli oggetti IPC?
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?
Quale funzione viene utilizzata per creare o aprire una coda di messaggi?
Quale funzione viene utilizzata per creare o aprire una coda di messaggi?
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?
Quale delle seguenti affermazioni è vera riguardo alla comunicazione delle code di messaggi?
Quale delle seguenti affermazioni è vera riguardo alla comunicazione delle code di messaggi?
Che cosa viene restituito dalla funzione msgget() in caso di successo?
Che cosa viene restituito dalla funzione msgget() in caso di successo?
In che ordine vengono prelevati i messaggi da una coda di messaggi?
In che ordine vengono prelevati i messaggi da una coda di messaggi?
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()?
Quale opzione descrive correttamente il comportamento delle code di messaggi?
Quale opzione descrive correttamente il comportamento delle code di messaggi?
Flashcards
Permessi di accesso (flags)
Permessi di accesso (flags)
Valori numerici che specificano i permessi di lettura, scrittura ed esecuzione per un oggetto (file, IPC).
S_IRUSR, S_IWUSR, S_IXUSR
S_IRUSR, S_IWUSR, S_IXUSR
Costanti che definiscono i permessi di lettura, scrittura ed esecuzione per l'utente proprietario di un oggetto.
S_IRGRP, S_IWGRP, S_IXGRP
S_IRGRP, S_IWGRP, S_IXGRP
Costanti che definiscono i permessi di lettura, scrittura ed esecuzione per il gruppo associato all'oggetto.
S_IROTH, S_IWOTH, S_IXOTH
S_IROTH, S_IWOTH, S_IXOTH
Signup and view all the flashcards
msgget(key, flags)
msgget(key, flags)
Signup and view all the flashcards
IPC_CREAT
IPC_CREAT
Signup and view all the flashcards
IPC_EXCL
IPC_EXCL
Signup and view all the flashcards
Identificatore IPC
Identificatore IPC
Signup and view all the flashcards
Cancellazione IPC
Cancellazione IPC
Signup and view all the flashcards
shmctl(id, IPC_RMID, NULL)
shmctl(id, IPC_RMID, NULL)
Signup and view all the flashcards
IPC_RMID
IPC_RMID
Signup and view all the flashcards
Persistenza oggetti IPC
Persistenza oggetti IPC
Signup and view all the flashcards
Cancellazione code messaggi/semafori
Cancellazione code messaggi/semafori
Signup and view all the flashcards
Cancellazione memoria condivisa
Cancellazione memoria condivisa
Signup and view all the flashcards
Oggetti IPC connectionless
Oggetti IPC connectionless
Signup and view all the flashcards
Limiti oggetti IPC
Limiti oggetti IPC
Signup and view all the flashcards
ipcs
ipcs
Signup and view all the flashcards
IPC
IPC
Signup and view all the flashcards
Memoria condivisa
Memoria condivisa
Signup and view all the flashcards
Semaforo
Semaforo
Signup and view all the flashcards
Coda di messaggi
Coda di messaggi
Signup and view all the flashcards
key
key
Signup and view all the flashcards
id
id
Signup and view all the flashcards
ftok() e key
ftok() e key
Signup and view all the flashcards
Numero i-node
Numero i-node
Signup and view all the flashcards
Oggetto IPC
Oggetto IPC
Signup and view all the flashcards
Argomento proj (ftok)
Argomento proj (ftok)
Signup and view all the flashcards
struct ipc_perm
struct ipc_perm
Signup and view all the flashcards
shmctl(IPC_STAT)
shmctl(IPC_STAT)
Signup and view all the flashcards
shmctl(IPC_SET)
shmctl(IPC_SET)
Signup and view all the flashcards
msgget() (IPC_CREAT)
msgget() (IPC_CREAT)
Signup and view all the flashcards
Caratteristiche delle code di messaggi
Caratteristiche delle code di messaggi
Signup and view all the flashcards
Come si crea o si apre una coda di messaggi?
Come si crea o si apre una coda di messaggi?
Signup and view all the flashcards
Cosa sono key e msgflg in msgget()?
Cosa sono key e msgflg in msgget()?
Signup and view all the flashcards
Cosa restituisce msgget()?
Cosa restituisce msgget()?
Signup and view all the flashcards
Cosa è msgflg?
Cosa è msgflg?
Signup and view all the flashcards
Che tipo di comunicazione è quella per messaggi?
Che tipo di comunicazione è quella per messaggi?
Signup and view all the flashcards
Come si possono ricevere i messaggi dalla coda?
Come si possono ricevere i messaggi dalla coda?
Signup and view all the flashcards
ipc_perm
ipc_perm
Signup and view all the flashcards
Come modificare i permessi di un oggetto IPC?
Come modificare i permessi di un oggetto IPC?
Signup and view all the flashcards
Cosa fanno i comandi ipcs e ipcrm?
Cosa fanno i comandi ipcs e ipcrm?
Signup and view all the flashcards
Quali sono i tre livelli di permessi per gli oggetti IPC?
Quali sono i tre livelli di permessi per gli oggetti IPC?
Signup and view all the flashcards
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.