Vous êtes sur la page 1sur 27

Terminale NSI

Chapitre 7
A. les Processus

I. Le système d'exploitation

https://www.youtube.com/watch?v=SpCP2oaCx8A

Le système d’exploitation, souvent appelé OS ( Operating System ) est un ensemble de


programmes qui permet d’utiliser les composants physiques d’un ordinateur pour exécuter
toutes les applications dont l’utilisateur aura besoin.

Toute machine est dotée d’un système d’exploitation qui a pour fonction de charger les
programmes depuis la mémoire de masse et de lancer leur exécution en leur créant des
processus, de gérer l’ensemble des ressources, de traiter les interruptions ainsi que les
entrées-sorties et enfin d’assurer la sécurité globale du système.

Exemples

Windows, Mac OS, Ubuntu Mate sont des systèmes d’exploitation.

Attention, Linux n’est pas à proprement parlé un OS , c’est en fait le noyau de nombreux
OS que l’on appelle des distributions Linux comme par exemple Gentoo, Debian, Linux
Mint, Ubuntu, Fedora, RedHat …

OS en bref
Les système d'exploitation font le Lien entre monde applicatif (les applications) et monde
matériel (les composants)

Le monde matériel
• la mémoire
• les processeurs (cerveaux, font des calculs)
• péripéhriques E/S (imprimantes, écran, clavier, souris, internet...)

1/27
Chapitre 7 Les processus

Le monde applicatif
• C'est l'ensemble des programmes qui sont en activité à un instant donné.
• Dans un ordinateur, on a plusieurs applications qui s'exécutent simultanément.
chacune exécute une tache.
• Les applications n'accèdent pas aux éléments de l'ordinateur, elles communiquent
seulement avec l'OS.

Les tâches de l'OS


Le système d'exploitation doit allouer à chacun des processus les ressources dont il a
besoin en termes de mémoire, entrées-sorties ou temps processeur, et de s'assurer que
les processus ne se gênent pas les uns les autres.

Gestion de la mémoire
La mémoire peut être vue comme un grand tableau disposant de “mots” repérés par des
adresses. Si les applications écrivaient directement dans la mémoire, comme elles ne
peuvent pas communiquer entre elles, voilà ce qui pourrait arriver :

Une application écrit toto au mot 1


Une seconde application écrit NSI au même endroit

😢 La seconde application a modifié une donnée dont l'application 1 a besoin....


La mémoire virtuelle à la rescousse

Au démarrage d'une application, L'OS crée un espace de mémoire virtuelle dédié à cette
application.

L'application écrit dans la mémoire virtuelle. L'OS transfère ensuite dans la vraie mémoire
et il mémorise l'information : si l'application demande l'information écrite au mot 1 de sa
mémoire virtuelle il sait où trouver l'information dans la vraie mémoire.

Ordonanceur
Le système d'exploitation va attribuer les ressources, notamment l'accès au CPU. Si une
application est bloquée (attente d'une donnée sur disque dur par exemple) l'OS attribue le
CPU à une autre application.

Accès aux ressources :

• Les applications demandent à l'OS lorsqu'elle a besoin d'accéder à une les


ressources (écran, CPU, fichier, etc...)

• L'OS vérifie que l'application a les droits (voir, droits d'accès aux fichiers par
exemple) et attribue l'accès ensuite. Cet accès peut être de deux types :

2/27
Chapitre 7 Les processus

• Privé : la ressource est attribuée et bloquée pour les autres applications, par
exemple c'est la cas d'un accès en écriture dans un fichier.
• Libre : la ressource est attribuée mais reste disponible pour les autres
applications, par exemple c'est la cas d'un accès en lecture dans un fichier.

A retenir :
les trois rôles de l'OS sont :

• gérer la mémoire
• ordonnanceur
• accès aux ressources

II. Les processus

https://www.youtube.com/watch?v=bFqud0gcCHM

Qu'est-ce qu'un processus ?


Un processus est une instance (tache) de programme en cours d'exécution sur un
ordinateur. Il est caractérisé par :

• un ensemble d'instructions à exécuter - souvent stockées dans un fichier sur lequel


on clique pour lancer un programme (par exemple firefox.exe)
• un espace mémoire dédié à ce processus pour lui permettre de travailler sur des
données et des ressources qui lui sont propres : si vous lancez deux instances de
firefox, chacune travaillera indépendamment l'une de l'autre.
• des ressources matérielles : processeur, entrées-sorties (accès à internet en
utilisant la connexion Wifi).

En résumé
Un processus est un "programme" en cours d’exécution.

Attention
Il y a une différence entre programme et processus : le même programme peut être lancé
plusieurs fois et donner naissances à des processus distincts.

3/27
Chapitre 7 Les processus

Comment voir les processus sur son OS?


Sur chaque OS, il y a des utilitaires en mode graphique (GUI) ou en mode console ( CLI )
pour observer les processus en cours d’exécution.

Exemples d’interfaces graphiques ( GUI = Graphical User Interface )

• Sous Windows 10, il y a le bien connu gestionnaire de tâches ( raccourci :


CRTL+MAJ+ECHAP )

• Sous Ubuntu Mate, une distribution Linux, il y a par exemple Moniteur Système. (cf
MENU puis Outils Système )

4/27
Chapitre 7 Les processus

Exemples avec la console sous Linux (CLI= Command Line Interface)


La commande top permet d'afficher la liste des processus de manière dynamique ( la liste
est rafraîchit toutes les 3 secondes)

