Skip to content

II. Les processus

Cours

A. Processus

Définition

Un programme correspond à un ensemble d’instructions susceptibles d’être exécutées. Lorsqu’elle sont effectivement exécutées, un processus est créé. Un processus est donc une instance d’un programme.

On peut avoir l’impression qu’un ensemble de processus est exécuté simultanément sur l’ordinateur, lorsque l’on a plusieurs logiciels d’ouverts. En réalité, un processeur ne peut exécuter qu’autant d’instructions qu’il a de cœurs. Il faut donc gérer l’exécution de ces processus à tour de rôle. On associe donc un état à chaque processus, pour indiquer s’il peut s’exécuter ou bien s’il s’exécute.

Ajouter, à côté de la figure suivante, la signification des différents états :

B. Création d’un processus

Décrire la création des processus sur l'ordinateur, et définir son PID et PPID.

C. L’ordonnancement

La question de quel processus doit s’exécuter dans quel ordre est gérée par un ordonnanceur (”scheduler” en anglais), qui est une partie du système d’exploitation de l’ordinateur.

Il peut utiliser plusieurs stratégies :

(a) Premier arrivé, premier servi
(b) A priorités constantes
(c) Le tourniquet (”round robin”)

D. L’interblocage

Lorsque des processus attendent chacun des ressources qui sont utilisées par les autres, on atteint la situation d’interblocage (”deadlock” en anglais). Tous les processus sont en attente, leur exécution est bloquée indéfiniment. C’est donc une situation que l’on veut éviter !

Exemple

Un processus P1 utilise une ressource R1 et a besoin d’une ressource R2 pour continuer de s’exécuter. Or, R2 est utilisée par un processus P2, qui a besoin de la ressource R1 pour terminer son exécution et libérer R2.


TD : Commandes Linux et processus

Exercice 1

Avec une ligne de commande dans un terminal sous Linux, on obtient l'affichage suivant :

La documentation Linux donne la signification des différents champs :
- UID : identifiant utilisateur effectif ;
- PID : identifiant de processus ;
- PPID : PID du processus parent ;
- C : partie entière du pourcentage d'utilisation du processeur par rapport au temps de vie des processus ;
- STIME : l'heure de lancement du processus ;
- TTY : terminal de contrôle ;
- TIME : temps d'exécution ;
- CMD : nom de la commande du processus.

  1. Parmi les quatre commandes suivantes, laquelle a permis cet affichage ?
    a. ls -l
    b. ps –ef
    c. cd ..
    d. chmod 741 processus.txt

  2. Quel est l'identifiant du processus parent à l'origine de tous les processus concernant le navigateur Web (chromium-browser) ?

  3. Quel est l'identifiant du processus dont le temps d'exécution est le plus long ?

Exercice 2

La commande UNIX ps présente un cliché instantané des processus en cours d'exécution.
Avec l’option −eo pid,ppid,stat,command, cette commande affiche dans l’ordre l’identifiant du processus PID (process identifier), le PPID (parent process identifier), l’état STAT et le nom de la commande à l’origine du processus.

Les valeurs du champ STAT indique l’état des processus :
R : processus en cours d’exécution
S : processus endormi

Sur un ordinateur, on exécute la commande ps −eo pid,ppid,stat,command et on obtient un affichage dont on donne ci-dessous un extrait.

À l'aide de cet affichage, répondre aux questions ci-dessous.

  1. Quel est le nom de la première commande exécutée par le système d'exploitation lors du démarrage ?

  2. Quels sont les identifiants des processus actifs sur cet ordinateur au moment de l’appel de la commande ps ? Justifier la réponse.

  3. Depuis quelle application a-t-on exécuté la commande ps ? Donner les autres commandes qui ont été exécutées à partir de cette application.

  4. Expliquer l'ordre dans lequel les deux commandes python programme1.py et python programme2.py ont été exécutées.

  5. Peut-on prédire que l'une des deux commandes python programme1.py et python programme2.py finira avant l’autre ?


TD : Ordonnancement des processus

Exercice 1

Dans un bureau d’architectes, on dispose de certaines ressources qui ne peuvent être utilisées simultanément par plus d’un processus, comme l’imprimante, la table traçante, le modem. Chaque programme, lorsqu’il s’exécute, demande l’allocation des ressources qui lui sont nécessaires. Lorsqu’il a fini de s’exécuter, il libère ses ressources.

Programme 1 Programme 2 Programme 3
demander (table traçante) demander (modem) demander (imprimante)
demander (modem) demander (imprimante) demander (table traçante)
exécution exécution exécution
libérer (modem) libérer (imprimante) libérer (table traçante)
libérer (table traçante) libérer (modem) libérer (imprimante)

On appelle p1, p2 et p3 les processus associés respectivement aux programmes 1, 2 et 3.

  1. Les processus s'exécutent de manière concurrente. Justifier qu'une situation d'interblocage peut se produire.

  2. Modifier l'ordre des instructions du programme 3 pour qu'une telle situation ne puisse pas se produire. Aucune justification n'est attendue.

  3. Supposons que le processus p1 demande la table traçante alors qu'elle est en cours d'utilisation par le processus p3. Parmi les états suivants, quel sera l'état du processus p1 tant que la table traçante n'est pas disponible : a) élu b) bloqué c) prêt d) terminé

Exercice 2

  1. Les états possibles d’un processus sont : prêt, élu, terminé et bloqué. a. Expliquer à quoi correspond l’état élu.
    b. Proposer un schéma illustrant les passages entre les différents états.

  2. On suppose que quatre processus C₁, C₂, C₃ et C₄ 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é.

    a. Parmi les propositions suivantes, recopier celle qui décrit le fonctionnement des entrées/sorties dans
    une file :
    i. Premier entré, dernier sorti | ii. Premier entré, premier sorti | iii. Dernier entré, premier sorti

    b. On suppose que les quatre processus arrivent dans la file et y sont placés dans l’ordre C₁, C₂, C₃ et C₄.

    • Les temps d’exécution totaux de C₁, C₂, C₃ et C₄ sont respectivement 100 ms, 150 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é.

    Sur la frise chronologique donnée ci-dessous, les états du processus C₂ sont donnés. Compléter la frise avec les états des processus C1, C3 et C4.

  3. On trouvera ci- dessous deux programmes rédigés en pseudo-code 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

a. En supposant que les processus correspondant à ces programmes s'exécutent simultanément (exécution concurrente), expliquer le problème qui peut être rencontré.

b. Proposer une modification du programme 2 permettant d’éviter ce problème.