Aller au contenu

Interblocage

I. Notion d'interblocage ou deadlock⚓

Les interblocages sont des situations assez courantes dans la vie quotidienne. Le meilleur exemple est celui du carrefour avec priorité à droite. Si 4 routes arrivent à ce carrefour et s'il y a quatre véhicules, aucun ne peut s'engager sur le rond point puisque chaque véhicule possÚde à sa droite un voisin.

priorité

Interblocage ou deadlock

En informatique, ce problĂšme survient Ă©galement quand des processus convoitent les mĂȘmes ressources. Le terme interblocage est quelquefois remplacĂ© par les expressions poĂ©tiques "verrou mortel" (en anglais deadlock). Les processus bloquĂ©s dans cet Ă©tat le sont dĂ©finitivement.

II. Les ressources et l'interblocage⚓

L'utilisation de ressources se fait en trois Ă©tapes :

  • sollicitation de la ressource;
  • utilisation de la ressource;
  • libĂ©ration de la ressource.

Exemple d'interblocage

Supposons un systÚme possédant les ressources 1 et 2, ayant les processus A et B en exécution.

Supposons aussi que les ressources ne sont pas partageables : un seul processus Ă  la fois peut utiliser une ressource.

Une façon de provoquer un interblocage est la suivante :

  • Le processus A utilise la ressource 1;
  • Le processus B utilise la ressource 2;
  • Le processus A demande la ressource 2, et devient Ă  l'Ă©tat bloquĂ©.
  • Le processus B demande la ressource 1, et devient Ă  l'Ă©tat bloquĂ©.

😱 Interblocage !

Acquérir

On trouve parfois le verbe acquérir qui a une signification complexe.

Pour un processus, acquérir une ressource signifie : « demander une ressource et attendre si elle n'est pas disponible, puis la réserver (l'utiliser) »

III. ModĂ©lisation des interblocages⚓

On modélise les interblocages à l'aide de graphes orientés conçus de la façon suivante:

  • Les processus sont reprĂ©sentĂ©s par des cercles.
  • Les ressources sont reprĂ©sentĂ©es par des carrĂ©s.
  • Une flĂšche qui va d'un carrĂ© Ă  un cercle indique que la ressource est dĂ©jĂ  attribuĂ©e au processus (figure a).
  • Une flĂšche d'un cercle vers un carrĂ© indique que le processus est bloquĂ© en attente de cette ressource (figure b).
  • Les interblocages sont reprĂ©sentĂ©s dans ces graphiques par la prĂ©sence d'un circuit dans le graphe orientĂ© (figure c).

⚠ Attention, il faut bien tenir compte du sens des flĂšches ! Si dans la figure c une des flĂšches Ă©tait inversĂ©e, nous n'aurions pas un circuit.

interblocage modélisations

IV. Un exemple dĂ©taillĂ©âš“ïžŽ

graphe 1 graphe 2 graphe 3

Auteur : Mireille Coilhac

Cet exemple peut se rencontrer dans le cas suivant :
  • P1 fait une lecture sur R1 et une Ă©criture sur R2. Il ne veut pas que R1 risque d’ĂȘtre modifiĂ© avant qu’il Ă©crive sur R2.
  • Et rĂ©ciproquement pour P2.

V. Exemple⚓

DĂ©tection des interblocages

Le tableau ci-dessous résume les possessions et demandes des processus A à G.

Processus Ressources demandées ressources détenues
A 2 1
B 3
C 2
D 2 et 3 4
E 5 3
F 2 6
G 4 5

Le graphe correspondant est le suivant :

graphe 1

Question

Quels sont les processus en interblocage ?

Solution

đŸŒ” Il y a interblocage des processus D, E et G puisqu'ils forment un cycle avec les ressources 3, 4 et 5 (figure b).

VI. Apparition et prĂ©vention des interblocages⚓

Cette situation d'interblocage a été théorisée par l'informaticien Edward Coffman (1934-) qui a énoncé quatre conditions - appelées conditions de Coffman - menant à l'interblocage :

