C9.4 : Gestion des processus

La gestion des processus

Les processus

Définition

Un processus est un ensemble d'instructions en cours de traitement par le système d'exploitation.

Propriétés d'un processus

Un processus peut être démarré par l'utilisateur ou par un autre processus.

Un processus dispose : d'un espace mémoire dédié, de droits d'accès aux entrées-sorties...

Le système d'exploitation mémorise, pour chaque processus, un ensemble d'informations appelé PCB (en anglais Process Control Bloc) :

Différence entre programme et processus

En toute rigueur, le mot programme (ou exécutable) fait référence à un fichier stocké en mémoire contenant du code directement exploitable par le système d'exploitation.

Le mot processus fait référence à l'exécution de ce code.

Lorsqu'on exécute un programme, plusieurs processus peuvent être lancés.

Ordonnancement des processus

L'ordonnanceur est l'élément (ensemble d'instructions) du système d'exploitation qui gère le lancement et l'arrêt des processus.

Nouveau processus

Lorsqu'un nouveau processus est lancé, le système d'exploitation :

Ordonnancement des processus

Il existe plusieurs algorithmes pour le fonctionnement de l'ordonnanceur :

Interruption et mise en exécution d'un processeur

Lorsque l'ordonnanceur interrompt le processus en cours d'execution, il mémorise son PCB, enfile le processus dans la file des processus prêts.

Lorsque l'ordonnanceur lance (ou relance) l'exécution d'un processus, il le récupère dans la file des processus prêts avec son PCB.

Mise en sommeil (en attente) des processus

Lors de l'exécution d'un processus, si ce processus est en attente d'un événement (par exemple une saisie au clavier), le système d'exploitation mémorise le PCB du processus et place le processus en attente (on dit également en sommeil pour l'anglais sleeping).

Dès que l'événement attendu se produit, le processus est remis dans la file des processus prêts.

Applications

Application n° 1

On s'intéresse à un ordonnanceur non préemptif. Indiquer l'élément du schéma ci-dessus qu'il faut enlever.

Application n° 2

On considère une machine sur laquelle un processus A est lancé à l'instant 0 et un processus B deux unités de temps plus tard.

La durée totale nécessaire pour l'exécution du processus A est de 14 unités de temps et pour le processus B de 5 unités de temps.

Représenter la chronologie de l'exécution des processus pour chacun des fonctionnements suivants de l'ordonnanceur :

Quelques situations qui peuvent poser problème

Utilisation de ressources partagées

Exemple : Opérations bancaire sur un compte

Deux agences d’une banque veulent mettre à jour le même compte bancaire n° 1867A.

Pour cela, l’agence de Nancy effectue les actions suivantes :

L’agence de Lille effectue les actions suivantes :

Question : Quelles sont les situations qui peuvent se produire ?

Afficher la réponse

Ordre 1 2 3 A B C ⇒ compte inchangé

Ordre 1 A 2 B 3 C ⇒ compte –100

Ordre 1 A B 2 C 3 ⇒ compte +100

...

Bilan

Lorsque l'exécution des processus est entrelacée (exécution concurrente) et que des ressources partagées sont utilisés, il peut y avoir des conséquences indésirables.

Interblocage

Exemple 1 : Priorité à droite

Exemple 2 : Accès à des périphériques

Supposons que deux processus A et B veulent imprimer, en utilisant la même imprimante, un fichier stocké sur une clé USB. La taille de ce fichier étant supérieure à la capacité du disque, chaque processus a besoin d’un accès exclusif à la clé USB et à l’imprimante simultanément. On a une situation d’interblocage si les deux conditions ci-dessous sont réunies :

Bilan

L'interblocage (deadlock en anglais) peut se produire lorsque les quatre conditions ci-dessous sont présentes :

Visualisation des processus

Avec un système d'exploitation Windows

A faire

Ouvrir le "Gestionnaire de tâches".

Ouvrir le navigateur web. Combien de processus sont créés ? Noter les PID.

Ouvrir un nouvel onglet avec un contenu différent. De nouveaux processus sont-ils créés ? Noter le(s) PID.

Ouvrir une autre fenêtre du navigateur, avec un contenu différent. De nouveaux processus sont-ils créés ? Noter le(s) PID.

Faire "Fin de tâche" pour l'un des processus du navigateur.

Avec un système d'exploitation Linux

Prendre connaissance : les commandes Linux

ps :

Permet d'afficher la listes des processus actifs.

Cette commande dispose de beaucoup d'options :

  • -e : Affiche tous les processus de tous les utilisateurs
  • -f : Affiche plus d'informations (plus de colonnes)
  • -o : Permet de choisir les informations (les colonnes) à afficher

Les principales informations (colonnes) sont :

  • USER ou UID : nom ou identifiant de l'utilisateur propriétaire du processus
  • PID : ID du processus
  • PPID : ID du processus parent
  • STAT : état du processus -> S (Dormant), R (en cours d'exécution)...
  • CMD : nom de la commande qui a lancé le processus

Exemples :

  • ps -ef
  • ps −eo user,pid,ppid,stat,command

pstree :

Permet d'afficher la listes des processus sous forme d'une arborescente.

top :

Permet d'afficher les processus avec rafraichissement en temps réel.

Un fois lancée, il existe plusieurs options qui s'activent avec les touches du clavier :

  • M : trie la liste par ordre décroissant d'occupation mémoire
  • P : trie la liste par ordre décroissant d'occupation processeur
  • i : filtre les processus pour ne garder que les processus actifs
  • V : affiche l'arborescence les processus
  • q : quitter le mode top

A faire

Se connecter au Raspberry

Tester les différentes commandes ci-dessus.

Analyser les processus (en utilisant uniquement la command ps et ses options) :

Remonter l'arbre d'un processus (en utilisant uniquement la command ps et ses options) :