Physique-Chimie & NSI

Cours complets et originaux de Physique-Chimie & NSI

5-02. Gestion des processus

Rôles et fonctions d’un OS

Ceci est un rappel de ce que vous avez vu en première… 😏

Un système d’exploitation (OS, pour Operating System) est un ensemble de programmes qui réalise l’interface entre le matériel (hardware) et les applications (software) des utilisateurs.

Le système d'exploitation se présente à l'utilisateur via son interface (graphique ou en ligne de commande) et interagit avec le matériel via son noyau (kernel). Entre ces deux extrémités se trouvent plusieurs couches logicielles qui abstraient les complexités techniques.

Couches de l’utilisateur au matériel Utilisateur Systèmed’exploitation Matériel Application
De l’utilisateur au matériel

Un système d'exploitation remplit deux fonctions essentielles :

  1. Servir d'intermédiaire entre le matériel informatique et les logiciels : il crée une couche d'abstraction qui permet aux applications d'accéder aux ressources matérielles sans avoir à gérer leur complexité technique.
  2. Gérer efficacement les ressources de l'ordinateur : il organise le partage du processeur, de la mémoire centrale et des périphériques d'entrées-sorties entre les différents programmes qui s'exécutent simultanément.

Processus : création et ordonnancement

  • Décrire la création d’un processus, l’ordonnancement de plusieurs processus par le système.

Un processus est la représentation pour le système d'exploitation d'un programme en cours d'exécution ;

L'ordonnancement est la gestion de l'allocation du processeur par le système d'exploitation, c'est-à-dire le partage du processeur entre les différents processus.

Les processus

Un programme est vu différemment selon la perspective :

  • Sous forme statique : un programme est un fichier exécutable stocké en mémoire auxiliaire contenant des instructions et données ;
  • Sous forme dynamique : un processus est l'instance d'un programme en cours d'exécution, qui utilise activement des ressources système.

Ressources

Une ressource est tout ce dont un processus a besoin pour s'exécuter : ressources matérielles (processeur, périphériques) ou logicielles (fichiers, variables).

Pour obtenir une ressource, un processus entre en concurrence avec d'autres demandes issues d'autres processus.

Bloc de contrôle de processus (PCB)

Au sein du système d'exploitation, le processus est représenté par une structure de données appelée bloc de contrôle de processus (PCB). Cette structure contient notamment :

  • un identificateur unique du processus (PID) ;
  • l'état courant du processus (prêt, élu, bloqué) ;
  • des informations sur l'exécution et les ressources utilisées ;
  • des données relatives à l'ordonnancement.

Le PCB permet au système d'exploitation de gérer et de suivre l'état de chaque processus.

Liste des processus en cours

Dans la console PowerShell de Windows, tapez la commande suivante :


			Get-Process | Format-Table -Property Id, ProcessName, CPU, WorkingSet -AutoSize
		

Cette commande affiche l'ID des processus, son nom, l’utilisation CPU et la mémoire utilisée.

Pour avoir une idée des ressources mémoire utilisées :


			Get-Process | Format-Table Id, ProcessName, CPU, WorkingSet, PagedMemorySize, PrivateMemorySize, VirtualMemorySize -AutoSize
		
  • WorkingSet : mémoire physique utilisée
  • PagedMemorySize : mémoire paginée
  • PrivateMemorySize : mémoire privée (non partagée)
  • VirtualMemorySize : espace d'adressage virtuel

Pour avoir des informations sur l'exécution :


			Get-Process | Format-Table Id, ProcessName, StartTime, TotalProcessorTime, UserProcessorTime, PrivilegedProcessorTime -AutoSize
		
  • StartTime : heure de démarrage du processus
  • TotalProcessorTime : temps total d'utilisation CPU
  • UserProcessorTime : temps passé en mode utilisateur
  • PrivilegedProcessorTime : temps passé en mode privilégié (noyau)

État d’un processus

Un processus est dit :

  • prêt lorsqu’il est en attente du processeur ;
  • élu lorsqu’il a obtenu le processeur et qu’il s’exécute ;
  • bloqué lorsqu’il attend une ressource autre que le processeur.