Résumé

  • Exclusion mutuelle : Les ressources ne sont pas partageables, un seul processus Ă  la fois peut utiliser la ressource.
  • RĂ©tention des ressources : un processus dĂ©tient au moins une ressource et requiert une autre ressource dĂ©tenue par un autre processus. c'est Ă  dire que les processus qui dĂ©tiennent des ressources peuvent en demander d’autres.
  • Non prĂ©emption : Seul le processus dĂ©tenteur d'une ressource peut la libĂ©rer. On ne peut pas forcer un processus Ă  rendre une ressource.
  • Attente circulaire : Chaque processus attend une ressource dĂ©tenue par un autre processus. P1 attend une ressource dĂ©tenue par P2 qui Ă  son tour attend une ressource dĂ©tenue par P3 etc... qui attend une ressource dĂ©tenue par P1 ce qui clos la boucle.
Comment Ă©viter un interblocage ?

Il existe heureusement des stratégies pour éviter ces situations. Par exemple :

  • la prĂ©vention : on oblige le processus Ă  dĂ©clarer Ă  l'avance la liste de toutes les ressources auxquelles il va accĂ©der.
  • l'Ă©vitement : on fait en sorte qu'Ă  chaque Ă©tape il reste une possibilitĂ© d'attribution de ressources qui Ă©vite le deadlock.
  • la dĂ©tection/rĂ©solution : on laisse la situation arriver jusqu'au deadlock, puis un algorithme de rĂ©solution dĂ©termine quelle ressource libĂ©rer pour mettre fin Ă  l'interblocage.

VII. Exercices⚓

Exercice 1 :⚓

Sept processus Pi sont dans la situation suivante par rapport aux ressources Ri :

  • P1 a obtenu R1 et demande R2
  • P2 demande R3 et n’a obtenu aucune ressource tout comme P3 qui demande R2
  • P4 a obtenu R2 et R4 puis demande R3
  • P5 a obtenu R3 et demande R5
  • P6 a obtenu R6 et demande R2
  • P7 a obtenu R5 et demande R2.

On voudrait savoir s’il y a interblocage.

1. Construire un graphe orientĂ© oĂč les sommets sont les processus et les ressources, et oĂč :

  • La prĂ©sence de l’arc Ri⇱Pj signifie que le processus Pj a obtenu la ressource Ri
  • La prĂ©sence de l’arc Pj⇱Ri signifie que le processus Pj demande la ressource Ri.

2. Y-a-t-il interblocage ? si oui prĂ©cisez oĂč.

Solution

exo1

Il y a un circuit dans le graphe. Il y a donc interblocage entre P4, P5 et P7.

Exercice 2 (d'aprĂšs 2021, MĂ©tropole, Candidats Libres, J2, Ex. 2) :⚓

Les Ă©tats possibles d'un processus sont : prĂȘt, Ă©lu, terminĂ© et bloquĂ©.

1. Expliquer Ă  quoi correspond l'Ă©tat Ă©lu.

Solution

Un processus élu est un processus en cours d'exécution.

2. Proposer un schéma illustrant les passages entre les différents états.

Solution

exo1

3. On suppose que quatre processus C1, C2, C3 et C4 sont crĂ©Ă©s sur un ordinateur, et qu'aucun autre processus n'est lancĂ© sur celui-ci, ni prĂ©alablement ni pendant l'exĂ©cution des quatre processus. L'ordonnanceur, pour exĂ©cuter les diffĂ©rents processus prĂȘts, les place dans une structure de donnĂ©es de type file. Un processus prĂȘt est enfilĂ© et un processus Ă©lu est dĂ©filĂ©.

Parmi les propositions suivantes, recopier celle qui décrit le fonctionnement des entrées/sorties dans une file :

  • Premier entrĂ©, dernier sorti
  • Premier entrĂ©, premier sorti
  • Dernier entrĂ©, premier sorti
Solution

Premier entré, premier sorti.

4. On suppose que les quatre processus arrivent dans la file et y sont placés dans l'ordre C1, C2, C3 et C4 . Les temps d'exécution totaux de C1, C2, C3 et C4 sont respectivement 100 ms, 190 ms, 80 ms et 60 ms.

  • AprĂšs 40 ms d'exĂ©cution, le processus C1 demande une opĂ©ration d'Ă©criture disque, opĂ©ration qui dure 200 ms. Pendant cette opĂ©ration d'Ă©criture, le processus C1 passe Ă  l'Ă©tat bloquĂ©.
  • AprĂšs 20 ms d'exĂ©cution, le processus C3 demande une opĂ©ration d'Ă©criture disque, opĂ©ration qui dure 10 ms. Pendant cette opĂ©ration d'Ă©criture, le processus C3 passe Ă  l'Ă©tat bloquĂ©.

Faire une frise chronologique et y indiquer les Ă©tats de tous les processus.

Solution

exo2 4)

