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. |
|
|
|
Semáforos POSIX (mecanismos de sincronización) | Controla el acceso a los recursos compartidos o el control de flujo |
| 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. |
|
Enchufes (UDP, TCP, sockets de dominio Unix) | Intercambia mensajes, ya sea por streaming o por paquetes, de forma local o entre hosts |
|
|
|
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.