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).
ne pas confondre Processus avec Processeur =
Notes sur les champs d'application des processus.
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.
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 :
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 :
Un processus peut être rangé (swapped) sur disque s'il reste trop longtemps dans la file des bloqués.
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.
USER | PID | %CPU | %MEM | SZ | RSS | TT | STAT | START | TIME | COMMAND |
---|---|---|---|---|---|---|---|---|---|---|
billard | 9343 | 5.4 | 1.3 | 316 | 756 | p1 | S | 15:58 | 0:00 | -local/bin/tcsh |
solana | 29087 | 2.7 | 7.0 | 3196 | 4212 | co | S | Jan 4 | 81:53 | lemacs |
solana | 10113 | 0.0 | 0.0 | 104 | 0 | co | IW | Dec 22 | 0:01 | -csh (csh) |
bin | 60 | 0.0 | 0.0 | 36 | 0 | ? | IW | Nov 15 | 0:01 | ypbind |
root | 0 | 0.0 | 0.0 | 0 | 0 | ? | D | Nov 15 | 19:23 | swapper |
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 |
STAT | Signification |
---|---|
S | Sleeping <= 20s |
I | Idle > 20s |
W | Swapped |
D | Non-interruptible |
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.
Le temps nécessaire à la commutation de contexte doit être inférieur au quantum.
La création d'un processus :
Action de fork()
Lors du démarrage de Unix, deux processus sont créés :
-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.
Les IPC comprennent :
Les sémaphores sont des outils de synchronisation.
Un processus peut déposer et retirer des messages. Les messages sont typés.
Un processus peut retirer :
Un processus peut lire et écrire en mémoire partagée, comme s'il s'agissait de ses propres variables.
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.
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 :