Station MinuitExplorer, comprendre, pratiquer

SYSTEMES — Comprendre les systèmesAutomne 2026

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

9. Exécuter l'algorithme de marquage

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

9. Exécuter l'algorithme de marquage

9.1. Marquage initial et sens du résultat

L'algorithme commence par marquer les processus dont C[i] = (0,…,0). Ils ne détiennent aucune ressource susceptible d'entretenir le cycle recherché. Le critère porte sur les allocations C, pas sur les requêtes R.

Ce marquage initial ne prouve pas que le processus s'exécute actuellement, ni que toutes ses demandes sont déjà satisfaites. Il signifie qu'on ne le retient pas comme détenteur participant au problème recherché dans cette analyse. Cela explique pourquoi il faut conserver le sens propre de chaque étape plutôt que interpréter tous les marquages comme le même événement réel.

Pour les autres processus, marquer une ligne après une comparaison R[i] ≤ A signifie que sa terminaison peut être simulée avec les disponibilités alors obtenues. Il s'agit d'un raisonnement sur les libérations possibles, pas de l'ordonnancement réellement exécuté sur la machine.

9.2. Procédure et disponibilité de travail

Pour ne pas confondre l'état initial et le calcul, on peut employer un vecteur de travail A_sim, initialement égal à A. C'est le vecteur A que le support fait évoluer dans sa simulation.

Code (text) · sélectionner pour copier

A_sim ← A
marquer les processus dont C[i] est entièrement nul

Répéter :
    chercher un processus i non marqué tel que R[i] ≤ A_sim
    si aucun processus ne convient : arrêter la recherche
    sinon :
        A_sim ← A_sim + C[i]
        marquer i

Les processus restant non marqués sont ceux
que le détecteur présenté identifie comme interbloqués.

La recherche porte toujours sur les processus non marqués. Une ligne marquée a déjà été éliminée de l'analyse; ses allocations ne doivent pas être restituées une seconde fois.

9.3. Pourquoi ajouter C[i], et pourquoi recommencer

La condition R[i] ≤ A_sim vérifie que les demandes de i peuvent être satisfaites. Si sa terminaison est possible, les ressources qu'il détenait déjà deviennent également disponibles. C'est précisément la ligne C[i] que l'on ajoute.

On ne cumule pas R[i] dans les disponibilités. Les instances accordées temporairement pour satisfaire cette demande sont prises dans le disponible puis rendues au terme de la simulation; leur effet net s'annule. L'augmentation nette provient des allocations antérieures C[i] qui sont libérées. Cette explication rend compte de la mise à jour du support sans introduire une autre règle d'allocation.

Après l'augmentation de A_sim, une demande refusée auparavant peut devenir admissible. Il faut donc revenir aux lignes précédemment écartées. Un premier tour qui ne retient qu'un processus ne constitue pas nécessairement la fin de l'algorithme.

9.4. Arrêt et précautions d'interprétation

On s'arrête lorsqu'aucun processus non marqué ne satisfait la comparaison dans l'état simulé. Si tous sont marqués, l'analyse a trouvé une manière de les éliminer par terminaisons et libérations successives; aucun interblocage n'est détecté dans cet état. Sinon, on indique les non-marqués comme résultat du détecteur présenté.

Les pièges sont de comparer R[i] à E au lieu du disponible, de confondre C et R, de marquer seulement les lignes R nulles, de ne faire qu'un passage, ou d'ajouter plusieurs fois les allocations d'un processus. Il faut également conserver l'hypothèse et les données du modèle : une simulation de l'état fourni n'est pas une preuve générale pour tous les futurs comportements du programme.

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.