Geen cache-versie.

Caching uitgeschakeld. Standaardinstelling voor deze pagina:ingeschakeld (code LNG204)
Als het scherm te langzaam is, kunt u de gebruikersmodus uitschakelen om de cacheversie te bekijken.

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

Inhoudsopgave Haut

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).

Inhoudsopgave Haut

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.

Inhoudsopgave Haut

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.

Inhoudsopgave Haut

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.

Inhoudsopgave Haut

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.

Nederlandse vertaling

U hebt gevraagd om deze site in het Nederlands te bezoeken. Voor nu wordt alleen de interface vertaald, maar nog niet alle inhoud.

Als je me wilt helpen met vertalingen, is je bijdrage welkom. Het enige dat u hoeft te doen, is u op de site registreren en mij een bericht sturen waarin u wordt gevraagd om u toe te voegen aan de groep vertalers, zodat u de gewenste pagina's kunt vertalen. Een link onderaan elke vertaalde pagina geeft aan dat u de vertaler bent en heeft een link naar uw profiel.

Bij voorbaat dank.

Document heeft de 04/05/2004 gemaakt, de laatste keer de 26/10/2018 gewijzigd
Bron van het afgedrukte document:https://www.gaudry.be/nl/systeme-exploitation-processus.html

De infobrol is een persoonlijke site waarvan de inhoud uitsluitend mijn verantwoordelijkheid is. De tekst is beschikbaar onder CreativeCommons-licentie (BY-NC-SA). Meer info op de gebruiksvoorwaarden en de auteur.