Lorsqu’un processus bloqué a obtenu la ressource qu’il attendait, il repasse dans l’état prêt car le processeur n’est pas forcément libre.

Différents états d’un processus prêt élu bloqué création attenteprocesseur exécution attenteressource fin déblocage élection blocage
Les différents états d’un processus

Exemple. Imaginons un système d'exploitation qui gère trois processus simples :

  • P1 : un traitement de texte
  • P2 : un navigateur web
  • P3 : une application de calcul

Voici comment ces processus pourraient évoluer dans le temps :

Temps P1 P2 P3
t0 Élu Prêt Prêt
t1 Élu Prêt Prêt
t2 Bloqué (attend saisie) Élu Prêt
t3 Bloqué (attend saisie) Élu Prêt
t4 Bloqué (attend saisie) Bloqué (charge page) Élu
t5 Prêt (saisie reçue) Bloqué (charge page) Élu
t6 Prêt Prêt (page chargée) Élu
t7 Élu Prêt Prêt
t8 Élu Prêt Prêt
Explications

1. Au temps t0-t1 :

  • P1 (traitement de texte) est élu et s'exécute sur le processeur
  • P2 et P3 sont prêts, en attente du processeur

2. Au temps t2-t3 :

  • P1 devient bloqué car il attend une saisie utilisateur
  • P2 (navigateur) devient élu et commence à s'exécuter
  • P3 reste prêt

3. Au temps t4 :

  • P1 est toujours bloqué en attente de saisie
  • P2 devient bloqué car il attend le chargement d'une page web
  • P3 (application de calcul) devient élu et commence ses calculs

4. Au temps t5 :

  • P1 reçoit la saisie attendue et passe à l'état prêt (pas encore élu car P3 utilise le processeur)
  • P2 est toujours bloqué en attente du chargement
  • P3 continue d'être élu

5. Au temps t6 :

  • P1 reste prêt
  • P2 a terminé son chargement et devient prêt
  • P3 est toujours élu

6. Au temps t7-t8 :

  • L'ordonnanceur décide de redonner le processeur à P1 qui devient élu
  • P2 et P3 passent à l'état prêt

Ordonnancement

L’ordonnancement, c’est la fonction du système d’exploitation qui permet de choisir à un instant donné quel processus va s’exécuter. L’opération qui consiste à choisir ce processus est appelée opération d’élection.

L’ordonnancement peut être réalisé de différentes manières : par ordre de soumission, par tourniquet, par priorité (préemptive ou non), etc. Une priorité est un nombre entier positif qui donne un rang à chaque processus.

Deux grandeurs peuvent être calculées sur les processus :

  • le temps d’attente : temps écoulé entre la date de soumission et la date de début d’exécution.
  • le temps de réponse : temps écoulé entre la date de soumission et la date de fin d’exécution.

Imaginons trois processus dont les caracteristiques sont les suivantes :

Processus Date de soumission Temps d’exécution Priorité
P1 0 16 2
P2 2 4 3
P3 10 6 1

Voici comment seront traités les processus en fonction du type d’ordonnancement utilisé

1. Par ordre de soumission

Principe : les processus sont élus selon l’ordre dans lequel ils arrivent dans la file d’attente des processus prêts. Le processus élu s’exécute, soit jusqu’à ce qu’il soit terminé, soit jusqu’à ce qu’il se bloque de lui-même.

0 5 10 15 20 25 P1 P2 P3
Ordonnancement par ordre de soumission
Processus Temps d’attente Temps de réponse
P1 0 16
P2 16-2=14 20-2=18
P3 20-10=10 26-10=16

2. Par tourniquet

Principe : les processus sont élus selon l’ordre dans lequel ils arrivent dans la file d’attente des processus prêts. Le processus élu s’exécute, soit jusqu’à ce qu’il soit terminé, soit jusqu’à ce qu’il se bloque de lui-même, soit jusqu’à ce qu’il se bloque après un temps donné, appelé quantum (il retourne alors à l’état prêt).