5. Ci-dessous deux programmes en pseudo-code sont présentés.

Verrouiller un fichier signifie que le programme demande un accĂšs exclusif au fichier et l'obtient si le fichier est disponible.

Programme 1 Programme 2
VĂ©rrouiller fichier_1 VĂ©rrouiller fichier_2
Calculs sur fichier_1 VĂ©rrouiller fichier_1
VĂ©rrouiller fichier_2 Calculs sur fichier_1
Calculs sur fichier_1 Calculs sur fichier_2
Calculs sur fichier_2 Dévérrouiller fichier_1
Calculs sur fichier_1 Dévérrouiller fichier_2
Dévérrouiller fichier_2
Dévérrouiller fichier_1

En supposant que les processus correspondant Ă  ces programmes s'exĂ©cutent simultanĂ©ment (exĂ©cution concurrente), expliquer le problĂšme qui peut ĂȘtre rencontrĂ©.

Solution

exo2 5)

  • P1 demande et obtient le fichier_1. Il verrouille le fichier_1.

  • P2 demande et obtient le fichier_2 . Il verrouille le fichier_2

  • P1 demande le fichier_2 mais ne peut pas l'obtenir car il est verrouillĂ© par P2.
    👉 P1 passe Ă  l'Ă©tat bloquĂ©.

  • P2 demande le fichier_1 mais ne peut pas l'obtenir car il est verrouillĂ© par P1.
    👉 P2 passe Ă  l'Ă©tat bloquĂ©.

😱 On a donc interblocage

6. Proposer une modification du programme 2 permettant d'Ă©viter ce problĂšme.

Solution

Il suffit d'intervertir les deux premiĂšres lignes du Programme 2.

Les deux programmes doivent alors commencer simultanĂ©ment par Verrouiller fichier 1, ce qui n’est pas possible (exclusion mutuelle).

Nous avons donc deux possibilités :

  • Si c’est le Programme 1 qui commence, P2 sera bloquĂ© jusqu’à la fin de P1, aprĂšs « dĂ©vĂ©rouillage de fichier1 ». Ils se feront donc l’un aprĂšs l’autre, pas de problĂšme.
  • Si c’est P2 qui commence, P1 est bloquĂ© jusqu’à ce que P2 dĂ©vĂ©rouille f1. Il peut faire ses calculs sur f1, puis il est bloquĂ© jusqu’à ce que P2 dĂ©vĂ©rouille f2. P2 a terminĂ©, et P1 peut terminer.

Exercice 3 :⚓

Auteur Franck Chambon d'aprÚs 2022, Polynésie, J1, Ex. 2

Un systĂšme est composĂ© de 4 pĂ©riphĂ©riques, numĂ©rotĂ©s de 0 Ă  3, et d'une mĂ©moire, reliĂ©s entre eux par un bus auquel est Ă©galement connectĂ© un dispositif ordonnanceur. À l'aide d'un signal spĂ©cifique envoyĂ© sur le bus, l'ordonnanceur sollicite Ă  tour de rĂŽle les pĂ©riphĂ©riques pour qu'ils indiquent le type d'opĂ©ration (lecture ou Ă©criture) qu'ils souhaitent effectuer, et l'adresse mĂ©moire concernĂ©e.

Un tour a lieu quand les 4 périphériques ont été sollicités. Au début d'un nouveau tour, on considÚre que toutes les adresses sont disponibles en lecture et écriture.

