Applications sur l'interblocage

Exercice 1 sur l'interblocage

On suppose maintenant que les trois processus manipulés en page précédente s’exécutent et utilisent une ou plusieurs ressources parmi R1, R2 et R3.

Question

Parmi les scénarios suivants, lequel provoque un interblocage ? Justifier.

Différents scénarios

Indice

Intéressez-vous aux ressources...

Indice

On peut utiliser cette façon de représenter :

Différents cas d'utilisation d'une ressourcesInformations[1]

Exercice 2 : Extrait du sujet 2021 - Amérique du Nord

Un constructeur automobile utilise des ordinateurs pour la conception de ses véhicules. Ceux-ci sont munis d'un système d'exploitation ainsi que de nombreuses applications parmi lesquelles on peut citer :

  • un logiciel de traitement de texte ;

  • un tableur ;

  • un logiciel de Conception Assistée par Ordinateur (CAO) ;

  • un système de gestion de base de données (SGBD)

Chaque ordinateur est équipé des périphériques classiques : clavier, souris, écran et est relié à une imprimante réseau.

  1. (question System On Chip)

  2. Un ingénieur travaille sur son ordinateur et utilise les quatre applications citées au début de l'énoncé.

    Pendant l'exécution de ces applications, des processus mobilisent des données et sont en attente d'autres données mobilisées par d'autres processus.

    On donne ci-dessous un tableau indiquant à un instant précis l'état des processus en cours d'exécution et dans lequel D1, D2, D3, D4 et D5 sont des données.

La lettre M signifie que la donnée est mobilisée par l'application ; la lettre A signifie que l'application est en attente de cette donnée.

Lecture du tableau : le logiciel de traitement de texte mobilise (M) la donnée D1 et est en attente (A) de la donnée D2.

D1

D2

D3

D4

D5

Traitement de texte

M

A

-

-

-

Tableur

A

-

-

-

M

SGBD

-

M

A

A

-

CAO

-

-

A

M

A

Question

Montrer que les applications s'attendent mutuellement. Comment s'appelle cette situation ?

Indice

Réaliser un schéma avec l'aide de l'indice de l'exercice 1

Solution

Avez-vous repéré un cycle ?

Exercice 3 : Visualisation d'un interblocage

Cette petite activité va vous permettre de visualiser un cas d'interblocage avec la gestion des fichiers avec Python.

Créer 2 fichiers ouvre_fichier1.py et ouvre_fichier2.py contenant ce code :

1
import time
2
import fcntl
3
fichier1 = "fichierA.txt"
4
fichier2 = "fichierB.txt"
5
temps_attente = 10
6
temps_ouvert = 5
7
8
def ouvrir_fichier(nom_fichier):
9
    """
10
    Ouvre le fichier 'nom_fichier' en écriture avec verrouillage
11
    et renvoie le descripteur de fichier.
12
    """
13
    print(f"Tente d'ouvrir {nom_fichier} en écriture")
14
    f = open(nom_fichier, "w")
15
    fcntl.lockf(f, fcntl.LOCK_EX)
16
    print(f"{nom_fichier} ouvert")
17
    return f
18
19
def fermer_fichier(f):
20
    """
21
    Déverrouille et ferme le descripteur de fichier 'f'
22
    """
23
    fcntl.lockf(f, fcntl.LOCK_UN)
24
    f.close()
25
    print("Fichier fermé")
26
27
28
f1 = ouvrir_fichier(fichier1)
29
print(f"Attente de {temps_attente} secondes")
30
time.sleep(temps_attente)
31
f2 = ouvrir_fichier(fichier2)
32
33
print(f"Attente de {temps_ouvert} secondes avant fermeture des fichiers")
34
time.sleep(temps_ouvert)
35
36
fermer_fichier(f1)
37
fermer_fichier(f2)
38

Le 2ème fichier Python est le même à part les lignes 3 et 4 :

1
fichier1 = "fichierB.txt"
2
fichier2 = "fichierA.txt"

Question

En lisant le code de ces programmes, prédire ce qu'ils réalisent.

Solution

Ils ouvrent en écriture les deux mêmes fichiers, chacun dans un ordre différent, en attendant 10 secondes entre l'ouverture du premier et l'ouverture du second.

Question

Ouvrir 2 terminaux et préparer les commandes suivantes.

Dans le terminal A :

1
python3 ouvre_fichier1.py

Dans le terminal B :

1
python3 ouvre_fichier2.py

Exécutez ces commandes à moins de 10 secondes d'intervalle. Que se passe-t-il ?

Solution

Un des programmes plante car le système a détecté un cas d'interblocage.

1
OSError: [Errno 35] Resource deadlock avoided