Skip to main content

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.

  • SysShm

  • Primitives de synchronisation : SysEvent, SysSemProcess

  • La mémoire partagée permet la lecture/écriture en parallèle sans copie

  • La synchronisation des accès est vivement recommandée, par exemple :

    • Drapeaux atomiques pour la coordination de la lecture et de l'écriture

    • Événements ou sémaphores pour une synchronisation précise

  • shm_open + mmap

  • shm_close

Sémaphores POSIX (mécanismes de synchronisation)

Contrôle l'accès aux ressources partagées ou le contrôle des flux

  • SysEvent

  • SysSemProcess

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.

  • sem_open

  • sem_wait/sem_try_wait/sem_clockwait

  • sem_post

  • sem_close

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

  • Les sockets de domaine Unix offrent des avantages de performances significatifs par rapport au protocole TCP/UDP pour les communications locales.

  • Les sockets réseau permettent l'échange de données au-delà des limites de l'appareil.

  • socket

  • accept/bind/listen/connect

  • read/write

  • close

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.