Communication interprocessus (IPC) sous Linux
Ce chapitre fournit une vue d'ensemble des mécanismes de communication interprocessus (IPC) sur les systèmes Linux. Les mécanismes décrits s'appliquent à la fois à l'IPC entre les processus généraux de Linux et spécifiquement à l'IPC entre un ou plusieurs CODESYS Control Systèmes d'exécution SL et autres processus.
Les mécanismes listés ci-dessous sont résumés et mis à disposition par le logiciel basé sur Linux CODESYS systèmes d'exécution via CODESYS bibliothèques.
Mécanisme | Finalité | Pertinent CODESYS Bibliothèques | Remarques | API Linux typique |
|---|---|---|---|---|
Mémoire partagée | Les processus échangent simultanément de grandes quantités de données. |
|
|
|
Sémaphores POSIX (mécanismes de synchronisation) | Contrôle l'accès aux ressources partagées ou le contrôle des flux |
| Le code de blocage dans l'application IEC ne devrait pas entraîner de retards importants dans le fonctionnement cyclique et dans les tâches IEC cycliques. |
|
Sockets (UDP, TCP, sockets de domaine Unix) | Échange des messages, qu'ils soient basés sur des flux ou des paquets, localement ou entre hôtes |
|
|
|
Instructions d'utilisation
Indépendant de la technologie :
Les mécanismes IPC ne sont pas liés à une technologie spécifique. Les technologies peuvent être combinées de n'importe quelle manière. Les processus peuvent être implémentés dans différents langages ou environnements d'exécution, par exemple :
Binaires natifs (C/C++)
Scripts Python
Applications Java
Code IEC de CODESYS
La modularisation des applications IEC améliore la maintenabilité, la tolérance aux pannes et l'évolutivité :
Même pour une seule grande application IEC, l'IPC peut être utile pour la décomposer en unités fonctionnelles, par exemple :
Mouvement
Bus de terrain
Visualisation
Échange/exportation de données
Avantages en cas d'absence d'interfaces natives :
L'IPC peut être utilisé lorsqu'une API requise n'est pas disponible pour la technologie souhaitée.
Exemple : Une bibliothèque Python contient une fonctionnalité requise, mais ne peut pas être utilisée directement dans la communication IEC → via des sockets Unix ou une mémoire partagée.