Les calculs ont souvent besoin de déplacer les données d'un site à l'autre, et n'ont pas de mémoire partagée. Donc un calcul envoie un message contenant les données à l'autre.
Comment devrait-données, si elle est arbitrairement complexe, être envoyés dans un message?
Regroupement est le processus de conversion d'un champ de données, ou de toute une série de structures, dans une chaîne sérialisée qui peuvent être envoyés dans un message. Pour marshall un binaire
nombre, on peut la convertir en hexadécimal chaîne de chiffres, si le format de message doit être du texte. Si le message transporter des données binaires, le nombre binaire peut être converti en 4 little-endian normalisé forme d'octets binaires et les envoyés de cette façon. Les pointeurs sont plus difficiles; souvent, on doit les convertir en une référence abstraite (par exemple, un "numéro de nœud") qui est indépendante de la mémoire des lieux.
Bien sûr, si vous "marshall" de données, vous devez éventuellement "unmarshall", qui est le processus de la lecture de la série de flux et de reconstruction de la transmission de données (structure).
Il y a souvent de (dé)sérialisation des routines dans une bibliothèque qui sont utilisées pour atteindre ce but, et parfois il y a même des outils qui fabriquent tous les appels nécessaires sur la (dé)sérialisation des routines pour envoyer/recevoir les données.