Aller au contenu

Gestion des processus et des ressources

Le programme

bo.png


Nous le savons, un ordinateur possède une architecture de Von Neumann, il y a donc différents composants tels que la mémoire vive, la mémoire 'dure' (Disque dur, SSD...), un processeur... C'est cet élément-ci qui nous intéresse aujourd'hui.

Le processeur est le cerveau de l'ordinateur et c'est lui qui exécute les tâches de la machine.

Comment expliquer que notre processeur arrive à ouvrir un navigateur web, un lecteur de musique, télécharger un jeu ou encore envoyer des messages le tout simultanément. (Sans parler des tâches de fond de l'ordinateur)

Tous ces programmes sont en réalité des lignes immenses de code et le processeur, lui, agit seul. Il exécute une à une les instructions de chaque programme, mais donne la sensation de tout gérer en même temps.

Les processeurs multi-cœurs fonctionnent de la même façon à l'exception près qu'il n'y a pas 1 cœur, mais 4 voire 8 cœurs. Mais au vu de la multitude de programmes tournant en même temps sur la machine, le nombre de cœurs est nettement inférieur.

1. Notion de processus

Lorsqu'un programme est exécuté, il crée plusieurs processus. En effet, un programme est composé de diverses instructions (lignes de code) qui elles-mêmes forment diverses parties (processus) de celui-ci.

Ces processus sont donc stockés dans une file (tout cela est géré par l'OS [Rappel 1ère]) et sont exécutés un à un.

Exemple de répartition de deux programmes par l'OS :

File

Chaque processus possède différentes informations stockées en mémoire (dans le PCB (Process Control Block)) comme :

Nom Description
PID Process ID, identifiant du processus
Etat Etat du processus
Registre Valeur des registres lors de la dernière interruption
Mémoire Emplacement mémoire alloué par le système
Ressources Ressources utilisées par le processus.

2. Gestion des processus

Nous l'avons vu, chaque processus possède plusieurs informations. L'état d'un processus permet de comprendre comment la file d'exécution est créée et comment celle-ci perdure.

Il existe 3 états différents :

  • Prêt : Le processus attend d'être exécuté. Il est dans la file d'exécution.
  • Elu : En cours d'exécution
  • Bloqué/En attente : Le processus nécessite une ressource non disponible, tel qu'un emplacement mémoire ou une entrée/sortie. Lorsque la ressource sera disponible, le processus repassera en état prêt.
  • On peut imaginer que le processus attend l'intervention de l'utilisateur, ou le chargement d'une ressource (donc d'autres processus), etc.

Il existe aussi deux autres états :

  • Nouveau : le processus vient d'être créé, il n'est pas encore dans la file d'exécution
  • Terminé : l'exécution du processus est finie.

Voici un schéma des différents états :

3. Interblocage :

L'interblocage intervient lorsque plusieurs processus sont bloqués les uns par les autres. Imaginons deux programmes.

# Programme 1 :
    Accès à la ressource A
        Accès à la ressource B
            ....
        Libération de ressource B
    Libération de ressource A
# Programme 2 :
    Accès à la ressource B
        Accès à la ressource A
            ....
        Libération de ressource A
    Libération de ressource B

3. 1. Un exemple d'ordonnancement

# Programme 1 :
    Accès à la ressource A
        Accès à la ressource B
  • Le processus 1 a commencé, via un premier processus. Afin de faire tourner tous les programmes 'en même temps' il repasse dans la file d'exécution
# Programme 2 :
    Accès à la ressource B
    ....
  • Ici l'accès ne peut se faire, le programme 2 passe donc en état Bloqué
# Programme 1 :
    ....
        Libération de ressource B
    Libération de ressource A
  • Le programme 1 se termine et donc libère A et B
# Programme 2 :
    Accès à la ressource B
        Accès à la ressource A
            ....
        Libération de ressource A
    Libération de ressource B
  • Le programme 2 peut donc s'exécuter normalement

3. 2. Mauvais ordonnancement :

# Programme 1 :
    Accès à la ressource A
  • Le programme 1 crée un premier processus, qui appelle la ressource A
# Programme 2 :
    Accès à la ressource B
  • Le programme 2 crée un premier processus, qui appelle la ressource B
# Programme 1 :
        Accès à la ressource B
  • Le programme 1 attend la ressource B utilisée par le programme 2 et passe en état bloqué.
# Programme 2 :
        Accès à la ressource A
  • Le programme 2 attend la ressource A utilisée par le programme 1 et passe en état bloqué.

Ici les deux programmes sont en état bloqué car chacun attend la ressource de l'autre. Il y a interblocage et donc aucun des programmes ne peut s'exécuter.

4. En pratique

4. 1. Windows

Sous Windows il est possible de voir les processus en cours d'exécution grâce au gestionnaire de tâches. Celui-ci est accessible grâce aux touches Ctrl+Maj+Echap. Il suffit ensuite d'aller dans l'onglet détail et on obtient tous les processus.

Nous retrouvons bien, l'état, le PID, la mémoire occupée

4. 2. Linux

Sous linux, il suffit d'accéder au terminal. Et d'y écrire la commande ps, il est possible de voir les PID et PPID (processus parent)

ps_aux

4. 3. macOS

macOS étant un système Unix (dérivé de BSD), on retrouve les mêmes commandes que sous Linux en grande partie. Pour voir les processus, ici, on utilisera plutôt TOP (dispo sous linux également donc).

top


Auteurs : Florian Mathieu, Enzo Frémeaux, Thimothée Decooster

Licence CC BY NC

Licence Creative Commons
Ce cours est mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 4.0 International.