Laboratorio Sistemi Operativi: Code di Messaggi
45 Questions
0 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

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?

  • shm_perm.key
  • shm_perm.uid (correct)
  • shm_perm.gid
  • shm_perm.mode
  • 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?

    <p>Ottenere e gestire informazioni sugli oggetti IPC.</p> Signup and view all the answers

    Come vengono inizializzati i permessi in un oggetto IPC?

    <p>Utilizzando i 9 bit più bassi specificati nei flag della syscall get.</p> Signup and view all the answers

    Quale costante rappresenta il permesso di scrittura per l'utente?

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

    Cosa succede se un processo specifica IPC_EXCL e l'oggetto IPC esiste già?

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

    Quale delle seguenti combinazioni di permessi connette un oggetto con tutti i diritti possibili per l'utente?

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

    In quale situazione viene utilizzata la costante IPC_CREAT?

    <p>Quando si crea un nuovo oggetto IPC se non esiste.</p> Signup and view all the answers

    Qual è il valore simbolico per la lettura per gli altri?

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

    Qual è il permesso di esecuzione per il gruppo?

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

    Quale costante combinata rappresenta tutti i diritti di accesso per il gruppo?

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

    Cosa deve specificare un processo per ottenere lo stesso identificatore IPC?

    <p>La stessa chiave utilizzata da un altro processo.</p> Signup and view all the answers

    Qual è il ruolo del numero i-node nella generazione della chiave con ftok()?

    <p>Generare una chiave unica a partire dallo stesso file.</p> Signup and view all the answers

    Quale di queste asserzioni riguarda l'argomento proj nella funzione ftok()?

    <p>Permette di creare più chiavi dallo stesso file.</p> Signup and view all the answers

    Cosa rappresenta la struttura dati ipc_perm in relazione agli oggetti IPC?

    <p>Memorizza informazioni di autorizzazione e proprietà degli oggetti IPC.</p> Signup and view all the answers

    Quale syscall deve essere utilizzata per ottenere una copia della struttura ipc_perm?

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

    Cosa accade se un file viene rimosso e ricreato mentre un'applicazione è in esecuzione?

    <p>La generazione della chiave potrebbe risultare errata.</p> Signup and view all the answers

    Quale delle seguenti affermazioni è vera riguardo alla struttura shmid_ds?

    <p>Immagazzina informazioni relative agli oggetti IPC.</p> Signup and view all the answers

    Qual è il risultato di chiamare ipc_perm con l'operazione IPC_SET?

    <p>Modifica gli elementi della struttura dati associati all'oggetto IPC.</p> Signup and view all the answers

    Quale modalità non fa parte della struttura ipc_perm?

    <p>int shared_memory</p> Signup and view all the answers

    Qual è la funzione della chiamata di sistema shmctl con IPC_RMID?

    <p>Cancellare un oggetto IPC</p> Signup and view all the answers

    Cosa accade alla memoria condivisa quando viene emessa la chiamata shmctl con IPC_RMID?

    <p>Rimane fino a quando non è staccata da tutti i processi</p> Signup and view all the answers

    Quale affermazione descrive correttamente la persistenza degli oggetti IPC?

    <p>Vengono mantenuti finché non vengono esplicitamente cancellati</p> Signup and view all the answers

    Qual è uno degli svantaggi della persistenza degli oggetti IPC?

    <p>Essi possono accumularsi e raggiungere il limite di sistema</p> Signup and view all the answers

    Cosa succede a un oggetto IPC se un processo lo cancella mentre altri processi lo stanno ancora utilizzando?

    <p>L'oggetto resta attivo fino a quando non è staccato da tutti</p> Signup and view all the answers

    Qual è la caratteristica principale degli oggetti IPC in termini di connessione?

    <p>Sono connectionless e il kernel non traccia i processi</p> Signup and view all the answers

    Quale operazione di controllo è comune a tutti i meccanismi di IPC?

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

    Che effetto ha la cancellazione degli oggetti IPC rispetto all'informazione contenuta in essi?

    <p>L'informazione viene distrutta immediatamente</p> Signup and view all the answers

    Quale comando viene utilizzato per cancellare un oggetto IPC?

    <p>ipcrm -X key</p> Signup and view all the answers

    Cosa visualizza il comando ipcs per i semafori?

    <p>Il numero totale di semafori nel gruppo</p> Signup and view all the answers

    Qual è il comportamento predefinito del comando ipcs su Linux riguardo ai permessi?

    <p>Mostra gli oggetti solo se ci sono permessi di lettura</p> Signup and view all the answers

    Quale delle seguenti informazioni non viene visualizzata da ipcs per la memoria condivisa?

    <p>Numero totale di messaggi nella coda</p> Signup and view all the answers

    Quali sono i parametri che possono essere utilizzati con il comando ipcrm?

    <p>-X e -x</p> Signup and view all the answers

    Quale informazione viene visualizzata per le code di messaggi tramite ipcs?

    <p>Numero totale di messaggi e byte utilizzati</p> Signup and view all the answers

    Quale dei seguenti comandi non è corretto per l'uso di ipcrm?

    <p>ipcrm -R key</p> Signup and view all the answers

    Quale informazione non è data da ipcs riguardo agli oggetti IPC?

    <p>Lo stato dei processi collegati</p> Signup and view all the answers

    Qual è una caratteristica distintiva delle code di messaggi rispetto a pipe e FIFO?

    <p>Ogni messaggio contiene un identificatore intero.</p> Signup and view all the answers

    Quale funzione viene utilizzata per creare o aprire una coda di messaggi?

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

    Quale argomento della funzione msgget() serve per definire i permessi della coda di messaggi?

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

    Quale delle seguenti affermazioni è vera riguardo alla comunicazione delle code di messaggi?

    <p>Un lettore riceve messaggi interi scritti dallo scrittore.</p> Signup and view all the answers

    Che cosa viene restituito dalla funzione msgget() in caso di successo?

    <p>Un identificatore della coda di messaggi</p> Signup and view all the answers

    In che ordine vengono prelevati i messaggi da una coda di messaggi?

    <p>First-in, first-out o per tipo</p> Signup and view all the answers

    Quale dei seguenti metodi può essere utilizzato per generare una chiave per msgget()?

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

    Quale opzione descrive correttamente il comportamento delle code di messaggi?

    <p>Ogni messaggio deve essere inviato come un pacchetto atomico.</p> 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 call open per i file.
    • Una chiamata get accetta una key intera, che crea un nuovo oggetto, oppure restituisce l'identificatore di un oggetto esistente

    Creazione/Apertura Oggetti IPC - dettagli

    • La chiamata get riceve una key 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 e ipcrm sono analogo a ls e rm 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 come IPC_PRIVATE o IPC_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 di msgtyp 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.

    Quiz Team

    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.

    More Like This

    Use Quizgecko on...
    Browser
    Browser