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. (B)</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. (B)</p> Signup and view all the answers

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

<p>S_IWUSR (C)</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. (B)</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 (D)</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. (C)</p> Signup and view all the answers

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

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

Qual è il permesso di esecuzione per il gruppo?

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

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

<p>S_IRWXG (C)</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. (A)</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. (A)</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. (A)</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. (B)</p> Signup and view all the answers

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

<p>msgctl (D)</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. (C)</p> Signup and view all the answers

Quale delle seguenti affermazioni è vera riguardo alla struttura shmid_ds?

<p>Immagazzina informazioni relative agli oggetti IPC. (C)</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. (D)</p> Signup and view all the answers

Quale modalità non fa parte della struttura ipc_perm?

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

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

<p>Cancellare un oggetto IPC (C)</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 (B)</p> Signup and view all the answers

Quale affermazione descrive correttamente la persistenza degli oggetti IPC?

<p>Vengono mantenuti finché non vengono esplicitamente cancellati (A)</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 (C)</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 (B)</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 (B)</p> Signup and view all the answers

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

<p>IPC_RMID (A)</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 (D)</p> Signup and view all the answers

Quale comando viene utilizzato per cancellare un oggetto IPC?

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

Cosa visualizza il comando ipcs per i semafori?

<p>Il numero totale di semafori nel gruppo (D)</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 (D)</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 (C)</p> Signup and view all the answers

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

<p>-X e -x (C)</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 (A)</p> Signup and view all the answers

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

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

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

<p>Lo stato dei processi collegati (B)</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. (D)</p> Signup and view all the answers

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

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

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

<p>msgflg (D)</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. (B)</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 (B)</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 (A)</p> Signup and view all the answers

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

<p>IPC_PRIVATE (A)</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. (D)</p> Signup and view all the answers

Flashcards

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

Costanti che definiscono i permessi di lettura, scrittura ed esecuzione per l'utente proprietario di un oggetto.

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

Costanti che definiscono i permessi di lettura, scrittura ed esecuzione per altri utenti (non proprietari né appartenenti al gruppo).

Signup and view all the flashcards

msgget(key, flags)

Funzione per creare o recuperare un oggetto IPC (Inter-Process Communication).

Signup and view all the flashcards

IPC_CREAT

Flag che permette a msgget di creare un nuovo oggetto IPC se non esiste.

Signup and view all the flashcards

IPC_EXCL

Flag che fa fallire msgget se l'oggetto IPC corrispondente alla key esiste già.

Signup and view all the flashcards

Identificatore IPC

Numero univoco assegnato a un oggetto IPC per identificarlo a processi diversi.

Signup and view all the flashcards

Cancellazione IPC

Operazione che rimuove un oggetto Inter-Process Communication (IPC).

Signup and view all the flashcards

shmctl(id, IPC_RMID, NULL)

System call per rimuovere un segmento di memoria condivisa (shared memory).

Signup and view all the flashcards

IPC_RMID

Operazione generica di controllo per la cancellazione di oggetti IPC.

Signup and view all the flashcards

Persistenza oggetti IPC

Gli oggetti IPC continuano ad esistere finché non vengono cancellati o il sistema spento.

Signup and view all the flashcards

Cancellazione code messaggi/semafori

Cancellazione immediata, distrutte tutte le informazioni.

Signup and view all the flashcards

Cancellazione memoria condivisa

Rimozione del segmento di memoria solo dopo che tutti i processi lo rilasciano.

Signup and view all the flashcards

Oggetti IPC connectionless

Il kernel non tiene traccia dei processi che hanno un oggetto aperto.

Signup and view all the flashcards

Limiti oggetti IPC

Esistono limiti sul numero massimo di oggetti IPC di ogni tipo.

Signup and view all the flashcards

ipcs

Un comando per visualizzare informazioni sugli oggetti di comunicazione inter-processi (IPC) come memoria condivisa, semafori e code di messaggi.

Signup and view all the flashcards

IPC

Comunicazione inter-processi (IPC). Un meccanismo che permette a processi diversi di comunicare e condividere dati.

Signup and view all the flashcards

Memoria condivisa

Un meccanismo che permette a più processi di accedere alla stessa regione di memoria.

Signup and view all the flashcards

Semaforo

Un meccanismo di sincronizzazione che controlla l'accesso a risorse condivise, assicurando la corretta sincronizzazione tra i processi.

Signup and view all the flashcards

Coda di messaggi

Un meccanismo di comunicazione che permette di scambiare messaggi tra processi.

Signup and view all the flashcards

