Dans ce module, je vais donc aborder les techniques IPC appelées signaux.
Dans ce module, nous verrons donc ce que sont les signaux et quels sont les différents types de signaux pris en charge
par le système d'exploitation Linux.
Nous verrons ensuite ce que signifie exactement la capture des signaux.
Comment capturer les signaux et que faire après avoir capturé les signaux ?
Enfin, nous apprendrons à utiliser les signaux comme technique de communication inter-processus.
Passons donc en revue la définition formelle des signaux.
Un signal est un message système envoyé d'un processus à un autre, qui n'est généralement pas utilisé pour transférer des données.
Notez donc que ce point n'est généralement pas utilisé pour transférer des données, mais plutôt pour commander à distance le processus
de partenariat.
C'est vrai.
Prenons donc un exemple pour mieux comprendre cette définition.
Par exemple, dans le sport, au cricket, l'arbitre signale que le batteur est éliminé.
Il s'agit donc d'un exemple de signal et non d'un transfert de données.
Le deuxième exemple est le suivant : supposons que vous ayez un ami qui se trouve à deux kilomètres de vous,
mais qui, à l'aide d'une torche, fait clignoter la lumière dans votre direction.
Et supposons qu'il fasse nuit, n'est-ce pas ?
Ainsi, le fait que votre ami fasse clignoter une lampe dans votre direction est un exemple de signal. Il vous envoie un signal
et il dépend de vous de savoir comment vous voulez interpréter ce signal, quelle action vous voulez entreprendre
lorsque vous recevez cette lampe de votre ami.
Il s'agit donc d'un exemple concret de signal.
Les signaux sont donc généralement de petits messages.
Ils sont soit d'un octet, soit de deux octets.
Le destinataire doit interpréter la signification d'un signal.
C'est vrai.
Vous pouvez donc constater que votre système entier, c'est-à-dire votre système informatique, est logiquement divisé en
deux parties.
Le système d'exploitation, également appelé espace noyau et espace utilisateur.
Actuellement, dans l'espace utilisateur, nous exécutons toutes les applications.
Par exemple, dans cet exemple, l'application 1 et l'application 2 tournent dans l'espace utilisateur,
n'est-ce pas ?
Qui envoie des signaux à qui ?
Des signaux sont donc envoyés par le système d'exploitation à l'application.
C'est vrai.
Il s'agit donc d'un type de signaux envoyés par le système d'exploitation à l'application fonctionnant dans l'espace
utilisateur.
Des signaux sont également envoyés d'une application à une autre application, les deux applications fonctionnant dans
l'espace utilisateur.
C'est vrai.
Mais il n'existe pas de signal envoyé par l'application fonctionnant dans l'espace utilisateur au système
d'exploitation.
Il n'y a pas d'exemple ou d'utilisation de signaux de ce type.
Les signaux sont donc envoyés par le système d'exploitation à l'application fonctionnant dans l'espace utilisateur et les signaux
sont envoyés d'une application à une autre application, les deux applications fonctionnant dans l'espace utilisateur.
Le plus souvent, les signaux sont envoyés par le système d'exploitation Linux à l'application qui
s'exécute dans l'espace utilisateur.
Vous pouvez donc voir ici que lorsqu'un processus qui s'exécute dans l'espace utilisateur reçoit un signal du système
d'exploitation, l'une ou l'autre de ces trois choses peut se produire, n'est-ce pas ?
La première chose est le comportement par défaut.
C'est-à-dire que lorsque le processus reçoit le signal du système d'exploitation, il exécute l'action par
défaut du signal.
C'est vrai ?
Notez donc que chaque signal est associé à un comportement par défaut.
Ainsi, lorsqu'un processus reçoit un signal, disons que le signal reçu du système d'exploitation
est sigterm.
L'action par défaut de ce signal est donc que l'application est censée se terminer, n'est-ce pas ?
Ainsi, chaque fois qu'une application s'exécutant dans l'espace utilisateur reçoit un signal sigterm du système
d'exploitation, l'application se termine par défaut.
Il s'agit donc de l'action par défaut du signal.
D'autre part, un processus peut se programmer pour personnaliser le traitement à la réception du signal en exécutant
la routine de gestion du signal.
C'est vrai.
Que se passe-t-il donc dans le cas où un processus peut choisir d'effectuer sa propre action personnalisée lorsqu'il reçoit un signal
du système d'exploitation ?
Par exemple, lorsque le processus reçoit un signal sigterm de la part du système d'exploitation, le processus peut
vouloir choisir un message d'adieu sur l'écran.
Il s'agit d'un processus.
Essaie d'effectuer un traitement personnalisé, n'est-ce pas ?
Le processus peut également choisir d'écrire ses structures de données internes dans un fichier pour un débogage hors ligne
avant qu'il ne s'éteigne.
La deuxième action que le processus peut entreprendre consiste donc à effectuer le traitement personnalisé lors de la réception
d'un signal du système d'exploitation.
Et la troisième option que le processus peut faire est d'ignorer simplement le signal.
C'est vrai.
Ainsi, lorsqu'un processus reçoit le signal, il peut effectuer l'une de ces trois actions.
Soit il exécute l'action par défaut du signal.
Ensuite, le processus exécute l'action personnalisée du signal.
Enfin, le processus peut tout simplement ignorer le signal.
Dans le second cas, lorsque le processus effectue un traitement personnalisé à la réception d'un signal du système
d'exploitation, ce traitement personnalisé est effectué en invoquant une fonction spéciale, cette fonction
spéciale est appelée routine de gestion des signaux.
C'est vrai.
Quelques points sur les routines de traitement des signaux.
Une routine de gestion des signaux est une fonction spéciale qui est invoquée lorsque le processus reçoit le signal.
C'est vrai.
Le processus doit donc prendre des dispositions pour que chaque fois qu'il reçoit un certain signal du système
d'exploitation ou d'un autre processus, il doive invoquer une fonction spéciale.
Cette fonction spéciale est appelée routine de traitement des signaux.
Nous verrons, lorsque nous discuterons de la mise en œuvre, comment un processus peut enregistrer une fonction
personnalisée correspondant à un certain signal.
Un processus doit donc enregistrer la routine en fonction du type de signal, c'est-à-dire qu'il doit invoquer
la fonction f.
Ici, la fonction F est une routine de traitement des signaux.
C'est vrai.
Ainsi, lorsque le signal S est reçu.
C'est ce qu'on appelle l'enregistrement d'une routine de traitement du signal contre le signal.
La routine de traitement des signaux de droite est exécutée avec la priorité la plus élevée.
Notez le terme "priorité absolue".
Cela signifie que dès que le processus reçoit le signal.
Que ce soit du système d'exploitation ou de l'autre processus, il est possible qu'au moment où le processus
reçoit le signal, il soit occupé à exécuter une partie de son code.
C'est vrai.
Ainsi, dès que le processus reçoit le signal, il s'exclut du flux
d'exécution normal, n'est-ce pas ?
La préemption signifie qu'un processus interrompt immédiatement son flux d'exécution normal et exécute la routine de gestion du signal, qui a été
enregistrée par rapport au signal que le processus vient de recevoir.
Vous pouvez donc constater que lorsqu'un signal est reçu, la routine de gestion du signal est immédiatement invoquée après
avoir perturbé le flux d'exécution normal du processus.
C'est ainsi que la routine de gestion des signaux est invoquée.
C'est ainsi que le processus se comporte lorsqu'il reçoit un signal du système d'exploitation ou
d'un autre processus.