Processus


Les processus, à quoi ça sert ?

Ça sert à faire plusieurs activités en "même temps".

Par exemple :

Faire travailler plusieurs utilisateurs sur la même machine. Chaque utilisateur a l'impression d'avoir la machine à lui tout seul.

Par exemple :

Compiler tout en lisant son mail.

Problème : Un processeur ne peut exécuter qu'une seule instruction à la fois.

But : Partager un (ou plusieurs) processeur entre différents programmes (les processus).

Attention ! ne pas confondre Processus avec Processeur =

Notes sur les champs d'application des processus.

Une définition d'un processus

Un processus est l'activité résultant de l'exécution d'un programme séquentiel, avec ses données, par un processeur.

La vie intime des processus

Allocation du processeur

Il existe différentes stratégies :
méthode FIFO (First In, First Out)

Aussi appelé traitement par "train", par "lot" ou "batch".
Les processus accèdent au processeur, chacun à leur tour, dans l'ordre d'arrivée, et monopolisent le processeur jusqu'à leur terminaison.

Travaux courts pénalisés

Temps de Réponse fonction de la Charge du système Stratégie indépendante du temps d'exécution des processus

Cette méthode est non-préemptive, c'est-à-dire qu'un processus monopolise le processeur jusqu'à sa terminaison.

Une amélioration de la stratégie FIFO est d'ordonner la file en fonction du temps estimé d'exécution des processus. Dans ce cas, le temps de réponse des travaux courts est diminué, et celui des travaux long est augmenté.

Notes sur le traitement par lot.

Méthode du tourniquet (Round Robin)

Aussi appelé "balayage cyclique".
Les processus accèdent au processeur, chacun à leur tour, pour un temps déterminé à l'avance (le quantum).

Un processus en attente d'une entrée-sortie sera placée dans une file des bloqués.

Plus court d'abord (SJF : Shortest Job First)

Priorité = Ordonnancement de la file

Privation des travaux longs

Cette méthode est préemptive, c'est-à-dire que le processeur est retiré à un processus au bout d'un certain quantum.

Le quantum est calculé par tâtonements :

Méthode du tourniquet multiniveaux

Avant d'accéder au processeur, les processus sont rangés dans les files correspondant à leur niveau de priorité. Un processus ne peut accéder au processeur que s'il n'existe plus de processus dans les files de plus haute priorité.

Amélioration du tourniquet simple

Priorité = 1 priorité différente par niveau

Les priorités peuvent être :

Une amélioration du système par le swap

Un processus peut être rangé (swapped) sur disque s'il reste trop longtemps dans la file des bloqués.

Quelques caractéristiques des processus

Voici un résultat possible de la commande ps sous Unix.

Chaque ligne concerne un processus et chaque colonne donne une caractéristique des processus. Par exemple PID est l'IDentificateur du Processus.

Pour plus d'information, reportez-vous aux man pages en tapant la commande man ps.

USERPID%CPU%MEMSZRSSTTSTATSTARTTIMECOMMAND
billard93435.41.3316756p1S15:580:00-local/bin/tcsh
solana290872.77.031964212coSJan 481:53lemacs
solana101130.00.01040coIW Dec 220:01-csh (csh)
bin60 0.0 0.0 36 0 ? IW Nov 15 0:01 ypbind
root0 0.0 0.0 0 0 ? D Nov 15 19:23swapper
root 78 0.0 0.1 60 60? I Nov 15 5:25 syslogd
ncsa 18010 0.0 0.0 1976 0? IW Jan 9 0:01 /net/bin/sp

STATSignification
SSleeping <= 20s
IIdle > 20s
WSwapped
DNon-interruptible

Le contexte d'un processus

Le contexte d'un processus est l'ensemble des informations dynamiques qui représente l'état d'exécution d'un processus (e.g. où est-ce que le processus en est de son exécution).

Le contexte état courant d'un processus.

On définit aussi le vecteur d'état d'un processus (PSW : Program Status Word) comme l'ensemble des bits de condition, priorité, etc. au moment de la commutation de contexte.

La commutation de contexte (context switching)

La commutation de contexte est le mécanisme qui permet au système d'exploitation de remplacer le processus élu par un autre processus éligible.

Le temps nécessaire à la commutation de contexte doit être inférieur au quantum.

Les processus sous Unix

Aussi appelés processus lourds.

La création d'un processus :

Action de fork()

Lors du démarrage de Unix, deux processus sont créés :

La communication entre processus

La communication entre père et fils par tubes (pipe)

La communication par tubes nommés

Un tube nommé est un fichier spécial créé avec la commande mknod ou mkfifo.

-rw-r-----   1 billard  telecom    15001 fév   4 13:59 fichier_normal
prw-r-----   1 billard  telecom        0 fév   4 13:58 mon_tube
-rw-r-----   1 billard  telecom    45876 fév   4 13:59 un_autre_fichier

La taille de mon_tube = 0, sauf lors de l'utilisation du tube.

Le tube s'utilise comme un fichier normal avec les primitives open, read, write, close.

La communication par IPC (Inter Process Communication)

Les IPC font partie de l'interface Unix System V.

Les IPC comprennent :

  1. les files de messages ;
  2. la mémoire partagée ;
  3. les sémaphores.
Les files de messages et la mémoire partagée sont des outils de communication.

Les sémaphores sont des outils de synchronisation.

Les files de messages

1 file de message 1 boîte aux lettres.

Un processus peut déposer et retirer des messages. Les messages sont typés.

Un processus peut retirer :

La mémoire partagée

1 mémoire partagée 1 espace d'adressage commun à plusieurs processus.

Un processus peut lire et écrire en mémoire partagée, comme s'il s'agissait de ses propres variables.

Les IPC - Inconvénients

Table des IPC (donnée par la commande ipcs).

Message Queues:
T     ID     KEY      MODE       OWNER    GROUP
q  28050 19466732 --rw-rw-rw- cbronner     sys2
Shared Memory:
T     ID     KEY      MODE       OWNER    GROUP
m  10601     4353 --rw-rw-rw-  marchal     sys2
Semaphores:
T     ID     KEY      MODE       OWNER    GROUP
s    811     8765 --ra-ra-ra-  marchal     sys2

Les IPC font partie du système d'exploitation.
Chaque opération sur un IPC implique donc un appel système, très couteux, i.e. lent.

Les threads - processus légers

Idée : plusieurs threads à l'intérieur du même processus.

Chaque thread accède au même segment de données (donc aux mêmes variables).

1 thread =

Une thread qui interagit avec une autre au sein du même processus n'utilise pas le système d'exploitation.

une thread est plus légère à gérer et sa gestion peut être personalisée.

La commutation de contexte est plus simple entre threads.

États uniques pour chaque thread :

Attention : par défaut, la méthode d'allocation du processeur est NON-préemptive dans les anciens systèmes, et préemptive dans tous les sytèmes récents.


Retour au sommaire.