Si un périphérique demande l'écriture à une adresse mémoire à laquelle on n'a pas encore accédé pendant le tour, l'ordonnanceur répond "OK" et l'écriture a lieu. Si on a déjà demandé la lecture ou l'écriture à cette adresse, l'ordonnanceur répond "ATT" et l'opération n'a pas lieu.

Si un pĂ©riphĂ©rique demande la lecture Ă  une adresse Ă  laquelle on n'a pas encore accĂ©dĂ© en Ă©criture pendant le tour, l'ordonnanceur rĂ©pond "OK" et la lecture a lieu. Plusieurs lectures peuvent avoir donc lieu pendant le mĂȘme tour Ă  la mĂȘme adresse.

Si un périphérique demande la lecture à une adresse à laquelle on a déjà accédé en écriture, l'ordonnanceur répond "ATT" et la lecture n'a pas lieu.

Ainsi, pendant un tour, une adresse peut ĂȘtre utilisĂ©e soit une seule fois en Ă©criture, soit autant de fois qu'on veut en lecture, soit pas utilisĂ©e.

Si un pĂ©riphĂ©rique ne peut pas effectuer une opĂ©ration Ă  une adresse, il demande la mĂȘme opĂ©ration Ă  la mĂȘme adresse au tour suivant.

1. Le tableau donné en annexe 1 indique, sur chaque ligne, le périphérique sélectionné, l'adresse à laquelle il souhaite accéder et l'opération à effectuer sur cette adresse. Compléter dans la derniÚre colonne de cette annexe, à rendre avec la copie, la réponse donnée par l'ordonnanceur pour chaque opération.

Annexe 1

N° périphérique Adresse Opération Réponse de l'ordonnanceur
0 10 Ă©criture "OK"
1 11 lecture "OK"
2 10 lecture "ATT"
3 10 Ă©criture "ATT"
0 12 lecture
1 10 lecture
2 10 lecture
3 10 Ă©criture
RĂ©ponse
N° périphérique Adresse Opération Réponse de l'ordonnanceur
0 10 Ă©criture "OK"
1 11 lecture "OK"
2 10 lecture "ATT"
3 10 Ă©criture "ATT"
0 12 lecture "OK"
1 10 lecture "OK"
2 10 lecture "OK"
3 10 Ă©criture "ATT"

Il s'agit d'un nouveau tour, les lectures sont possibles, la premiÚre écriture ne l'est pas, on a déjà accédé en lecture pendant le tour à l'adresse demandée.

On suppose dans toute la suite que :

  • le pĂ©riphĂ©rique 0 Ă©crit systĂ©matiquement Ă  l'adresse 10 ;
  • le pĂ©riphĂ©rique 1 lit systĂ©matiquement Ă  l'adresse 10 ;
  • le pĂ©riphĂ©rique 2 Ă©crit alternativement aux adresses 11 et 12 ;
  • le pĂ©riphĂ©rique 3 lit alternativement aux adresses 11 et 12 ;

Pour les périphériques 2 et 3, le changement d'adresse n'est effectif que lorsque l'opération est réalisée.

2. On suppose que les périphériques sont sélectionnés à chaque tour dans l'ordre 0 ; 1 ; 2 ; 3. Expliquer ce qu'il se passe pour le périphérique 1.

RĂ©ponse
  • À chaque dĂ©but de tour, le pĂ©riphĂ©rique 0 demande Ă  Ă©crire Ă  l'adresse 10 ; c'est acceptĂ©.
  • Juste aprĂšs, le pĂ©riphĂ©rique 1 demande Ă  lire Ă  l'adresse 10 ; c'est refusĂ©.

Le périphérique 1 ne pourra jamais lire l'adresse 10.

Les périphériques sont sollicités de la maniÚre suivante lors de quatre tours successifs :

  • au premier tour, ils sont sollicitĂ©s dans l'ordre 0 ; 1 ; 2 ; 3 ;
  • au deuxiĂšme tour, dans l'ordre 1 ; 2 ; 3 ; 0 ;
  • au troisiĂšme tour, 2 ; 3 ; 0 ; 1 ;
  • puis 3 ; 0 ; 1 ; 2 au dernier tour.
  • Et on recommence...

3.a. Préciser pour chacun de ces tours si le périphérique 0 peut écrire et si le périphérique 1 peut lire.

