En informatique , la communication interprocessus ( CIP ) désigne le partage de données entre des processus s'exécutant au sein d'un système informatique, ou entre plusieurs systèmes de ce type. Les mécanismes de CIP peuvent être fournis par un système d'exploitation . Les applications utilisant la CIP sont souvent classées en clients et serveurs : le client demande des données et le serveur répond à ces demandes. De nombreuses applications combinent les fonctions de client et de serveur, comme c'est souvent le cas en informatique distribuée .
La communication interprocessus (IPC) est essentielle à la conception des micro-noyaux et des nano-noyaux , qui réduisent le nombre de fonctionnalités offertes par le noyau. Ces fonctionnalités sont ensuite obtenues par la communication avec des serveurs via l'IPC, ce qui entraîne une augmentation significative des communications par rapport à un noyau monolithique classique. Les interfaces IPC intègrent généralement des structures de cadres analytiques variables. Ces processus garantissent la compatibilité entre les protocoles multivectoriels sur lesquels reposent les modèles IPC.
Un mécanisme de communication interprocessus (IPC) est soit synchrone , soit asynchrone. Des primitives de synchronisation peuvent être utilisées pour obtenir un comportement synchrone avec un mécanisme IPC asynchrone.
exigences logicielles , telles que les performances , la modularité et les circonstances du système telles que la bande passante et la latence du réseau .| Méthode | Description courte | Fourni par ( systèmes d'exploitation ou autres environnements) |
|---|---|---|
| Déposer | Un enregistrement stocké sur disque, ou un enregistrement synthétisé à la demande par un serveur de fichiers, qui peut être consulté par plusieurs processus. | La plupart des systèmes d'exploitation |
| Fichier de communications | Une forme unique de communication interprocessus (IPC) apparue à la fin des années 1960, qui ressemble fortement au protocole 9P du Plan 9. | Système de temps partagé de Dartmouth |
| Signal ; également piège de système asynchrone | Un message système envoyé d'un processus à un autre, généralement non pas pour transférer des données, mais pour commander à distance le processus partenaire. | La plupart des systèmes d'exploitation |
| Douille | Données transmises via une interface réseau, soit à un autre processus sur le même ordinateur, soit à un autre ordinateur du réseau. Orientées flux ( TCP ; les données écrites via un socket nécessitent un formatage pour préserver les limites des messages) ou, plus rarement, orientées messages ( UDP , SCTP ). | La plupart des systèmes d'exploitation |
| socket de domaine Unix | Similaires aux sockets Internet, les sockets de domaine utilisent le système de fichiers comme espace d'adressage. Un processus référence un socket de domaine comme inode , et plusieurs processus peuvent communiquer avec un même socket. | Tous les systèmes d'exploitation POSIX et Windows 10 |
| File d'attente de messages | Un flux de données similaire à un socket, mais qui préserve généralement les limites des messages. Typiquement implémenté par le système d'exploitation, il permet à plusieurs processus de lire et d'écrire dans la file d'attente de messages sans être directement connectés entre eux. | La plupart des systèmes d'exploitation |
| Pipe anonyme | Un canal de données unidirectionnel utilisant les entrées et sorties standard . Les données écrites à l'extrémité d'écriture du canal sont mises en mémoire tampon par le système d'exploitation jusqu'à leur lecture à l'extrémité de lecture. Une communication bidirectionnelle entre processus peut être réalisée en utilisant deux canaux en sens inverse. | Tous les systèmes POSIX , Windows |
| Tuyau nommé | Un tube nommé est traité comme un fichier. Au lieu d'utiliser les entrées et sorties standard comme avec un tube anonyme, les processus écrivent et lisent depuis un tube nommé, comme s'il s'agissait d'un fichier classique. | Tous les systèmes POSIX, Windows, AmigaOS 2.0+ |
| Mémoire partagée | Plusieurs processus ont accès au même bloc de mémoire , ce qui crée un tampon partagé permettant aux processus de communiquer entre eux. | Tous les systèmes POSIX, Windows |
| Transmission de messages | Permet à plusieurs programmes de communiquer via des files d'attente de messages et/ou des canaux non gérés par le système d'exploitation. Couramment utilisé dans les modèles de concurrence. | Utilisé dans les paradigmes LPC , RPC , RMI et MPI , Java RMI , CORBA , COM , DDS , MSMQ , MailSlots , QNX , et autres |
| Fichier mappé en mémoire | Un fichier mappé en RAM et modifiable directement par changement d'adresse mémoire, sans passer par un flux de données. Il offre les mêmes avantages qu'un fichier standard . | Tous les systèmes POSIX, Windows |
Applications
Pile de communication de la plateforme
Voici quelques exemples de systèmes de messagerie et d'information qui utilisent des mécanismes de communication interprocessus (IPC) mais qui n'implémentent pas eux-mêmes l'IPC :
Protocole de communication de bureau (DCOP) de KDE – obsolète et remplacé par D-BusPile de communication du système d'exploitation
Voici les API spécifiques à une plateforme ou à un langage de programmation :
Les événements Apple d' Apple Computer , anciennement connus sous le nom de Communications inter-applications (IAC)Modèles d'objets distribués
Voici des API spécifiques à une plateforme ou à un langage de programmation qui utilisent la communication interprocessus (IPC), mais qui ne l'implémentent pas elles-mêmes :
sessions PHP