0 5 10 15 20 25 P1 P2 P1 P2 P1 P3 P1 P3 P1 P3 P1 P1 P1
Ordonnancement par tourniquet (quantum = 2)
Processus Temps d’attente Temps de réponse
P1 0 26
P2 0 6
P3 0 10

3. Par priorité non préemptive

Principe : Les processus sont élus par priorité. Le processus élu s’exécute, soit jusqu’à ce qu’il soit terminé, soit jusqu’à ce qu’il se bloque de lui-même.

0 5 10 15 20 25 P1 P3 P2
Ordonnancement par priorité non préemptive

Le processus P1 s’est déroulé jusqu’à la fin, car la priorité n’est pas préemptive : elle n’interrompt pas un processus en cours. Après l’exécution du processus P1, deux processus sont dans l’état « prêt ». Le processus P3, bien qu’ayant été soumis après P2, a une priorité plus élevée. C’est donc lui qui est traité en premier.

3. Par priorité préemptive

Principe : les processus sont élus par priorité. Le processus élu s’exécute, soit jusqu’à ce qu’il soit terminé, soit jusqu’à ce qu’il se bloque de lui-même, soit jusqu’à ce qu’il soit préempté par un processus de priorité plus élevée (il retourne alors à l’état prêt).

0 5 10 15 20 25 P1 P3 P1 P2
Ordonnancement par priorité préemptive

Le processus P1 est le premier soumis. Puis le processus P2 est soumis à la date 2. Mais celui-ci à une priorité inférieure à P1. Donc il reste dans l’état « prêt ».À la date 10, le processus P3 est soumis. Celui-ci a une priorité plus élevé que P1. Il interrompt donc P1 le temps de son exécution. Lorsqu’il est terminé, P1 repasse dans l’état « élu », car il n’est pas terminé et sa priorité est plus élevée que P2. Lorsque P1 se termine, P2 passe dans l’état « élu ».

Ordonnancement

Traiter les quatre types d’ordonnancement ci-dessous avec les processus ci-dessous. Dans le cas d’un ordonnancement de type tourniquet, vous prendrez un quantum de 3.

Processus Date de soumission Temps d’exécution Priorité
P1 0 8 3
P2 4 7 1
P3 7 11 2

Vous préciserez également les temps d’attente et de réponse pour chaque processus dans chaque cas.

Création et identification des processus

Création de processus et arbre

Un processus peut créer un ou plusieurs processus. Si un processus A crée un processus B, alors on dira que A est le père de B et que B est le fils de A. Bien sûr, à son tour, B peut créer un processus C (B sera alors le père de C et C le fils de B). Les relations père/fils entre les processus peuvent être modélisées par une structure d’arbre.

Arbre de processus Swapper init inetd crond ... getty login shell cd firefox ...
Exemple d’arbre de processus sous Linux

Sous Linux, un tout premier processus (appelé Swapper) est créé au moment du démarrage de l’ordinateur (il correspond donc à la racine de l’arbre). Celui-ci crée ensuite un processus fils appelé init qui, lui, va créer tous les processus nécessaires au bon fonctionnement du système. D’autres processus sont ensuite créés à partir des fils de init.

Identification des processus

Chaque processus possède un identifiant appelé PID (Process Identification). Ce PID est un nombre entier.

Le premier processus créé au démarrage du système à pour PID 0, le second 1, le troisième 2, etc. Le système d’exploitation utilise un compteur qui est incrémenté de 1 à chaque création de processus, ce qui lui permet d’attribuer les PID aux processus.

Chaque processus possède également un PPID (Parent Process Identification). Ce PPID permet de connaitre le processus parent d’un processus.

Dans l’arbre donné en exemple un peu plus haut :

  • le processus init a un PID de 1 et un PPID de 0, puisqu’il est le fils du processus Swapper qui a un PID de 0 ;
  • le processus Swapper a un PID de 0, mais ne possède pas de PPID (c’est le seul dans cette situation).

