Système d'exploitation, les processus

Comme nous l'avons vu dans l'introduction aux processus, nous pouvons définir un processus comme étant un programme en cours d'exécution, avec les données dont il a besoin.

Le programme est considéré comme passif, il s'agit d'une suite d'instructions qui ne varient pas.

Par opposition, nous pouvons dire que le processus est actif, car il contient toute une série de variables :

  • le vecteur d'état : comporte les différentes valeurs des registres, ainsi que les états (indicateurs par exemple pour renseigner si l'opération s'est bien déroulée.).
  • adresse de l'instruction suivante à exécuter dans le programme.
  • etc.

Sous les systèmes UNIX, la commande ps permet d'afficher les processus (attention, elle n'affiche par défaut que les commandes que vous faites tourner et dont vous êtes le propriétaire, vous pouvez utiliser ps -ef).

Exemple :

$ ps -ef

UID PID PPID C STIME TTY TIME CMD
root 1 0 0 11:43 ? 0:00:00 init [3]
root 3 1 0 11:43 ? 0:00:00 [ksoftirqd/0]
…/…
steph 4830 1 0 11:46 ? 0:00:00 kio_uiserver [kdeinit] kio_uiserver
steph 4841 4781 0 11:48 ? 0:00:00 /bin/bash /usr/libexec/mozilla-launcher
steph 4855 4841 0 11:48 ? 0:00:00 /opt/firefox/firefox-bin
steph 4859 4855 0 11:48 ? 0:00:00 /opt/firefox/firefox-bin
steph 4860 4859 0 11:48 ? 0:00:00 /opt/firefox/firefox-bin
steph 4862 1 0 11:48 ? 0:00:00 /usr/libexec/gconfd-2 11
steph 4864 4859 0 11:48 ? 0:00:00 /opt/firefox/firefox-bin

$

Une autre commande intéressante est La commande top, qui affiche tous les processus, et actualise l'affichage régulièrement

Sous Windows, nous pouvons voir quels sont les processus qui sont actifs gràce au gestionnaire de tâches.

gestionnaire des tâches

Un processus est identifié par un numéro : le PID (Process IDentifier). Si le PID n'est pas affiché dans le gestionnaire des tâches, vous pouvez sélectionner l'onglet "Affichages", puis "Sélectionner les colonnes". Ensuite, vous cochez l'option PID.

afficher le PID

 

Organisation des processus

Comme un processus peut créer un ou plusieurs processus fils qui peuvent à leur tour faire de même, nous avons une structure en arbre des processus.

Différences entre processus et fichiers

  • Le processus est dépendant d'une hiérarchie en arbre, comme le fichier, mais la profondeur de l'arborescence sera plus faible (nombre de niveaux d'enfants moins élevé que pour les fichiers).
  • L'arborescence du processus possède une durée de vie nettement plus courte que celle des fichiers (quelques minutes au plus pour une arborescence d'un processus, quelques années pour une arborescence de fichiers).

 

Pipes

Un processus se voit allouer une zone mémoire à sa création, dont il peut disposer à sa guise. Si un autre processus désire accéder à ces informations, il ne peut le faire.

Comment procéder ?

L'emplacement mémoire du processus A sera considéré comme un pseudo fichier :

  • Le processus A a un droit en écriture sur cet emplacement mémoire qui lui est réservé.
  • Le processus B a un doit en lecture sur cet emplacement.

Un pipe est donc créé, qui permet à deux processus d'accéder à une même zone mémoire.

Exemple :

$ ps -ef | grep firefox

UID PID PPID C STIME TTY TIME CMD
steph 4855 4841 0 11:48 ? 0:00:00 /opt/firefox/firefox-bin
steph 4859 4855 0 11:48 ? 0:00:00 /opt/firefox/firefox-bin
steph 4860 4859 0 11:48 ? 0:00:00 /opt/firefox/firefox-bin
steph 4864 4859 0 11:48 ? 0:00:00 /opt/firefox/firefox-bin
steph 4894 4859 0 11:53 ? 0:00:00 /opt/firefox/firefox-bin
steph 4896 4806 0 11:53 pts/1 0:00:00 grep firefox

$

La commande grep accède en lecture à un espace mémoire dans lequel la commande ps a envoyé la liste des processus en cours, pour rechercher tous ceux qui comportent la chaîne de caractères "firefox".

Nous pouvons aussi remarquer que le processus "grep firefox" qui vient de "ps -ef | grep firefox" se retrouve lui même dans la liste.

 

Création d'un processus