Vie et mort des processus


Différentes situations peuvent générer des processus :

• Double cliquer pour lancer un programme


• Ouvrir un onglet dans un navigateur
• Exécuter une commande dans une console

Ces processus vont devoir s’exécuter à tours de rôle, pour gérer l’ordre d’exécution le
système d’exploitation va attribuer des états aux processus.

Les états d'un processus


Un processus peut donc se trouver dans différents états :

• nouveau (initialisation) : le processus vient d'être créé mais n'existe pas encore qu'à
l'état de requête de processus en attendant d'être admis en tant que processus
activable
• prêt (en attente): le processus attend son tour pour prendre la main
• élu (en exécution) : le processus a accès au processeur pour exécuter ses
instructions
• bloqué (endormi) : le processus attend qu'un événement se produise (saisie clavier,
réception d'une donnée par le réseau ou le disque dur ...)
• terminé : le processus est désormais inactif car il a achevé sa tâche. Il sera détruit
prochainement par le système d'exploitation pour libérer de la place en mémoire. Il
est parfois conservé pendant un temps à l'état terminé en attendant qu'une
entrée/sortie s'achève ou que les données de ce processus soient exploitées par un
autre. On parle alors de processus " zombie".

5/27
Chapitre 7 Les processus

Ordonnancement des processus par l'OS


L'ordonnanceur

Dans un système multitâches, plusieurs processus sont actifs simultanément, mais un


processeur simple coeur ne peut exécuter qu’une instruction à la fois. Il va donc falloir
partager le temps de processeur disponible entre tous les processus : c'est le travail de
l'ordonnanceur (ou scheduler en anglais). Ce dernier a pour tâche de sélectionner le
processus suivant à exécuter parmi ceux qui sont prêts.

Un processus peut donc se trouver dans différents états :


Les chiffres 1, 2, 3 et 4 font référence à la figure ci-dessus.

1 : L'ordonnanceur choisit ce processus qui passe alors en mode élu ou exécution


2 : L'ordonnanceur passe la main à un autre processus. Le processus en cours s'arrête et
passe en mode prêt ou en attente
3 : Après le 1. (et pas le 2) : le processus en cours attend un événement : saisie clavier,
réception d'une donnée par le réseau ou le disque dur, clic de souris... Il passe alors en
mode bloqué ou endormi
4 : L'événement attendu par le processus s'est produit. Le processus repasse en mode
prêt ou en attente, en attendant que l'ordonnanceur lui permette de s'exécuter.

6/27
Chapitre 7 Les processus

III. QCM

1. Un processus est :
• un programme exécutable
• un logiciel
• une instance d'exécution d'un programme

2. Un processus prêt :

• est exécuté
• a été exécuté dans le processeur
• attend d'obtenir le processeur

3. Un processus en cours d'exécution est dit :

• élu
• bloqué
• prêt
• actif

4. Un processus bloqué :

• ne peut plus s'exécuter


• a été exécuté dans le processeur
• attend d'obtenir le processeur

5. Un programme peut être exécuté :

• plusieurs fois à la suite par un même processus


• plusieurs fois en même temps par un même processus
• par plusieurs processus différents

6. A un instant donné un processeur exécute :

• tous les processus prêts


• le processus élu
• tous les processus d'un utilisateurs

7/27
Chapitre 7 Les processus

B. Ordonnancement

I. L'ordonnancement

Afin de choisir quel processus va repasser en mode exécution, l'ordonnanceur applique un