RĂ©ponse
  • Tour 1 : 0 ; 1 ; 2 ; 3
    • 0 peut Ă©crire, puis
    • 1 ne peut pas lire
  • Tour 2 : 1 ; 2 ; 3 ; 0
    • 1 peut lire, puis
    • 0 ne peut pas Ă©crire
  • Tour 3 : 2 ; 3 ; 0 ; 1
    • 0 peut Ă©crire, puis
    • 1 ne peut pas lire
  • Tour 4 : 3 ; 0 ; 1 ; 2
    • 0 peut Ă©crire, puis
    • 1 ne peut pas lire

3.b. En déduire la proportion des valeurs écrites par le périphérique 0 qui sont effectivement lues par le périphérique 1.

RĂ©ponse
  • Au tour 1, la valeur Ă©crite par le pĂ©riphĂ©rique 0 sera lue par le pĂ©riphĂ©rique 1 au tour suivant.
  • Au tour 2, rien n'est Ă©crit par le pĂ©riphĂ©rique 0.
  • Au tour 3, la valeur Ă©crite par le pĂ©riphĂ©rique 0 ne sera jamais lue par le pĂ©riphĂ©rique 1 ; en effet, une autre Ă©criture intervient avant la prochaine lecture.
  • Au tour 4, la valeur Ă©crite par le pĂ©riphĂ©rique 0 ne sera jamais lue par le pĂ©riphĂ©rique 1 ; en effet, une autre Ă©criture intervient avant la prochaine lecture.

Ainsi, une seule valeur sur trois sera effectivement lue. La proportion est \(\frac13\).

On change la méthode d'ordonnancement : on détermine l'ordre des périphériques au cours d'un tour à l'aide de deux listes d'attente ATT_L et ATT_E établies au tour précédent.

Au cours d'un tour, on place dans la liste ATT_L toutes les opérations de lecture mises en attente, et dans la liste d'attente ATT_E toutes les opérations d'écriture mises en attente.

Au début du tour suivant, on établit l'ordre d'interrogation des périphériques en procédant ainsi :

  • on interroge ceux prĂ©sents dans la liste ATT_L, par ordre croissant d'adresse,
  • on interroge ensuite ceux prĂ©sents dans la liste ATT_E, par ordre croissant d'adresse,
  • puis on interroge les pĂ©riphĂ©riques restants, par ordre croissant d'adresse.

4. Compléter et rendre avec la copie le tableau fourni en annexe 2, en utilisant l'ordonnancement décrit ci-dessus, sur 3 tours.

Annexe 2

Tour N° périphérique Adresse Opération Réponse ordonnanceur ATT_L ATT_E
1 0 10 Ă©criture "OK" vide vide
1 1 10 lecture "ATT" (1, 10) vide
1 2 11 Ă©criture
1 3 11 lecture
2 1 10 lecture vide
2
2
2
3 0 10 Ă©criture vide vide
3 1 10 lecture vide
3 2 11 Ă©criture "OK" (1, 10) vide
3 3 12 lecture
RĂ©ponse
Tour N° périphérique Adresse Opération Réponse ordonnanceur ATT_L ATT_E
1 0 10 Ă©criture "OK" vide vide
1 1 10 lecture "ATT" (1, 10) vide
1 2 11 Ă©criture "OK" (1, 10) vide
1 3 11 lecture "ATT" (1, 10), (3, 11) vide
2 1 10 lecture "OK" (3, 11) vide
2 3 11 lecture "OK" vide vide
2 0 10 Ă©criture "ATT" vide (0, 10)
2 2 12 Ă©criture "OK" vide (0, 10)
3 0 10 Ă©criture "OK" vide vide
3 1 10 lecture "ATT" (1, 10) vide
3 2 11 Ă©criture "OK" (1, 10) vide
3 3 12 lecture "OK" (1, 10) vide

Les colonnes e0 et e1 du tableau suivant recensent les deux chiffres de l'Ă©criture binaire de l'entier n de la premiĂšre colonne.

nombre n Ă©criture binaire de n sur deux bits e1 e0
0 00 0 0
1 01 0 1
2 10 1 0
3 11 1 1

