Station MinuitPortail personnel de révision

IFT-2001 — Systèmes d’exploitationAutomne 2026

Semaine 4 — Threads

11. Laboratoire historique : ajouter un appel système

LECTURE 14 / 195 repèresSynthèse avec omissions acceptées

11. Laboratoire historique : ajouter un appel système

Le fichier publié dans le module « Labo 03 » demeure intitulé Laboratoire #2 — Appels systèmes. Il cible Ubuntu 10.04 et Linux 2.6.32.24.

11.1 Chaîne complète

L’objectif est d’ajouter mycall, un appel système qui reçoit deux entiers et retourne leur somme. La procédure relie :

  1. le numéro public de l’appel;
  2. l’entrée dans les tables 32 et 64 bits;
  3. le prototype exporté;
  4. l’implantation dans le noyau;
  5. l’intégration au système de compilation;
  6. la production et l’installation du noyau;
  7. le test depuis un programme utilisateur.

Un programme utilisateur ne saute pas librement vers une routine privilégiée. Il demande au noyau un service numéroté; le noyau valide et distribue la requête vers la fonction correspondante.

11.2 Modifications décrites

L’énoncé fait ajouter une entrée 32 bits au numéro 337 et une entrée 64 bits au numéro 299, ajuster le nombre total d’appels, déclarer le prototype, créer un dossier mycall avec le code et le Makefile, puis intégrer ce dossier à core-y.

Ces numéros sont strictement liés aux sources historiques indiquées. Sur un autre noyau, ils peuvent désigner une autre fonction ou entrer en conflit.

11.3 Compilation, installation et vérification

La compilation historique emploie make-kpkg et CONCURRENCY_LEVEL=4, puis produit des paquets de noyau et d’en-têtes. Après installation et mise à jour de l’amorçage, la VM redémarre sur le nouveau noyau. uname doit confirmer la version réellement chargée : une compilation réussie ne prouve pas que ce noyau est en cours d’exécution.

Le programme de test appelle syscall avec le numéro 337 et deux entiers. Le résultat vérifie toute la chaîne utilisateur→table→routine noyau.

11.4 Risque et récupération

Les commandes sont privilégiées et peuvent rendre la VM non amorçable. Avant toute modification, il faut disposer d’une copie restaurable et conserver l’ancien noyau dans GRUB. Le document explique le retour à cette version. Rien de cette procédure ne doit être appliqué tel quel à une distribution moderne ou au poste personnel.

Retour au sommaire de l’unitéHaut de page
Récupérer manuellement les données locales

Copier séparément les données ci-dessous dans des fichiers texte avant de fermer la page ou de modifier le stockage. Une valeur illisible ou incompatible reste en place. Aucun effacement ni rétablissement écrasant n’est effectué automatiquement. L’export/import JSON est disponible sur la page Progression du cours. Cette récupération séparée reste utile pour une valeur brute ou un conflit.

Clé de ce cours : . Format v1 porté par cette clé; dates UTC et identifiants durables.

Si l’accès est refusé, la valeur persistée peut rester inaccessible. Réautoriser le stockage dans le navigateur puis rouvrir ce cours permet de la relire. Une réinitialisation exige une décision explicite après récupération; aucune commande de suppression n’est proposée ici. Les données restent sur cette origine et cet appareil, sans transfert automatique.