Comunicazione interprocesso (IPC) su Linux
Questo capitolo fornisce una panoramica dei meccanismi di comunicazione tra processi (IPC) sui sistemi Linux. I meccanismi descritti si applicano sia all'IPC tra processi Linux generici che in particolare all'IPC CODESYS Control Sistemi runtime SL e altri processi.
I meccanismi elencati di seguito sono riassunti e resi disponibili da sistemi basati su Linux CODESYS sistemi di runtime tramite CODESYS librerie.
Meccanismo | Scopo | Rilevante CODESYS Biblioteche | Note | API Linux tipica |
|---|---|---|---|---|
Memoria condivisa | I processi scambiano grandi quantità di dati contemporaneamente. |
|
|
|
Semafori POSIX (meccanismi di sincronizzazione) | Controlla l'accesso alle risorse condivise o il controllo del flusso |
| Il codice di blocco nell'applicazione IEC non dovrebbe causare grandi ritardi nel funzionamento ciclico e nelle attività IEC cicliche. |
|
Socket (UDP, TCP, socket di dominio Unix) | Scambia messaggi, basati su stream o pacchetti, localmente o tra host |
|
|
|
Istruzioni per l'uso
Indipendente dalla tecnologia:
I meccanismi IPC non sono legati a una tecnologia specifica. Le tecnologie possono essere combinate in qualsiasi modo. I processi possono essere implementati in diversi linguaggi o ambienti di runtime, ad esempio:
Binari nativi (C/C++)
script Python
Applicazioni Java
Codice IEC da CODESYS
La modularizzazione delle applicazioni IEC migliora la manutenibilità, la tolleranza ai guasti e la scalabilità:
Anche per una singola applicazione IEC di grandi dimensioni, l'IPC può essere utile per suddividerlo in unità funzionali, ad esempio:
Movimento
Fieldbus
Visualizzazione
Scambio/esportazione di dati
Vantaggi in assenza di interfacce native:
L'IPC può essere utilizzato quando un'API richiesta non è disponibile nella tecnologia desiderata.
Esempio: una libreria Python contiene una funzionalità richiesta, ma non può essere utilizzata direttamente nella comunicazione IEC → tramite socket Unix o memoria condivisa.