Les processus & ordonnanceur

Thème 3 - Partie A

Objectifs

  • Comprendre le traitement des processus par un système d’exploitation (ordonnancement)
  • Connaitre le nom et le sens des différents états d’un processus
  • Savoir interpreter le resultat d’une commande ps
  • Déterminer si une situation relève d’un interblocage

Définitions

&

1ères Propriétés

1. Processus

Processus


Un processus est une instance d’une application. Il est défini par :
  • un ensemble d’instructions à exécuter (un programme) ;
  • un espace mémoire pour les données de travail ;
  • éventuellement, d’autres ressources, comme des descripteurs de fichiers, des ports réseau, etc.

Ordonnancement

Dans la plupart des ordinateurs, les processeurs sont capables d’exécuter qu’un ou qu’un nombres très limités de processus en parallèle.

Le rôle de l’ordonnanceur du noyau, est de permettre à tous les processus de s’exécuter à un moment ou un autre et d’utiliser au mieux le processeur pour l’utilisateur.
Il va donc choisir quand et quel procesus s’éxecute et lesquels seront en pause.

Exercice 1

On considère P1, P2 et P3, tous soumis à l’instant 0 dans l’ordre 1,2,3 :
Nom du processus Durée d’éxécution en UT Ordre de soumission
P1 3 3
P2 2 1
P3 2 2

Exercice 1

Lorsqu’un processus est élu, il s’exécute au plus durant un quantum de temps. Si le processus n’a pas terminé sont exécution à l’issue du quatnum de temps, il réintégre la file des processus prêts (côté entrée). Un autre processus, desormais en tête de file (côté sortie) est alors élu pour une durée égale à un quantum.
P2

Exercice 2

On considère P1, P2, P3 et P4.
Nom du processus Durée d’éxécution en UT
P1 3
P2 1
P3 2
P3 1

Exercice 2

Dans cette question, on considère que les processus sont exécutés de manière concur‐ rente selon la politique du ”plus court d’abord”. Les processus sont éxécutés entierement dans l’ordre croissant de leurs temps d’exé‐ cution, le plus court étant exécuter en premier.

Etats

Pour pouvoir gérer les différents processus, les sytèmes d’exploitation vont gérer les demandes à tour de rôle. Ainsi les processus peuvent avoir différents états :
  • prêt : Le processus a les ressources nécessaires et attend d’être traité
  • élu : Le processus est cours d’execution
  • bloqué : Le processus ne peut plus poursuivre son execution car il a besoin d’une ressource qui est indisponible.
  • terminé
La commande ps :
  • ps -eaf
  • ps -eo pid,ppid,stat,comm

PID

Chaque processus est identifié par un nombre. Ce nombre est appelé PID (Process Identification).
Pour chaque processus créé, le système d’exploitation incrémente un compteur de 1 dont il se sert pour attribuer les PID aux processus. Ainsi le premier processus créé au démarrage du système à pour PID 0, le second 1 et ainsi de suite ...

PPID

Le système d’exploitation attribut aussi à chaque processus un PPID (Parent Process Identification) qui représente le processus parent d’un processus.
Ÿ Seul le processus 0 ne possède pas de PPID.

STAT

Informations de la colonne STAT :
  • R : s’exécutant ou pouvant s’exécuter (dans la file d’exécution) ;
  • S : en sommeil interruptible (en attente d’un événement pour finir) ;
  • + : dans le groupe de processus au premier plan.
La commande ps -eo pid, ppid, stat, command, nous l'affichage ci-contre.
  1. A quel commande correspond le processus qui à pour PID 459681 ?
  2. Donner le PID du processus qui a démarré le processus qui a pour PID 459681 ?
  3. Donner le PID d’un processus prioritaire ?
  4. Quelle commande est en cours d’exécution ?

  PID    PPID STAT COMMAND
    1       0  Ss   /sbin/init splash
    2       0  S    [kthreadd]
    ...     ...  ...  ...