Il existe 4 moyens de créer un nouveau processus :

  • Nouveau batch. Le processus est créé sans aucune interaction, c'est un fichier batch (suite séquentielle de commandes mémorisées) qui demande la création du processus.
  • Logon interactif. C'est le cas quand un utilisateur ouvre une session (s'identifie sur un système).
  • Création par l'OS. Le système d'exploitation peut créer des processus pour fournir des services.
  • Création depuis un processus. Un programme peut créer un processus.

 

Fin d'un processus

  • Fin normale (Normal completion). Le processus fait un appel service au système d'exploitation pour lui signaler que son exécution est terminée.
  • Dépassement de la limite de temps (Time limit exceeded). Le processus a épuisé le temps total qui lui était alloué pour son exécution. Il n'a plus de raison d'être.
  • Mémoire indisponible. Le processus nécessite plus de mémoire que ne peut lui en fournir le système d'exploitation.
  • Dépassement des limites (Bounds violation). Le processus tente d'accéder à un espace mémoire qui ne lui est pas alloué.
  • Erreur de protection. Le processus tente d'utiliser une ressource à laquelle il n'a pas le droit d'accéder.
  • Erreur arithmétique. Le processus tente d'effectuer une opération non permise (par exemple une division par zéro).
  • Dépassement de l'attente (Time overrun). Le processus n'a pas forcément épuisé le temps qui lui était imparti pour réaliser ses opérations, mais il reste en attente d'un évènement depuis trop longtemps.
  • Erreur d'entrée/sortie (I/O failure). Par exemple, le processus tente de lire un fichier qui n'existe pas.
  • Instruction non valide (invalide instruction). Le processus tente d'exécuter une instruction inexistante. C'est le cas par exemple lorsque le processus dépasse la zone d'instruction, et tente d'exécuter un code qui est en réalité un code de données.
  • Instruction privilégiée. Un processus en mode utilisateur qui tente d'utiliser des instructions en mode kernel.
  • Mauvaise utilisation de donnée (Data misuse). La donnée n'est pas du bon type, ou n'est pas initialisée.
  • Intervention opérateur ou OS. L'opérateur ou le système d'exploitation peuvent mettre fin à un processus s'ils jugent que ce dernier ne répond plus, ou est trop lent à répondre.
  • Mort du parent. Comme le processus fait partie d'une structure hiérarchique, si un processus parent est terminé tous ses enfants n'ont plus de raison d'être.
  • Demande du parent. Un parent peut terminer ses enfants.

 

Structure d'un processus

Comme les informations relatives au processus prennent de la place en mémoire, elles sont divisées en 2 parties. Une partie reste en mémoire, et une autre (qui contient les informations dont le processus n'aura besoin que quand il sera élu) qui sera swappée. Sous UNIX, ces deux parties se nomment proc (process) et u (user).

Nous retrouvons 4 structures de contrôle sous formes de tables, liées entre-elles :

  • Mémoire : gestion de ce qui se trouve en mémoire primaire et en mémoire secondaire, ainsi que de l'allocation pour chacun des 2 types de mémoire.
    Attributs de protection et gestion des zones de mémoire partagées.
    Informations nécessaires à la gestion de la mémoire virtuelle.
  • Périphériques (devices) : statut des opérations d'entrées/sorties.
  • Fichiers : localisation des fichiers, statuts et autres attributs.
  • Processus : pour chaque processus de la table, il existe un processus image. C'est ce point que nous allons développer.

Structure de contrôle du processus

Le processus image reprend une série d'éléments qui nous fournissent des informations sur le processus :

  • des données utilisateur : la partie modifiable de l'espace utilisateur. Cette partie peut contenir les données du programme utilisateur.
  • le programme utilisateur.
  • pile système (system stack) : chaque processus a une ou plusieurs piles (systèmes LIFO) qui lui sont associées. Ces piles permettent de stocker les paramètres ainsi que les appels d'adresses et les appels système.
  • process control block (PCB) : les informations nécessaires au système d'exploitation pour contrôler le processus. Le PCB est la partie qui reste en mémoire dans la table des processus.

Attributs du processus

Nous pouvons classer les attributs du processus en 3 grandes catégories :

  • Identification du processus, composée du PID (Process IDentifier), UID (User IDentifier), GID (Group IDentifier), etc.
  • Informations d'états du processeur. Ces informations (vecteur d'états) reprennent les valeurs contenues dans les différents registres du CPU au moment où le processus quitte ce dernier. Nous pouvons parfois retrouver ces informations sous l'abréviation PSW (Program Status Word).
  • Informations de contrôle du processus. Par exemple, la priorité, le temps d'occupation du processeur, etc.

Etats des processus

Voir la partie consacrée aux différents modèles d'états.

 

Document créé le 04/05/04 20:12, dernière modification le 28/06/17 15:26
Source du document imprimé : https://www.gaudry.be/systeme-exploitation-processus.html

L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.