algorithme prédéfini lors de la conception de l'OS. Le choix que va réaliser cet algorithme
va impacter directement la réactivité du système et les usages qui pourront en être fait.
C'est un élément critique du système d'exploitation.

Nous allons maintenant voir le principe de fonctionnement de l'ordonnancement

Les différents algorithmes d'ordonnancement

• Le modèle FIFO : on affecte les processus dans l'ordre de leur apparition dans la
file d'attente.
• Le modèle SJF (Shortest Job First) : on affecte en premier le « plus court processus
en premier » de la file d'attente à l'unité de calcul.
• Le modèle Round Robin : (ou méthode du tourniquet) on effectue un bloc de
chaque processus présent dans la file d'attente à tour de rôle, pendant un quantum
de temps d'en général 20 à 30 ms. Si le processus n'est pas terminé, il repart en fin
de liste d'attente.

D’autres algorithmes :

Il existe d'autres algorithmes d'ordonnancement, comme par exemple le modèle Priorité,


où chaque processus dispose d’une valeur de priorité et on choisit le processus de plus
forte priorité à chaque fois. Actuellement, la plupart des systèmes d’exploitation utilise une
évolution du modèle priorité, reposant sur les principes suivants :

Chaque processus possède une priorité de base.


Cette priorité augmente quand le processus est inactif et diminue quand il est actif
(le taux de changement dépend de la priorité de base).
Le système choisit parmi les processus de plus forte priorité.

8/27
Chapitre 7 Les processus

Le quantum

Le quantum est une unité arbitraire de temps

Eléments pour l'ordonnancement

• Durée du processus ou durée d'exécution sur le coeur : à la durée en quantum P


nécessaire à l'execution du processus.
• Temps d'arrivée ou temps de soumission : temps où le processus arrive dans la file
d'attente.
• Date de terminaison: pour un processus P : durée écoulée entre le temps 0 et le
temps où le processus est terminée P
• Temps d'exécution ou temps de séjour : différence entre le temps d'arrivée de P et
le temps de terminaison de P.
• Temps d'attente d'un processus P : différence entre le temps d'execution et la durée
du processus.
• Temps moyen d'attente : moyenne des temps d'attente de tous les processus

Nous allons voir ceci dans différents ordonnancements

II. L'ordonnancement SJF

https://www.youtube.com/watch?v=mBqsouf-HZc

En exemple, nous allons traiter un ordonnancement avec le modèle SJF

Processus P1 P2 P3 P4 P5
Durée en
3 6 4 2 1
quantum
Date
0 1 4 6 7
d'arrivée

👉 Etape 1 : classons les processus selon l'ordre croissant de leur durée :


P5 (1 qt) < P4 (2qt) < P1 (3 qt) < P3 (3 qt) < P2 (6qt)

👉 Etape 2 :
• Au début du traitement des processus l'horloge mesurant les quantums est à 0.
• P1 arrive en 0 , il n'y a pas d'autre processus en attente. L'OS execute P1 pendant
3 quantums

9/27
Chapitre 7 Les processus

• A la fin de P1, l'horloge indique 3 quantums. Pendant le traitement de P1 seul P2


est arrivé. L'OS traite P2 et son traitement dure 6 quantums.
• A la fin du traitement de P2, l'horloge indique 9 quantums. Pendant le temps de
traitement de P2, sont arrivés P3, P4 et P5. L'OS va traiter le plus court donc P5,
puis il va traiter P4 en enfin il traite P3.
• A la fin du traitement des 5 processus, l'horloge indique 16 quantums

✏️ Nous obtenons le schéma suivant :

Comment compléter le tableau suivant ?

• La date de terminaison (optionnelle) est la date de démarrage de l'exécution plus la


durée en quantums
• Le temps d'exécution est la date de terminaison moins la date d'arrivée
• Le temps d'attente est le temps d'exécution moins la durée du processus

10/27
Chapitre 7 Les processus

III. Les ordonnancements FIFO et Round Robin (tourniquet)

Algorithme FIFO : https://youtu.be/e0d7nUqB8S4

Algorithme Round Robin: https://www.youtube.com/watch?v=Y3OfgZGpBag

IV. Exercices

Exercice 1 Représenter l'ordonnancement des processus ci-dessous à l'aide du modèle FIFO.


Processus P1 P2 P3
Durée en quantum 8 3 9
Date d'arrivée 8 5 0

Exercice 2 :Représenter l'ordonnancement des processus ci-dessous à l'aide du modèle SJF.


Processus P1 P2 P3 P4
Durée en quantum 8 5 9 2
Date d'arrivée 4 0 3 7

