IPC signifie communication inter-processus.
Cette technique permet aux processus de communiquer entre eux.
Étant donné que chaque processus a son propre espace d'adressage et un espace utilisateur unique, comment les processus communiquent-ils entre eux ?
La réponse est Kernel, le cœur du système d'exploitation Linux qui a accès à toute la mémoire. Nous pouvons donc demander au noyau d'allouer l'espace qui peut être utilisé pour communiquer entre les processus.
Le processus peut également communiquer en ayant un fichier accessible aux deux processus. Les processus peuvent ouvrir et lire/écrire le fichier, ce qui nécessite beaucoup d'opérations d'E/S qui prennent du temps.
Différents types d'IPCS
Il existe différents IPC qui permettent à un processus de communiquer avec un autre processus, soit sur le même ordinateur, soit sur un ordinateur différent du même réseau.
- Tuyaux – Permet aux processus de communiquer entre eux en échangeant des messages. Les canaux nommés permettent aux processus exécutés sur différents systèmes informatiques de communiquer sur le réseau.
- Mémoire partagée – Les processus peuvent échanger des valeurs dans la mémoire partagée. Un processus créera une portion de mémoire à laquelle un autre processus peut accéder.
- File d'attente des messages – Il s'agit d'une liste structurée et ordonnée de segments de mémoire où les processus stockent ou récupèrent des données.
- Sémaphores – Fournit un mécanisme de synchronisation pour les processus qui accèdent à la même ressource. Aucune donnée n'est transmise avec un sémaphore ; il coordonne simplement l'accès aux ressources partagées.
10 Exemple de commande IPCS
ipcs est une commande UNIX/Linux, qui permet de lister les informations sur la communication inter-processus. La commande ipcs fournit un rapport sur System V IPCS (Message queue, Semaphore, and Shared memory).
Exemple 1 IPCS :répertorier toutes les installations IPC
La commande ipcs avec l'option -a répertorie toutes les fonctionnalités IPC qui ont un accès en lecture pour le processus en cours. Il fournit des détails sur la file d'attente des messages, le sémaphore et la mémoire partagée.
# ipcs -a ------ Shared Memory Segments -------- key shmid owner perms bytes nattch status 0xc616cc44 1056800768 oracle 660 4096 0 0x0103f577 323158020 root 664 966 1 0x0000270f 325713925 root 666 1 2 ------ Semaphore Arrays -------- key semid owner perms nsems 0x0103eefd 0 root 664 1 0x0103eefe 32769 root 664 1 0x4b0d4514 1094844418 oracle 660 204 ------ Message Queues -------- key msqid owner perms used-bytes messages 0x000005a4 32768 root 644 0 0
Toutes les installations IPC ont une clé et un identifiant uniques, qui sont utilisés pour identifier une installation IPC.
Exemple 2 d'IPCS :répertorier toutes les files d'attente de messages
ipcs avec l'option -q, répertorie uniquement les files d'attente de messages pour lesquelles le processus actuel a un accès en lecture.
$ ipcs -q ------ Message Queues -------- key msqid owner perms used-bytes messages 0x000005a4 32768 root 644 0 0
Exemple 3 d'IPCS. Lister tous les sémaphores
L'option ipcs -s permet de lister les sémaphores accessibles.
# ipcs -s ------ Semaphore Arrays -------- key semid owner perms nsems 0x0103eefd 0 root 664 1 0x0103eefe 32769 root 664 1 0x4b0d4514 1094844418 oracle 660 204
Exemple IPCS 4. Lister toute la mémoire partagée
L'option ipcs -m avec la commande ipcs répertorie les mémoires partagées.
# ipcs -m ------ Shared Memory Segments -------- key shmid owner perms bytes nattch status 0xc616cc44 1056800768 oracle 660 4096 0 0x0103f577 323158020 root 664 966 1 0x0000270f 325713925 root 666 1 2
Exemple 5 d'IPCS. Informations détaillées sur une installation IPC
L'option ipcs -i fournit des informations détaillées sur une installation ipc.
# ipcs -q -i 32768 Message Queue msqid=32768 uid=0 gid=0 cuid=0 cgid=0 mode=0644 cbytes=0 qbytes=65536 qnum=0 lspid=0 lrpid=0 send_time=Not set rcv_time=Not set change_time=Thu Aug 5 13:30:22 2010
L'option -i avec -q fournit des informations sur une file d'attente de messages particulière. L'option -i avec -s fournit des détails sur le sémaphore. L'option -i avec -m fournit des détails sur une mémoire partagée.
Exemple 6 d'IPCS. Répertorie les limites de l'installation IPC
L'option ipcs -l donne les limites du système pour chaque installation ipc.
# ipcs -m -l ------ Shared Memory Limits -------- max number of segments = 4096 max seg size (kbytes) = 67108864 max total shared memory (kbytes) = 17179869184 min seg size (bytes) = 1
La commande ci-dessus donne les limites de la mémoire partagée. -l peut être combiné avec -q et -s pour afficher respectivement les limites de la file d'attente des messages et des sémaphores.
L'option unique -l donne les limites pour les trois installations IPC.
# ipcs -l
Exemple 7 d'IPCS. Liste des informations sur le créateur et le propriétaire d'une installation IPC
ipcs -c option répertorie l'ID utilisateur et l'ID de groupe du créateur et l'ID utilisateur et l'ID de groupe du propriétaire. Cette option peut être combinée avec -m, -s et -q pour afficher les détails du créateur pour une installation IPC spécifique.
# ipcs -m -c ------ Shared Memory Segment Creators/Owners -------- shmid perms cuid cgid uid gid 1056800768 660 oracle oinstall oracle oinstall 323158020 664 root root root root 325713925 666 root root root root
Exemple 8 d'IPCS. ID de processus ayant récemment accédé à l'installation IPC
L'option ipcs -p affiche l'identifiant du créateur et l'identifiant du processus qui a accédé très récemment à la fonction ipc correspondante.
# ipcs -m -p ------ Shared Memory Creator/Last-op -------- shmid owner cpid lpid 1056800768 oracle 16764 5389 323158020 root 2354 2354 325713925 root 20666 20668
-p peut également être combiné avec -m,-s ou -q.
Exemple IPCS 9. Heure du dernier accès
L'option ipcs -t affiche l'heure de la dernière opération dans chaque installation ipc. Cette option peut également être combinée avec -m, -s ou -q pour imprimer pour un type spécifique d'installation ipc. Pour la file d'attente de messages, l'option -t affiche la dernière heure d'envoi et de réception, pour la mémoire partagée, elle affiche la dernière connexion (partie de mémoire) et l'horodatage détaché et pour le sémaphore, elle affiche la dernière opération et les détails de l'heure modifiée.
# ipcs -s -t ------ Semaphore Operation/Change Times -------- semid owner last-op last-changed 0 root Thu Aug 5 12:46:52 2010 Tue Jul 13 10:39:41 2010 32769 root Thu Aug 5 11:59:10 2010 Tue Jul 13 10:39:41 2010 1094844418 oracle Thu Aug 5 13:52:59 2010 Thu Aug 5 13:52:59 2010
Exemple IPCS 10. État de l'utilisation actuelle
ipcs avec la commande -u affiche l'utilisation actuelle pour toutes les installations IPC. Cette option peut être combinée avec une option spécifique pour afficher l'état d'une installation IPC particulière.
# ipcs -u ------ Shared Memory Status -------- segments allocated 30 pages allocated 102 pages resident 77 pages swapped 0 Swap performance: 0 attempts 0 successes ------ Semaphore Status -------- used arrays = 49 allocated semaphores = 252 ------ Messages: Status -------- allocated queues = 1 used headers = 0 used space = 0 bytes