Station MinuitExplorer, comprendre, pratiquer

SYSTEMES — Comprendre les systèmesAutomne 2026

Semaine 8 — Interblocage : graphes, détection et récupération

2. Définir le problème et les ressources

LECTURE 05 / 185 repèresSynthèse avec omissions acceptées

2. Définir le problème et les ressources

2.1. Interblocage et blocage ordinaire

Un interblocage, ou deadlock, concerne un ensemble de processus dont chaque membre attend un événement qui ne pourrait être produit que par un autre membre de cet ensemble. Dans les exemples de la séance, l'événement attendu est la libération d'une ressource. Le processus qui devrait la libérer attend lui-même une autre ressource : les dépendances se referment et empêchent les opérations de libération d'être atteintes.

Un processus simplement bloqué peut attendre une entrée-sortie dont la fin reste possible. Sa mise en attente n'établit pas à elle seule un interblocage. Pour expliquer un deadlock, il faut montrer pourquoi les événements attendus ne peuvent plus être produits par les processus concernés. La longueur de l'attente ou le fait qu'un processus ne soit pas actuellement sur le CPU ne suffisent pas à établir ce diagnostic.

Le problème peut impliquer deux processus, comme dans l'exemple initial, ou un ensemble beaucoup plus grand. Il peut également toucher une partie des processus du système : il faut identifier les participants et les dépendances plutôt que supposer que tout le système appartient au même cycle.

2.2. Exemple initial : scanner et graveur

Deux processus doivent utiliser les mêmes périphériques dans des ordres différents : A demande le scanner avant le graveur de CD; B demande le graveur avant le scanner. Chacun doit posséder les ressources nécessaires pour effectuer son travail puis les libérer.

Une exécution peut réussir si A obtient les deux appareils, termine et les libère avant que B ne rencontre un conflit. Le même programme peut cependant produire cette trace :

Tableau 1 — Étape · Événement · État utile pour le diagnostic
Étape Événement État utile pour le diagnostic
1 A obtient le scanner Scanner détenu par A
2 B obtient le graveur Graveur détenu par B
3 A demande le graveur A attend B et conserve le scanner
4 B demande le scanner B attend A et conserve le graveur

A n'atteint pas la libération du scanner puisqu'il attend le graveur. B n'atteint pas la libération du graveur puisqu'il attend le scanner. Donner davantage de temps processeur à l'un d'eux ne rend pas disponible la ressource attendue : la dépendance concerne leurs détentions respectives.

L'enseignant utilise aussi cet exemple pour évoquer l'intégration de composants provenant d'entreprises différentes. Chaque composant peut avoir choisi son ordre d'acquisition sans connaître celui de l'autre. Le comportement global dépend alors de l'interaction entre ces protocoles.

2.3. Ressources matérielles, ressources logiques et retirabilité

Les périphériques rendent le problème facile à visualiser, mais les ressources en cause peuvent aussi être des verrous, des variables partagées, des régions mémoire ou des structures internes du noyau. Deux processus qui protègent des données différentes puis demandent mutuellement l'autre protection peuvent reproduire les dépendances de l'exemple scanner/graveur.

Le cours distingue deux catégories de ressources :

Tableau 2 — Catégorie · Sens · Exemple et conséquence
Catégorie Sens Exemple et conséquence
Retirable Le système peut la reprendre dans les conditions prévues sans rendre définitivement impossible la poursuite de son utilisateur Une zone de RAM peut être transférée sur disque afin de récupérer de l'espace mémoire
Non retirable Son retrait compromet le travail ou exige de respecter le protocole de son détenteur Une impression, une gravure ou un mutex ne se reprennent pas arbitrairement sans conséquences

Il faut distinguer la capacité de déplacer le contenu d'une zone mémoire de la possibilité de retirer librement une protection sur une donnée partagée. Le fait que des données résident en RAM ne permet pas de réattribuer leur verrou en ignorant l'état de la section critique. La notion pertinente dépend de la ressource effectivement considérée.

Les ressources non retirables sont au centre des exemples d'interblocage : le système ne dispose pas d'un retrait sans coût pour casser les dépendances. Les méthodes de récupération de la section 11 examinent précisément ce coût.

2.4. Cycle d'utilisation d'une ressource

Une utilisation normale suit les étapes requête, allocation, utilisation, libération. La requête exprime le besoin du processus. Si le système peut la satisfaire, la ressource lui est attribuée; le processus l'utilise puis la rend disponible. Si la requête ne peut pas être satisfaite, elle peut provoquer une attente.

Le risque apparaît lorsque le processus attend une nouvelle allocation tout en conservant des ressources déjà acquises. Il ne faut donc pas traiter les demandes séparément sans tenir compte des détentions au même instant. Ce sont ces deux informations combinées que les graphes et matrices vont représenter.

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 thème. 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.