7.6.5 I meccanismi di IPC di System V

Visto il limite intrinseco ai meccanismi di IPC rappresentati dalle pipe e dalle FIFO, ovvero il fatto che queste forniscono dei meccaniscmi di comunicazione sequenziali, le rende poco flessibili per le situazioni in cui un processo vuole comunicare qualcosa a molti altri processi. Per questo sono nati altri meccanismi di IPC che fecero la loro prima comparsa sui sistemi Unix System V (1983): le code di messaggi (message queues), i semafori e la memoria condivisa (shared memory).

Tali meccanismi si basano su oggetti permanenti che risiedono nel kernel, i quali, a differenza di quanto avviene per i file descriptor, non mantengono un contatore dei riferimenti che i processi fanno ad essi (un numero che indica quanti sono i riferimenti fatti a questi da parte dei vari processi), e non vengono cancellati automaticamente dal sistema una volta che non sono più utilizzati. Questo evidenzia immediatamente le seguenti problematiche:

Tali meccanismi condividono un metodo di autenticazione comune: i processi possono accedere a tali oggetti soltanto specificando al kernel, attraverso opportune system call, un identificatore univoco. Questo è un numero progressivo assegnato dal kernel man mano che questi oggetti vengono creati (tipo il PID). Poiché tale valore viene ritornato al processo che richiede la creazione di un oggetto IPC di System V, un secondo processo può utilizzare lo stesso oggetto IPC per comunicare col primo attraverso un altro meccanismo. Il kernel associa a ciascun oggetto IPC di System V una struttura ipc_perm nella quale vengono memorizzati i seguenti dati:

La chiave, specificata in fase di creazione dell’oggetto IPC, serve per poterne successivamente ricavare l’identificatore da parte dei processi.

I diritti di accesso, definiti dal proprietario dell’oggetto sono costituiti da un valore numerico che ha lo stesso significato di quello utilizzato per i file, anche se per gli oggetti IPC di System V il permesso di esecuzione non esiste e se specificato viene ignorato.

7.6.5.1 Le code di messaggi

[da completare ...]

7.6.5.2 I semafori

[da completare ...]

7.6.5.3 La memoria condivisa

[da completare ...]

7.6.5.4 TLI - Transport Layer Interface

La TLI (Transport Layer Interface) è l’alternativa ai socket sviluppata da System V.

[da completare ...]