Un messaggio attivo (AM) è un tipo di comunicazione tra processi utilizzata nell’informatica, per cui la subroutine o la funzione di un programma per computer può essere eseguita da un computer completamente diverso da quello in cui risiede. Questo tipo di messaggio è di un formato così fondamentale che consente un maggiore utilizzo della larghezza di banda della rete su protocolli Internet standard (IP). È anche considerato un sistema di scambio di messaggi asincrono, in quanto viene eseguito immediatamente invece di attendere un momento particolare per sincronizzarsi con il programma.
Con il modello di comunicazione di messaggistica attiva, gran parte del lavoro avviene a livello hardware, dove l’hardware interagisce con i driver del sistema operativo. Poiché questo livello inferiore è normalmente riservato all’attività del sistema operativo, i messaggi sono costruiti in modo tale da poter trasportare istruzioni per l’accesso a una sequenza di funzioni utente di livello superiore. All’interno dell’intestazione di un AM c’è l’indirizzo di quello che viene chiamato gestore. Il gestore è un’istruzione speciale a livello di utente che consente di elaborare il corpo del messaggio mediante un calcolo eseguito attraverso il processore. Il corpo di un messaggio attivo, quindi, è l’argomento della funzione oi dati su cui il calcolo deve agire.
Data la natura essenziale della costruzione di un messaggio attivo, è in grado di superare i protocolli di comunicazione di rete IP esistenti. La differenza principale, tuttavia, è che viene eseguita immediatamente alla ricezione, invece di richiedere un metodo di consegna multifase, di invio, conferma di ricezione. In questo modo, un messaggio attivo considera la rete semplicemente una pipe aperta per l’attraversamento. Le sue uniche limitazioni sono quelle della rete fisica, dove la distanza tra i nodi può tenere conto della latenza del messaggio.
Il modo in cui funziona un sistema di messaggistica attivo è tramite un mittente che riempie la rete di messaggi. Non c’è buffering sul lato ricevente, la cui unica risposta a un AM è interrompere brevemente il suo calcolo per il gestore del messaggio, prendere il messaggio dalla rete e continuare con i suoi affari. L’unico momento in cui si verifica il buffering dei messaggi è dall’estremità del mittente, dove i messaggi vengono trattenuti a seconda che la rete stia raggiungendo i suoi limiti. Un metodo di polling tiene sotto controllo la rete in modo che il sistema sappia quando inserire più messaggi. I messaggi attivi consentono quindi la continua sovrapposizione dei messaggi inviati con i calcoli che si verificano su macchine remote, oltre a mantenerli tutti coordinati.
Sebbene il metodo del messaggio attivo possa essere di natura semplice, deve affrontare alcuni problemi relativi all’implementazione. Anche se sono di una struttura così primitiva, sono spesso necessari driver di interfaccia progettati su misura per gestire i messaggi per un sistema informatico. I messaggi attivi sono progettati anche per operare tra nodi di computer che eseguono tutti lo stesso programma. In questo modo, le istruzioni inviate e ricevute sono specifiche del programma già in esecuzione sul computer di destinazione.
A causa della loro natura, i messaggi attivi hanno trovato ampio utilizzo in ambienti di elaborazione parallela, come applicazioni SPMD (single process, multiple data). Questi programmi vengono eseguiti su grandi reti di sistemi informatici in cui vengono utilizzati messaggi attivi per il passaggio di istruzioni e dati tra le macchine. Tali sistemi distribuiti utilizzano il metodo per elaborare in modo efficiente enormi quantità di dati che altrimenti richiederebbero troppo tempo su una singola macchina.