Primitive de recouvrement

Définition, exemples et bonnes pratiques

À retenir

  • Le processus garde le même identifiant (PID) mais change de contenu.
  • La mémoire vive occupée par l'ancien programme est libérée au profit du nouveau.
  • C'est une opération irréversible pour le processus concerné.

Une primitive de recouvrement est une commande de bas niveau du système d'exploitation qui permet de remplacer le programme en cours d'exécution par un autre. Imaginez que vous changez l'acteur et le texte d'une pièce de théâtre en plein milieu de la scène, tout en gardant le même costume et le même numéro de scène : le processus continue d'exister, mais il fait désormais autre chose.

Étymologie

Le terme « primitive » vient du latin primitivus, désignant un élément de base, non décomposable. En informatique, c'est une opération fondamentale fournie par le noyau. « Recouvrement » traduit l'anglais overlay, évoquant l'action de superposer un nouveau contenu sur un ancien pour l'effacer.

Exemples d'usage

  • L'utilisation de la fonction execvp dans un terminal Linux pour lancer un éditeur de texte.
  • Le passage de relais entre un chargeur de démarrage (bootloader) et le noyau du système d'exploitation.

Cas d'usage

Ce concept intervient massivement dans la gestion des processus des systèmes de type Unix (Linux, macOS). On l'utilise généralement juste après avoir créé une copie d'un processus pour que cette copie exécute une application différente du programme d'origine.

Bonnes pratiques

Il faut toujours vérifier si l'appel à une primitive de recouvrement a échoué. En effet, si l'appel réussit, le code qui suit n'est jamais exécuté (puisque le programme est remplacé). Si le code continue, c'est qu'il y a eu une erreur (fichier introuvable, droits insuffisants, etc.).

Synonymes

recouvrement de processus appel système exec superposition de code

Antonymes

fork (duplication) persistance de contexte

Conseil

Si vous débutez en programmation système, retenez que le recouvrement est le « saut de la foi » du processus : il abandonne tout ce qu'il est pour devenir un autre programme. C'est le mécanisme de base derrière chaque commande que vous tapez dans un terminal.

Questions fréquentes

Est-ce que le processus parent est au courant du changement ?

Oui, car le PID reste le même, le parent continue de surveiller le même processus bien que son code ait changé.

Que deviennent les fichiers ouverts ?

Généralement, les descripteurs de fichiers restent ouverts à travers le recouvrement, sauf s'ils ont été configurés spécifiquement pour se fermer lors de cette opération.

Pourquoi ne pas simplement lancer un nouveau processus ?

Le recouvrement est plus efficace en termes de ressources car il réutilise la structure de gestion du processus déjà existante au lieu d'en créer une de zéro.