Scambio di messaggi
# Scambio di messaggi

Scambio di messaggi: attività collegata alla psicolinguistica nell'ambito della comunicazione.

Lo scambio di messaggi rientra nell'ambito più generale del processo di scambio di valori per il mantenimento nel tempo della società, intesa come gruppo senziente in grado di decodificare input e trasmettere output. Nell'ambito della società umana la moderna sociologia ha definito tre ambiti di scambio ove lo "scambio di messaggi" è presente:

* scambio di idee
* scambio di beni
* scambio matrimoniale

Durante il processo dello scambio di idee, pensieri, parole si possono usare diversi sistemi, sia convenzionali che non convenzionali. Tra i sistemi convenzionali si è diffuso ampiamente lo scambio di sms o Short Message Service.

## Esempi

### Modello syscall

Lo scambio di messaggi è un modello nel quale i processi possiedono delle aree di memoria private (non accessibili da altri processi) ed interagiscono con altri processi tramite l'invio e la ricezione di messaggi (syscall send e receive).

Esistono due tipi di canali attraverso i quali i messaggi vengono gestiti:

* Collegamento fisico (Ambienti distribuiti);
* Zona di memoria gestita esclusivamente da S.O. (Sistema a memoria comune).

Il messaggio, oltre che dal corpo, è composto anche da un'intestazione, contenente varie informazioni (origine, destinazione, lunghezza del messaggio, tipo di messaggio, informazioni di controllo). In una comunicazione a messaggi esistono due tipi di comunicazioni (simmetrica e asimmetrica).

Nella comunicazione simmetrica il processo che invia il messaggio indica esplicitamente il processo a cui sarà recapitato all'interno del send, mentre il processo che riceve un messaggio indica esplicitamente il processo che ha inviato il messaggio all'interno del receive.

Nella comunicazione asimmetrica il processo che invia il messaggio indica il processo destinatario, mentre il processo ricevente riceve il messaggio di qualsiasi altro processo riconoscendolo di volta in volta tramite un ID. Nei sistemi multiprocessore può essere presente una coda di messaggi detta “mailbox”, la quale viene specificata nelle syscall send e receive.

### Mailbox

La mailbox è quindi presente in un modello client-server del tipo molti a uno (nel quale più messaggi provenienti da più processi vengono canalizzati in una porta e messi in coda per poter essere letti in sequenza da un processo servitore). Importante è il tipo di sincronizzazione presente in un modello di comunicazione tramite messaggi, che si può contraddistinguere in base a molteplici aspetti:

* send asincrone;
* send sincrone (rendez-vous semplice, attendere che il messaggio sia stato ricevuto);
* send tipo di chiamata di procedura remota (rendez-vous esteso, nel quale il processo che invia il messaggio riprende l'esecuzione soltanto quando esso viene servito);
* receive bloccante (il processo ricevente si blocca quando non è presente alcun messaggio nel buffer);
* receive non bloccante.
