Maintenant, discutons du projet sur la mémoire partagée en tant que communication inter-processus.
Dans ce projet, nous allons donc étendre le projet que vous avez réalisé sur les sockets de domaine Unix dans
le module précédent. Dans le projet de socket de domaine Unix, le processus serveur du gestionnaire de table de
routage (RTM) a synchronisé sa table de routage locale avec tous les clients connectés en utilisant le socket de domaine Unix comme IPC.
Dans ce projet, le processus RTM gère également une autre table.
Disons que cette table est appelée table ARP et qu'elle synchronise cette table avec tous les clients abonnés.
Les clients abonnés sont des clients connectés à l'aide d'une approche IPC à mémoire partagée.
Examinons donc le projet étape par étape.
La fonctionnalité du projet précédent restera inchangée.
La fonctionnalité du projet précédent n'est absolument pas modifiée.
Dans ce projet, nous ne faisons donc qu'étendre la fonctionnalité du projet.
Discutons donc de ce projet étape par étape pour voir ce que nous cherchons à mettre en œuvre.
Vous pouvez donc voir qu'il y a un processus serveur Rtmp et deux processus clients qui tournent
sur la même machine.
Appelons ce processus client : client A, client B et client C.
C'est vrai.
Ainsi, dans ce projet, le processus RTM est également en charge d'un ensemble d'adresses Mac.
Vous pouvez donc voir dans ce diagramme que notre processus RTM maintient un ensemble d'adresses Mac dans sa mémoire locale parce
que ces adresses Mac sont maintenues dans la mémoire locale du processus.
Il s'agit donc d'une mémoire de processus.
Notez donc que cette liste d'adresses Mac est maintenue dans le processus RTM.
Mémoire locale correspondant à chaque adresse Mac de cette liste.
Il existe une adresse IP dans la mémoire partagée.
C'est vrai.
N'oubliez donc pas que la mémoire partagée est toujours accessible à l'aide d'une clé.
Cette adresse Mac, qui est la première adresse Mac, est donc une clé pour la première adresse IP.
De même, la deuxième adresse Mac de cette liste est une clé pour la deuxième adresse IP dans la mémoire partagée,
et ainsi de suite.
Cela signifie que le processus RTM peut accéder à l'adresse IP stockée dans la mémoire partagée en utilisant l'adresse
Mac comme clé.
Maintenant, à tout moment.
La liste de ces adresses Mac doit être synchronisée avec la liste des adresses Mac de tous les autres processus
clients.
Par souci de clarté, je vous montre donc.
La liste des adresses Mac ne concerne que le processus client et vous pouvez voir que la liste des adresses Mac.
du processus client B est exactement la même que la liste des adresses Mac du processus RTM.
A nouveau, la synchronisation des adresses Mac entre le processus RTM et les processus clients doit être effectuée
en utilisant les sockets de domaine Unix comme IPC.
Supposons maintenant que l'administrateur ajoute une nouvelle adresse Mac à la liste des adresses Mac du processus
RTM.
Ici, l'administrateur ajoute une nouvelle entrée.
Maintenant, parce que l'administrateur a ajouté une nouvelle entrée dans la clé d'adresse Mac.
N'oubliez pas que ces adresses Mac sont les clés du contenu de la mémoire partagée.
Par conséquent, l'administrateur doit également insérer un contenu dans la mémoire partagée pour cette nouvelle clé.
Vous pouvez donc voir le contenu de la mémoire partagée.
Il dispose désormais d'une adresse IP.
122. 1. 2. 3.
La clé nouvellement ajoutée à l'adresse Mac est donc cette clé.
Correspond à cette valeur dans la mémoire partagée.
Ainsi, lorsque l'administrateur saisit la paire d'adresses Mac et IP dans le processus RTM, ce dernier doit enregistrer
l'adresse Mac dans sa liste d'adresses Mac et l'adresse IP doit être ajoutée à la région de mémoire partagée nouvellement
créée.
Une fois que l'administrateur a saisi avec succès la nouvelle adresse Mac et la nouvelle adresse IP dans
le processus RTM, il incombe à ce dernier de synchroniser tout changement dans la liste d'adresses Mac du processus
RTM avec tous les autres clients connectés.
Vous pouvez donc voir dans ce diagramme que le processus RTM envoie une mise à jour à tous les autres clients connectés et que cette
mise à jour est envoyée à l'aide d'une socket de domaine Unix.
Notez maintenant que le processus RTM envoie le code d'opération C, qui signifie Créer.
Créer signifie que la nouvelle adresse Mac a été ajoutée à la liste des adresses Mac du processus RTM.
Le deuxième champ de cette notification est l'adresse Mac actuelle qui a été ajoutée à la liste d'adresses
Mac du processus RTM.
Maintenant, lorsque le client reçoit cette mise à jour sur la notification du processus RTM, il effectue la même
opération sur sa liste d'adresses Mac.
Le client ajoute donc également la nouvelle adresse Mac à sa liste d'adresses Mac.
N'oubliez pas que cette notification est envoyée à tous les autres clients qui fonctionnent sur le système, c'est-à-dire
le client A et le client.
Voir aussi
Toutefois, par souci de clarté, j'essaie d'expliquer le projet uniquement en montrant le processus B du client
à titre d'exemple.
Vous pouvez donc voir qu'une fois que le processus client B a reçu une adresse Mac nouvellement créée en utilisant cette nouvelle adresse
Mac, qui vient d'être ajoutée à la liste des adresses Mac du processus client, le processus client peut maintenant
accéder au contenu de la mémoire partagée.
Ainsi, dans ce projet, le processus client se contente de lire le contenu de la mémoire partagée et de l'imprimer
à l'écran.
Ainsi, lorsque l'administrateur ajoute une paire d'adresses Mac et IP au processus RTM, ce dernier met
à jour sa liste d'adresses Mac avec l'adresse Mac et met à jour la mémoire partagée avec
l'adresse IP.
L'adresse mac est en fait une clé de l'adresse IP qui est stockée dans la mémoire partagée.
Ensuite, le processus Altium se contente de synchroniser ou de notifier ce changement au reste du processus client
qui s'exécute sur le même système.
Une fois que le processus client a reçu cette clé du processus RTM, il effectue la même opération
sur sa liste d'adresses Mac.
C'est-à-dire qu'il.
Créez ou supprimez la clé d'adresse Mac de sa liste de tables d'adresses Mac.
Essayons donc d'illustrer à nouveau l'ensemble de ce projet.
Ainsi, dans ce projet, tous les processus, qu'il s'agisse d'un processus RTM ou d'un processus client, sont censés ne stocker
que la clé de mémoire partagée, c'est-à-dire l'adresse Mac, dans leur structure de données interne.
Rappelez-vous donc que la clé de la mémoire partagée est constituée par les adresses Mac, et que chaque processus
de ce projet conserve la liste des adresses Mac dans ses structures de données internes.
Vous pouvez donc voir dans ce diagramme que nous avons une mémoire partagée et que le processus RTM maintient la
liste des adresses Mac ainsi que le processus client, qui maintient également la même liste d'adresses Mac.
Le processus du serveur ajoute maintenant les données correspondant à une nouvelle adresse Mac.
Il ajoute une adresse IP à la mémoire partagée et il y a donc toujours une correspondance 1 à 1 entre les adresses
Mac et les adresses IP qui sont stockées dans la mémoire partagée.
Vous pouvez donc voir que le Mac est la clé de l'adresse IP.
IP one, Mac two est la clé de l'adresse IP, IP two et ainsi de suite.
Ainsi, dans le processus RTM, chaque fois qu'il y a un changement dans la liste des adresses Mac maintenue par
le processus RTM, le processus RTM synchronise ou notifie uniquement les adresses Mac au reste des clients connectés en utilisant
des sockets de domaine Unix.
C'est vrai.
Ainsi, par exemple, supposons que le processus RTM ajoute une nouvelle adresse Mac for dans sa liste d'adresses Mac et qu'il ajoute
l'adresse IP correspondant à cette adresse Mac dans la mémoire partagée.
Ainsi, le processus RTM utilisant des sockets de domaine Unix ne fait que synchroniser ou transmettre l'ajout de nouvelles adresses
Mac for au processus client.
Ainsi, lorsque le processus client, ayant reçu cette nouvelle clé qui est Mac pour le processus client, stocke cette nouvelle adresse Mac dans
sa propre liste privée et en utilisant cette adresse Mac comme clé de mémoire partagée, les processus clients peuvent
également accéder à l'adresse IP correspondante qui a été ajoutée par le processus serveur dans la mémoire
partagée.
Vous pouvez donc voir qu'une fois que le processus client a reçu Mac for du processus RTM, le processus client peut maintenant
accéder à la mémoire partagée et lire l'adresse IP for dans la mémoire partagée.
Et lorsque le nouveau client se connecte au processus du serveur, parce qu'un client peut arriver à
tout moment et se connecter au processus du serveur.
Ainsi, comme dans le projet précédent, le serveur était censé synchroniser ou transférer l'intégralité de la table de routage
à ce client nouvellement connecté.
Dans ce projet, nous ferons la même chose en plus de la table de routage.
Le processus synchronise également l'ensemble de la liste d'adresses Mac locale avec ce nouveau client à l'aide d'une socket de domaine
Unix.
Ainsi, le client nouvellement connecté obtiendra toutes les informations relatives à la table de routage
et à la table mac.
Via le socket de domaine Unix et la mémoire partagée ipxe du processus RTM.
J'espère donc que le projet sera intéressant et simple.
Bonne chance à tous.