Station MinuitExplorer, comprendre, pratiquer

SYSTEMES — Comprendre les systèmesAutomne 2026

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

7. Détecter un cycle avec une instance par type

LECTURE 10 / 186 repèresSynthèse avec omissions acceptées

7. Détecter un cycle avec une instance par type

7.1. Préparer le graphe et conserver l'hypothèse

On construit le graphe à partir des allocations et demandes de l'état étudié. Chaque type possède ici une seule instance. Il faut conserver l'orientation définie à la section 3 et distinguer les ressources détenues des ressources seulement demandées.

Le support choisit une méthode d'« épluchage » plus simple à comprendre que l'algorithme auquel il renvoie dans le manuel. L'enseignant précise qu'il existe d'autres algorithmes de recherche de cycles, éventuellement plus efficaces. Le choix du cours vise la compréhension et la facilité d'application; il n'affirme pas l'optimalité de cette méthode.

7.2. Procédure complète

Code (text) · sélectionner pour copier

Tant que le graphe contient des nœuds :
    chercher un nœud sans arc sortant
    si aucun nœud de cette sorte n'existe :
        conclure qu'un cycle existe et arrêter
    sinon :
        supprimer ce nœud et les arcs qui y entrent

Si le graphe devient vide :
    conclure qu'aucun cycle n'est présent

Le critère est sans arc sortant dans le graphe courant. Il faut reprendre la recherche après chaque suppression, car une suppression peut rendre un autre nœud admissible. Se limiter aux extrémités visibles dans le graphe initial abandonnerait la procédure avant sa conclusion.

Les suppressions sont des opérations sur la représentation utilisée pour le diagnostic. Elles ne demandent pas de supprimer réellement les processus du système.

7.3. Justification et interprétation des deux issues

Un nœud appartenant à un cycle dirigé possède un arc sortant vers la suite de ce cycle. Un nœud sans arc sortant ne peut donc pas être un membre du cycle recherché. On peut l'éliminer pour simplifier le problème sans effacer un cycle passant par ce nœud.

Pour un processus, l'absence d'arc sortant signifie qu'il n'attend pas de ressource dans le graphe représenté. Pour une ressource, le sens de l'arc est différent : un arc sortant représente son allocation à un processus. Il faut appliquer le critère graphique sans confondre la signification des deux catégories de nœuds.

Si toutes les suppressions vident le graphe, aucun cycle ne subsiste. Si le graphe est non vide et qu'aucun nœud ne peut plus être supprimé, il contient un cycle. Cette seconde issue ne dit pas que chaque nœud restant est lui-même un membre de ce cycle : une dépendance peut rester rattachée à une boucle sans être sur la boucle.

7.4. Exemple du support : élimination et cycle résiduel

Les pages 29 à 43 déroulent un même exemple animé. La séquence de suppressions est S, C, A, R, F, W. On retire chaque nœud et ses arcs entrants, puis on examine le graphe réduit. Les noms et directions sont contrôlés sur le support graphique, car les lettres sont parfois mal reconnues dans la transcription.

Après ces suppressions, le cycle est :

D → T → E → V → G → U → D.

Il se lit ainsi : D attend T, détenue par E; E attend V, détenue par G; G attend U, détenue par D. Aucun des trois processus ne peut atteindre une libération qui débloquerait le suivant.

Le processus B demande également T. Il reste visible dans le sous-graphe réduit, mais ne figure pas dans la chaîne fermée D–T–E–V–G–U–D. Il dépend du cycle sans en être un membre dans le dessin. Pour une réponse précise, il faut distinguer « le graphe contient un cycle », « ces nœuds sont sur le cycle » et « ce processus attend une ressource retenue dans le cycle ».

7.5. Méthode d'application et erreurs à éviter

Procéder en trois temps : vérifier les flèches, effectuer les suppressions en les justifiant, puis formuler la conclusion avec le cycle s'il reste présent. Une réponse qui donne seulement des noms de processus sans montrer les liens ne permet pas de vérifier pourquoi ils sont concernés.

Les erreurs typiques sont d'inverser allocation et demande, de chercher des nœuds sans arc entrant, de ne pas réexaminer le graphe après une suppression, ou d'assimiler tous les nœuds résiduels aux membres du cycle. L'exemple de B est précisément utile pour éviter cette dernière confusion.

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.