Station MinuitPortail personnel de révision

IFT-2001 — Systèmes d’exploitationAutomne 2026

Semaine 5 — Concurrence

12. Erreurs fréquentes et méthode de raisonnement

LECTURE 15 / 203 repèresSynthèse avec omissions acceptées

12. Erreurs fréquentes et méthode de raisonnement

Erreurs fréquentes

  • considérer count++ comme atomique;
  • protéger seulement une écriture alors que l’invariant couvre plusieurs opérations;
  • utiliser sleep comme synchronisation temporelle;
  • tester un verrou puis le modifier séparément;
  • dormir en conservant le mutex nécessaire au producteur de la condition;
  • employer if autour de pthread_cond_wait au lieu de while;
  • oublier que signal n’est pas mémorisé par une variable de condition;
  • confondre sémaphore binaire et mutex propriétaire;
  • détruire une primitive alors que des threads l’utilisent ou y attendent;
  • supposer qu’une priorité élevée élimine l’inversion de priorité;
  • croire qu’une barrière protège les données d’une phase;
  • tester un appel système sur le noyau générique au lieu du noyau personnalisé.

Méthode d’analyse

Pour évaluer un algorithme concurrent :

  1. écrire l’état partagé et l’invariant attendu;
  2. décomposer chaque instruction de haut niveau en lectures et écritures possibles;
  3. placer une interruption après chaque étape critique;
  4. construire un entrelacement défavorable;
  5. vérifier exclusion, progression, attente bornée et indépendance temporelle;
  6. vérifier les chemins d’erreur, de destruction et de réveil;
  7. distinguer ce qui est garanti par la primitive de ce qui dépend de l’ordonnanceur.
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.