Remarque : sous Linux, le processus init est considéré comme le premier processus créé. Il a toujours un PID de 1 et un PPID de 0.

Arbre de processus

On considère l’arbre des processus suivant sous Linux :

Arbre de processus Swapper init inetd crond getty login shell cd firefox

Les processus sont créés suivant l’ordre de parcours en largeur de l’arbre.

Donner les PID et PPIDD de chaque processus.

Identification de processus

Extrait du sujet 1 de Métropole juin 2021

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 :


			$ 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
		

À 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 ?

Interblocage

  • Mettre en évidence le risque de l’interblocage (deadlock).

Lors de leur exécution, les processus peuvent utiliser des ressources. Dans certains cas, lorsque deux processus s’exécutent de façon concurrentielle, il peut se produire un phénomène particulier appelé interblocage (deadlock). L’exemple ci-dessous illustre ce phénomène :

Imaginons deux processus P1 et P2 et deux ressources R1 et R2. Initialement, les deux ressources sont libres, c’est-à-dire utilisées par aucun processus.

Étape État au début de l’étape Déroulement de l’étape
P1 P2 R1 R2
1 Élu Prêt Libre Libre P1 commence son exécution. Il demande R1 et se bloque. R1 est libre donc P1 repasse à l’état prêt. P2 passe à l’état élu
2 Prêt Élu Utilisée Libre P2 demande R2 et se bloque. Il obtient immédiatement R2 et repasse à l’état prêt. Suivant l’ordonnancement, P2 repasse immédiatement à l’état élu et poursuit son exécution (P1 reste dans l’état prêt).
3 Prêt Élu Utilisée Utilisée P2 demande R1 et se bloque. Comme P1 est dans l’état prêt, il n’a pas eu l’occasion de libérer R1 puisqu’il n’a pas eu l’occasion de l’utiliser (pour utiliser R1, P1 doit être dans l’état élu). P1 repasse dans l’état élu.
4 Élu Bloqué Utilisée Utilisée Avant de libérer R1, P1 demande à utiliser R2. Comme R2 n’a pas encore été libéré par P2, R2 n’est donc pas disponible. P1 se retrouve bloqué.
5 Bloqué Bloqué Utilisée Utilisée P1 possède R1 et est bloqué (attente de R2). P2 possède R2 et est bloqué (attente de R1). Pour que l’un des processus puisse se débloquer, il faut qu’une des ressources se libère. Mais aucune des ressources ne peut se libérer car elles sont utilisées par des processus qui sont bloqués. Bref, la situation ne peut pas évoluer !

Remarque. Il existe plusieurs solutions permettant soit de mettre fin à un interblocage (cela passe par l’arrêt forcé d’un des deux processus fautifs), soit d’éviter les interblocages (mais ces solutions ne seront pas étudiées en terminale.)

Gestion des ressources et interblocage 1

Extrait du sujet 1 de Métropole mars 2021

On considère trois processus P1, P2 et P3. Ceux-ci s’exécutent et utilisent une ou plusieurs ressources parmi R1, R2 et R3. Parmi les scénarios suivants, lequel provoque un interblocage ? Justifier.

Scénario 1 Scénario 2 Scénario 3
P1 acquiert R1 P1 acquiert R1 P1 acquiert R1
P2 acquiert R2 P2 acquiert R3 P2 acquiert R2
P3 attend R1 P3 acquiert R2 P3 attend R2
P2 libère R2 P1 attend R2 P1 attend R2
P2 attend R1 P2 libère R3 P2 libère R2
P1 libère R1 P3 attend R1 P3 acquiert R2

Gestion des ressources et interblocage 2

Extrait du sujet 2 de Métropole mars 2021

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
demander (table traçante)
demander (modem)
exécution
libérer (modem)
libérer (table traçante)
Programme 2
demander (modem)
demander (imprimante)
exécution
libérer (imprimante)
libérer (modem)
Programme 3
demander (imprimante)
demander (table traçante)
exécution
libérer (table traçante)
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é