397958       2  I<   [kworker/0:0H-events_highpri]
459678       1  S    dbus-launch --autolaunch 
459679       1  Ss   /usr/bin/dbus-daemon 
459681       1  Sl   kwalletd5
460366     136  Sl   /usr/bin/codium -b /home/etienne/Téléchargements/Edt_CLAVE.ics  
460369    1587  Sl   /usr/bin/codium -b /home/etienne/Documents/cours_processus.tex  
461367     136  Sl   /usr/bin/codium -b /home/etienne/Téléchargements/test.txt  
554030    7877  Sl   /opt/google/chrome/chrome
554031    7877  Sl   /opt/google/chrome/chrome
554052    1511  R+   ps -eo pid,ppid,stat,command
            
Sur un ordinateur, on exécute la commande ps -eo pid, ppid, stat, command et on obtient un affichage dont on donne ci-contre 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.

$ ps -eo pid,ppid,stat,command
PID     PPID    STAT    COMMAND
1       0       Ss      /sbin/init
...     ...     ...     ...
1912    1908    Ss      bash
2014    1912    Ss      bash
1920    1747    Sl      gedit
2013    1912    Ss      bash
2091    1593    Sl      /usr/lib/firefox/firefox
5437    1912    Sl      python programme1.py
5440    2013    R       python programme2.py
5450    1912    R+      ps -eo pid,ppid,stat,command
                
            
Sur un ordinateur, on exécute la commande ps -eo pid, ppid, stat, command et on obtient un affichage dont on donne ci-contre un extrait.
À l'aide de cet affichage, répondre aux questions ci-dessous.
  1. Expliquer l'ordre dans lequel les deux commandes python programme1.py et python programme2.py ont été exécutées.
  2. Peut-on prédire que l'une des deux commandes python programme1.py et python programme2.py finira avant l’autre ?

$ ps -eo pid,ppid,stat,command
PID     PPID    STAT    COMMAND
1       0       Ss      /sbin/init
...     ...     ...     ...
1912    1908    Ss      bash
2014    1912    Ss      bash
1920    1747    Sl      gedit
2013    1912    Ss      bash
2091    1593    Sl      /usr/lib/firefox/firefox
5437    1912    Sl      python programme1.py
5440    2013    R       python programme2.py
5450    1912    R+      ps -eo pid,ppid,stat,command
                
            

Interblocage

L’utilisation d’une ressource passe par les étapes suivantes :
  • Demande de la ressource : Si l’on ne peut pas satisfaire la demande il faut attendre. La demande sera mise dans une table d’attente des ressources.
  • Utilisation de la ressource : Le processus peut utiliser la ressource.
  • Libération de la ressource : Le processus libère la ressource demandée et allouée.
Un interblocage (deadlock en anglais) est un phénomène qui peut survenir en programmation concurrente.
L’interblocage se produit lorsque des processus concurrents s’attendent mutuellement. Les processus bloqués dans cet état le sont définitivement.

Execice 2

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
Verrouiller fichier_1
Calculs sur fichier_1
Verrouiller fichier_2
Calculs sur fichier_1
Calculs sur fichier_2
Calculs sur fichier_1
Déverrouiller fichier_2
Déverrouiller fichier_1
Programme 2
Verrouiller fichier_2
Verrouiller fichier_1
Calculs sur fichier_1
Calculs sur fichier_2
Déverrouiller fichier_1
Déverrouiller fichier_2
Un constructeur automobile utilise des ordinateurs pour la conception de ses véhicules. eux-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ée (SGBD).


Chaque ordinateur est équipé des périphériques classiques : clavier, souris, écran et est relié à une imprimante réseau. 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.
\medskip 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 \texttt{M} signifie que la donnée est mobilisée par l’application ; la lettre \texttt{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.

Traitement de texte
D1 D2 D3 D4 D5
M A
Tableur A M
SGBD M A A
CAO M A M A


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