Maison >Tutoriel système >Linux >6 façons de communiquer entre les processus Linux
Le processus est le concept du système d'exploitation. Chaque fois que nous exécutons un programme, un processus est créé pour le système d'exploitation. Dans ce processus, des ressources sont allouées et libérées. Un processus peut être considéré comme l’exécution d’un programme.
Les espaces utilisateur du processus sont indépendants les uns des autres et ne peuvent généralement pas accéder les uns aux autres. Mais dans de nombreux cas, les processus doivent communiquer entre eux pour remplir une certaine fonction du système. Les processus coordonnent leur comportement en communiquant avec le noyau et d'autres processus.
Transfert de données : un processus doit envoyer ses données à un autre processus, et la quantité de données envoyées varie d'un octet à plusieurs mégaoctets.
Données partagées : plusieurs processus souhaitent exploiter des données partagées. Si un processus modifie les données partagées, les autres processus devraient les voir immédiatement.
Événements de notification : un processus doit envoyer un message à un autre processus ou à un groupe de processus pour l'informer qu'un certain événement s'est produit (par exemple, notifier le processus parent lorsque le processus se termine).
Partage de ressources : partagez les mêmes ressources entre plusieurs processus. Pour ce faire, le noyau doit fournir des mécanismes de verrouillage et de synchronisation.
Contrôle de processus : certains processus souhaitent contrôler complètement l'exécution d'un autre processus (comme le processus de débogage). À ce stade, le processus de contrôle espère pouvoir intercepter tous les pièges et exceptions d'un autre processus et pouvoir connaître son statut. changements dans le temps.
Les tuyaux sont divisés en tuyaux nommés et en tuyaux sans nom
Le canal sans nom est une méthode de communication semi-duplex. Les données ne peuvent circuler que dans une seule direction et ne peuvent être utilisées qu'entre des processus qui ont une affinité. L'affinité d'un processus fait généralement référence à la relation parent-enfant. Les canaux d'ignorance sont généralement utilisés pour la communication entre deux processus différents. Lorsqu'un processus crée un canal et appelle fork pour créer son propre processus enfant, le processus parent ferme l'extrémité du canal de lecture et le processus enfant ferme l'extrémité du canal d'écriture. Cela permet aux données de circuler entre les deux processus.
Le fameux tube est également une méthode de communication semi-duplex, mais il permet la communication entre des processus non liés.
Un sémaphore est un compteur qui peut être utilisé pour contrôler l'accès de plusieurs threads aux ressources partagées. Il n'est pas utilisé pour échanger de grandes quantités de données, mais est utilisé pour la synchronisation entre plusieurs threads. Il est souvent utilisé comme mécanisme de verrouillage pour empêcher. un processus de Lors de l'accès à une ressource, d'autres processus accèdent également à la ressource. Par conséquent, il est principalement utilisé comme moyen de synchronisation entre les processus et entre différents threads au sein du même processus.
Linux fournit un ensemble d'interfaces de sémaphore bien conçues pour faire fonctionner des signaux. Elles ne sont pas uniquement destinées aux sémaphores binaires. Ces fonctions seront présentées ci-dessous, mais veuillez noter que ces fonctions sont utilisées pour faire fonctionner des groupes de signaux. Ils sont déclarés dans le fichier d'entête sys/sem.h.
fonction semget
Sa fonction est de créer un nouveau sémaphore ou d'obtenir un sémaphore existant
fonction semop
Sa fonction est de changer la valeur du sémaphore
fonction semctl
Cette fonction est utilisée pour contrôler directement les informations du sémaphore
Le signal est une méthode de communication relativement complexe utilisée pour informer le processus de réception qu'un événement s'est produit
.La file d'attente de messages est une liste chaînée de messages, qui est stockée dans le noyau et identifiée par l'identifiant de la file d'attente de messages. La file d'attente de messages surmonte les caractéristiques de moins d'informations de transmission de signal, le pipeline ne peut transporter que des flux d'octets non formatés et le tampon limité. La file d'attente de messages est un mécanisme de partage de ressources entre différents processus sous UNIX qui permet à différents processus d'envoyer des flux de données formatés à n'importe quel processus sous la forme de files d'attente de messages. Les processus disposant d'autorisations d'exploitation sur la file d'attente de messages peuvent utiliser msget pour terminer le processus. file d'attente de messages Contrôle opérationnel. En utilisant des types de messages, les processus peuvent lire les informations dans n'importe quel ordre ou hiérarchiser les messages
.La mémoire partagée consiste à mapper une section de mémoire accessible par d'autres processus. Cette mémoire partagée est créée par un processus, mais accessible par plusieurs processus. La mémoire partagée est la méthode IPC (communication inter-processus) la plus rapide. est destiné à d'autres processus. La communication inter-processus est spécialement conçue pour une faible efficacité opérationnelle. Elle est souvent utilisée en conjonction avec d'autres mécanismes de communication, tels que les sémaphores, pour réaliser la synchronisation et la communication entre les processus.
Les caractéristiques d'une socket sont déterminées par 3 attributs : domaine, type et protocole.
Peut être utilisé pour la communication entre différents processus et inter-processus
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!