key

Un valore univoco utilizzato per identificare un oggetto IPC.

Signup and view all the flashcards

id

Un identificatore numerico assegnato a un oggetto IPC.

Signup and view all the flashcards

ftok() e key

ftok() è una funzione che genera una chiave (key_t) utilizzata per identificare un oggetto IPC (Inter-Process Communication). La chiave è basata sul numero i-node del file specificato e sul parametro 'progetto' (proj).

Signup and view all the flashcards

Numero i-node

Il numero i-node è un identificativo univoco assegnato ad ogni file dal sistema operativo. Esso è fondamentale nella generazione della chiave ftok().

Signup and view all the flashcards

Oggetto IPC

Un oggetto Inter-Process Communication (IPC) permette a processi diversi di comunicare e condividere risorse.

Signup and view all the flashcards

Argomento proj (ftok)

L'argomento proj nella funzione ftok() consente di creare diverse chiavi per lo stesso file, utile per diversi oggetti IPC dello stesso tipo.

Signup and view all the flashcards

struct ipc_perm

Struttura dati che il kernel utilizza per memorizzare i permessi di un oggetto IPC.

Signup and view all the flashcards

shmctl(IPC_STAT)

Sistema call che permette di ottenere una copia della struttura dati dell'oggetto IPC dal kernel.

Signup and view all the flashcards

shmctl(IPC_SET)

Sistema call per modificare alcuni elementi della struttura dati dell'oggetto IPC.

Signup and view all the flashcards

msgget() (IPC_CREAT)

Funzione per creare una coda di messaggi (un tipo di oggetto IPC). L'opzione IPC_CREAT indica al sistema di creare la coda se non esiste.

Signup and view all the flashcards

Caratteristiche delle code di messaggi

Le code di messaggi differiscono da pipe e FIFO perché ogni messaggio è un'entità intera, non è possibile leggere porzioni di messaggi e la lettura avviene in ordine first-in, first-out o per messaggio di tipo.

Signup and view all the flashcards

Come si crea o si apre una coda di messaggi?

La funzione msgget(key, msgflg) crea o apre una coda di messaggi. La chiave è un identificatore univoco generato con ftok(), IPC_PRIVATE o un numero casuale.

Signup and view all the flashcards

Cosa sono key e msgflg in msgget()?

Key identifica la coda di messaggi, mentre msgflg specifica i permessi di accesso e il comportamento in caso di codice già esistente.

Signup and view all the flashcards

Cosa restituisce msgget()?

Ritorna un identificatore univoco (ID) della coda di messaggi se va a buon fine, -1 in caso di errore.

Signup and view all the flashcards

Cosa è msgflg?

È una maschera di bit che specifica i permessi di accesso alla coda di messaggi. Permette di creare una nuova coda, verificare i permessi o entrambe le cose.

Signup and view all the flashcards

Che tipo di comunicazione è quella per messaggi?

La comunicazione è di tipo 'message-oriented'

Signup and view all the flashcards

Come si possono ricevere i messaggi dalla coda?

I messaggi possono essere ricevuti in ordine first-in, first-out oppure per tipo.

Signup and view all the flashcards

ipc_perm

Questa è una struttura dati che contiene le informazioni sui permessi per un oggetto di comunicazione inter-processo (IPC). Questo include i permessi per l'owner, il gruppo e gli altri utenti.

Signup and view all the flashcards

Come modificare i permessi di un oggetto IPC?

I permessi possono essere modificati tramite la funzione shmctl(id, IPC_SET, &shmds). Il campo mode della struttura shmds contiene i permessi che desideriamo modificare.

Signup and view all the flashcards

Cosa fanno i comandi ipcs e ipcrm?

ipcs fornisce informazioni sugli oggetti IPC nel sistema, simile al comando ls per i file. ipcrm elimina gli oggetti IPC, come il comando rm per i file.

Signup and view all the flashcards

Quali sono i tre livelli di permessi per gli oggetti IPC?

I permessi degli oggetti IPC sono organizzati in tre categorie: owner (proprietario), group (gruppo) e other (altri). Ogni categoria ha le proprie impostazioni di lettura, scrittura ed esecuzione.

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 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

Message Queues
5 questions

Message Queues

SilentAffection avatar
SilentAffection
Chapter 7: Asynchronous Messaging
48 questions
Inter Process Communication Basics
45 questions
RabbitMQ Concepts
41 questions

RabbitMQ Concepts

InsightfulJaguar9662 avatar
InsightfulJaguar9662
Use Quizgecko on...
Browser
Browser