L'ordonnanceur attribue à deux signaux sur le bus de données les valeurs de e0 et e1 associées au numéro du circuit qu'il veut sélectionner. On souhaite construire à l'aide des portes ET, OU et NON un circuit pour chaque périphérique.
Chacun des quatre circuits à construire prend en entrée deux signaux e0 et e1, le signal de sortie s valant 1 uniquement lorsque les niveaux de e0 et e1 correspondent aux bits de l'écriture en binaire du numéro du périphérique correspondant.

Par exemple, le circuit ci-dessous réalise la sélection du périphérique 3. En effet, le signal s vaut 1 si et seulement si e0 et e1 valent tous les deux 1.

flowchart LR
    e0---ET(ET)
    e1---ET
    ET---s
    style e0 stroke-width:0px,opacity:0
    style e1 stroke-width:0px,opacity:0
    style s stroke-width:0px,opacity:0

5.a. Recopier sur la copie et indiquer dans le circuit ci-dessous les entrées e0 et e1 de façon que ce circuit sélectionne le périphérique 1.

flowchart LR
    ea( )---NON(NON)---ET(ET)
    eb( )----ET
    ET---s
    style ea stroke-width:0px,opacity:0
    style eb stroke-width:0px,opacity:0
    style s stroke-width:0px,opacity:0
RĂ©ponse
flowchart LR
    ea(e1)---NON(NON)---ET(ET)
    eb(e0)----ET
    ET---s
    style ea stroke-width:0px,opacity:0
    style eb stroke-width:0px,opacity:0
    style s stroke-width:0px,opacity:0

5.b. Dessiner un circuit constitué d'une porte ET et d'une porte NON, qui sélectionne le périphérique 2.

RĂ©ponse
flowchart LR
    ea(e1)----ET(ET)
    eb(e0)---NON(NON)---ET
    ET---s
    style ea stroke-width:0px,opacity:0
    style eb stroke-width:0px,opacity:0
    style s stroke-width:0px,opacity:0

5.c. Dessiner un circuit permettant de sélectionner le périphérique 0.

RĂ©ponse
flowchart LR
    ea(e0)---NON1(NON)---ET(ET)
    eb(e1)---NON2(NON)---ET
    ET---s
    style ea stroke-width:0px,opacity:0
    style eb stroke-width:0px,opacity:0
    style s stroke-width:0px,opacity:0

Exercice 4 :⚓

D'aprÚs 2024, Amérique du Nord, J1, Exercice 1

Nous Ă©tudions quatre processus A, B, C et D qui utilisent des ressources suivantes :

  • un fichier commun aux processus ;
  • le clavier de l’ordinateur ;
  • le processeur graphique (GPU) ;
  • le port 25000 de la connexion Internet.

Voici le détail de ce que fait chaque processus :

A B C D
acquérir le GPU acquérir le clavier acquérir le port acquérir le fichier
faire des calculs acquérir le fichier faire des calculs faire des calculs
libérer le GPU libérer le clavier libérer le port acquérir le clavier
libérer le fichier libérer le port libérer le clavier
libérer le fichier

on a le chronogramme suivant :

chronogramme

Montrer que l’ordre d’exĂ©cution donnĂ© aboutit Ă  une situation d’interblocage.

RĂ©ponse
  • Le processus D demande et obtient la ressource fichier qui Ă©tait libre.

  • Le processus B demande et obtient la ressource clavier qui Ă©tait libre.

  • Le processus B demande la ressource fichier qui n'est pas disponible car dĂ©tenue par le processus D. Il passe Ă  l'Ă©tat bloquĂ©.

  • Le processus D demande la ressource clavier qui n'est pas disponible car dĂ©tenue par le processus B. Il passe Ă  l'Ă©tat bloquĂ©.

Les deux procesus B et D sont bloqués, on est en situation d'interblocage.

graph LR
A[Fichier] --> D((D))
D --> C[Clavier]
C --> B((B))
B --> A

VIII. L'interblocage dans la mission Mars Pathfinder⚓

1. La situation⚓

