Skip to main content

Comunicación entre procesos (IPC) en Linux

Este capítulo proporciona una descripción general de los mecanismos de comunicación entre procesos (IPC) en los sistemas Linux. Los mecanismos descritos se aplican tanto al IPC entre los procesos generales de Linux como específicamente al IPC CODESYS Control Sistemas de ejecución de SL y otros procesos.

Los mecanismos que se enumeran a continuación están resumidos y puestos a disposición por la empresa basada en Linux CODESYS sistemas de ejecución mediante CODESYS bibliotecas.

Mecanismo

Propósito

Relevante CODESYS Bibliotecas

Notas

API típica de Linux

Memoria compartida

Los procesos intercambian grandes cantidades de datos simultáneamente.

  • SysShm

  • Primitivas de sincronización: SysEvent, SysSemProcess

  • La memoria compartida permite la lectura/escritura en paralelo sin copiar

  • Se recomienda encarecidamente la sincronización del acceso, por ejemplo:

    • Banderas atómicas para la coordinación de lectura/escritura

    • Eventos o semáforos para una sincronización precisa

  • shm_open + mmap

  • shm_close

Semáforos POSIX (mecanismos de sincronización)

Controla el acceso a los recursos compartidos o el control de flujo

  • SysEvent

  • SysSemProcess

El bloqueo del código en la aplicación IEC no debería provocar grandes retrasos en el funcionamiento cíclico y en las tareas cíclicas de IEC.

  • sem_open

  • sem_wait/sem_try_wait/sem_clockwait

  • sem_post

  • sem_close

Enchufes (UDP, TCP, sockets de dominio Unix)

Intercambia mensajes, ya sea por streaming o por paquetes, de forma local o entre hosts

  • Los sockets de dominio Unix proporcionan importantes ventajas de rendimiento en comparación con TCP/UDP para la comunicación local.

  • Los sockets de red permiten el intercambio de datos más allá de los límites del dispositivo.

  • socket

  • accept/bind/listen/connect

  • read/write

  • close

Instrucciones de uso

  • Independiente de la tecnología:

    Los mecanismos del IPC no están vinculados a una tecnología específica. Las tecnologías se pueden combinar de cualquier forma. Los procesos se pueden implementar en diferentes lenguajes o entornos de ejecución, por ejemplo:

    • Binarios nativos (C/C++)

    • Secuencias de comandos Python

    • Aplicaciones Java

    • Código IEC de CODESYS

  • La modularización de las aplicaciones IEC mejora la capacidad de mantenimiento, la tolerancia a fallos y la escalabilidad:

    Incluso para una sola aplicación grande de IEC, el IPC puede resultar útil para dividirla en unidades funcionales, por ejemplo:

    • Movimiento

    • Fieldbus

    • Visualización

    • Intercambio/exportación de datos

  • Ventajas cuando faltan interfaces nativas:

    El IPC se puede usar cuando la API requerida no está disponible en la tecnología deseada.

    Ejemplo: una biblioteca de Python contiene una funcionalidad obligatoria, pero no se puede usar directamente en la comunicación IEC → a través de conectores Unix o memoria compartida.