Exercice 3 :Représenter l'ordonnancement des processus ci-dessous à l'aide du modèle Round Robin
Processus P1 P2 P3
Durée en quantum 8 5 9
Date d'arrivée 1 0 3

Exercice 4 :
Les trois processus suivants doivent être exécutés simultanément sur un ordinateur à un
seul microprocesseur. Chaque instruction dure 1 quantum. Nous les noterons P1, P2 et
P3.

1. L’ordonnanceur du système d’exploitation utilise la méthode SJF « plus court


d’abord ». Schématiser l’ordre de traitement des instructions des 3 processus.
2. L’ordonnanceur du système d’exploitation utilise la méthode du tourniquet.
Schématiser l’ordre de traitement des instructions des 3 processus.
Au départ, on supposera que P1 est exécuté, puis P2, puis P3.

11/27
Chapitre 7 Les processus

QCM
Comment s'appelle la gestion du partage du processeur entre différents processus?

• l'interblocage
• l'ordonnancement
• la planification
• la priorisation

L'ordonnanceur :

• donne des instructions pour réparer des processus cassés


• transforme un programme en processus
• planifie l'exécution des processus

Un processus
• ne s'exécute jamais en même temps qu'un autre processus sur le même
processeur.
• peut être mis en attente par l'ordonnancement du système d'exploitation
• réalise l'ensemble des ses instructions avant de rendre la main

TP ordonnancement

Vous lirez le fichier à partir de Basthon

👉 Vous devrez télécharger dans le même dossier les deux fichiers suivants
🌐 TD à télécharger : Fichier TP_ordonnanceur_sujet_2023.ipynb : "Clic droit", puis
"Enregistrer la cible du lien sous"

👉 Vous devez charger le module suivant : test_tp_ordonn_sjf.py dans le document :


icone ouvrir fichier puis choisir Installer le module

🌐 module à télécharger : "Clic droit", puis "Enregistrer la cible du lien sous"

12/27
Chapitre 7 Les processus

C. 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.

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 !
13/27
Chapitre 7 Les processus

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 pas 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 cycle
(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 cycle.

14/27
Chapitre 7 Les processus

IV. Un exemple détaillé

15/27
Chapitre 7 Les processus

16/27
Chapitre 7 Les processus

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 :

Quels sont les processus en interblocage ?


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

17/27
Chapitre 7 Les processus

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 les interblocages ?

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.

18/27
Chapitre 7 Les processus

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 et 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ù.

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.

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

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é.

19/27
Chapitre 7 Les processus

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

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 C₁ demande une opération d'écriture disque,


opération qui dure 200 ms. Pendant cette opération d'écriture, le processus C₁
passe à l'état bloqué.
• Après 20 ms d'exécution, le processus C₃ demande une opération d'écriture disque,
opération qui dure 10 ms. Pendant cette opération d'écriture, le processus C₃ passe
à l'état bloqué.

Compléter la frise chronologique et y indiquer les états de tous les processus.

20/27
Chapitre 7 Les processus

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
Verrouiller fichier_1 Verrouiller fichier_2
Calculs sur fichier_1 Verrouiller fichier_1
Verrouiller fichier_2 Calculs sur fichier_1
Calculs sur fichier_1 Calculs sur fichier_2
Calculs sur fichier_2 Déverrouiller fichier_1
Calculs sur fichier_1 Déverrouiller fichier_2
Déverrouiller fichier_2
Déverrouiller 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é.

6. Proposer une modification du programme 2 permettant d'éviter ce problème.

21/27
Chapitre 7 Les processus

Exercice 3 : 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 suivant 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.

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

22/27
Chapitre 7 Les processus

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.

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.

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.

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.

23/27
Chapitre 7 Les processus

4. Compléter et rendre avec la copie le tableau fourni suivant, en utilisant


l'ordonnancement décrit ci-dessus, sur 3 tours.

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

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.

24/27
Chapitre 7 Les processus

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.

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.

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

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

25/27
Chapitre 7 Les processus

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 situat :ion 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

26/27
Chapitre 7 Les processus

• 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 P2 : envoi de flux P3 : auto-test


manuel vidéo matériel
Demande R1 Demande R3
Demande R2 (wifi)
(moteurs) (camera)
Demande R3 demande R1
Demande R2 (wifi)
(camera) (moteurs)
Libère R1 Libère R3
Libère R2 (wifi)
(moteurs) (Caméra)
Libère R1
Libère R2(wifi) Libère R3 (caméra)
(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.

27/27

Vous aimerez peut-être aussi