En 1997, la mission Mars Pathfinder rencontre un problÚme alors que le robot est déjà sur Mars. AprÚs un certain temps, des données sont systématiquement perdues. Les ingénieurs découvrent alors un bug lié à la synchronisation de plusieurs tùches. Les éléments incriminés étaient les suivants :

  • une mĂ©moire partagĂ©e, qui Ă©tait protĂ©gĂ©e par un mutex (un mutex est un systĂšme de verrou du noyau)
  • une gestion de bus sur la mĂ©moire partagĂ©e, qui avait une prioritĂ© haute
  • une Ă©criture en mĂ©moire partagĂ©e (rĂ©cupĂ©ration de donnĂ©es), qui avait la prioritĂ© la plus basse
  • une troisiĂšme routine de communication, avec une prioritĂ© moyenne, qui ne touchait pas Ă  la mĂ©moire partagĂ©e

Il arrivait parfois que l'écriture (priorité faible) s'approprie le mutex. La gestion du bus (priorité haute) attendait ce mutex. La commutation de tùches laissait alors la routine de communication (priorité moyenne) s'exécuter. Or pendant ce temps, le mutex restait bloqué puisque les ressources étaient allouées à la routine de priorité basse. La gestion de bus ne pouvait donc plus s'exécuter et aprÚs un certain temps d'attente (une protection insérée par les ingénieurs via un systÚme dit de chien de garde), le systÚme effectuait un redémarrage. Un tel problÚme est connu sous le nom d'inversion de priorité.

Le problĂšme n'Ă©tait pas critique et le code fut corrigĂ© Ă  distance. Toutefois dans d'autres situations, les consĂ©quences auraient pu ĂȘtre catastrophiques. On a ensuite constatĂ© le fait que le problĂšme Ă©tait dĂ©jĂ  survenu lors des essais sans avoir Ă©tĂ© corrigĂ©.

2. Simulation de l'interblocage⚓

Nous allons nous mĂȘme simuler un interblocage dans une situation qui serait assez similaire Ă  celle de la liaison martienne.

On va considérer un robot qui a trois ressources :

  • Des moteurs qui lui permettent de se dĂ©placer
  • Une liaison wifi qui lui permet de communiquer
  • Une camĂ©ra qui filme son environnement

Ce robot a trois processus que l'on notera P1, P2 et P3 :

  • P1 est le pilotage manuel qui reçoit les ordres par le wifi et opĂšre les moteurs
  • P2 envoie le flux vidĂ©o via la liaison wifi
  • P3 est le processus qui fait un autotest matĂ©riel, hors liaison wifi

Le robot effectue les 3 taches en parallÚle. Cela peut se résumer dans le tableau suivant

P1 : pilotage manuel P2 : envoi de flux vidéo P3 : auto-test matériel
Demande R1 (moteurs) Demande R2 (wifi) Demande R3 (camera)
Demande R2 (wifi) Demande R3 (camera) demande R1 (moteurs)
LibÚre R1 (moteurs) LibÚre R2 (wifi) LibÚre R3 (Caméra)
LibÚre R2(wifi) LibÚre R3 (caméra) LibÚre R1 (moteurs)

Cette séquence d'instruction peut se dérouler parfaitement bien, mais on peut arriver à une situation d'interblocage par un cycle.

  • P1 demande la ressource R1, disponible, et la bloque
  • P2 demande la ressource R2, disponible, et la bloque
  • P3 demande la ressouce R3, disponible et la bloque
  • Ă©tape suivante, P1 demande R2 mais doit attendre que P2 la libĂšre.
  • P2 demande R3, qui est bloquĂ©e par P3
  • Et P3 demande R1 qui est bloquĂ© par P1

La boucle est bouclée. On arrive à une situation correspondant à la figure ci dessous, ou chaque processus a bloqué la ressource associée par un trait plein et attend la ressource à laquelle il est relié par des pointillés. On est bloqué dans une boucle infernale.

Source : http://lycee.educinfo.org/index.php?page=interblocage&activite=processus

CrĂ©dits⚓

Auteurs Mireille Coilhac, Valérie Mousseaux, Jean-Louis Thirot , sur la base du travail de :

  • Olivier LĂ©cluse
  • monlycĂ©enumerique.fr
  • courstechinfo.be