Académique Documents
Professionnel Documents
Culture Documents
Plan du chapitre
1/13
Systèmes d’exploitation ISET de Jendouba
1. La notion de processus
a) Définition
Le concept de processus est le plus important dans un système d’exploitation. Il est en lien direct
avec la notion de « programme ».
En effet, Un programme informatique est un ensemble d’instructions (un code écrit par un
informaticien dans un langage de programmation) destinées à être exécutées par un processeur.
L’exécution d’un programme par un processeur s’appelle « processus ».
Les processus sont initialisés à chaque fois qu’une tâche est lancée. Ils sont initialisés par un
utilisateur ou par le système.
L’exécution d’un processus doit progresser séquentiellement, c’est à dire, à n’importe quel moment
une seule instruction au plus est exécutée au nom du processus.
Les processus permettent de lancer plusieurs tâches ”en même temps”.
Dans les systèmes linux, les processus sont identifiés par un numéro unique appelé PID (Process
IDentifier) et tous les processus sont organisés de façon hiérarchique. Ainsi, il existe une relation
père / fils entre les processus et chaque fils possède un autre identifiant appelé PPID (Parent PID) qui
est l'identifiant de son père.
2/13
Systèmes d’exploitation ISET de Jendouba
Un seul processus peut être en exécution sur n’importe quel processeur à tout moment.
Toutefois, plusieurs processus peuvent être prêts ou bloqué.
Le PCB contient plusieurs informations concernant un processus spécifique, comme par exemple:
Etat du processus
Numéro du processus : Dans les systèmes linux ce numéro est le PID.
Compteur d’instructions: indique l’adresse de l’instruction suivante devant être exécutée
par ce processus.
Informations sur l’ordonnancement du CPU: information concernant la priorité du
processus.
Informations sur la gestion de la mémoire: valeurs des registres, des tables de pages ou
des tables de segments.
Informations sur l’état des E/S: liste des périphériques E/S allouées à ce processus, une
liste des fichiers ouverts.
Etc.,,,.
3/13
Systèmes d’exploitation ISET de Jendouba
Une des principales raisons pour justifier l’utilisation des blocs de contrôle des processus est que
dans un système multiprogrammé on a souvent besoin de redonner le contrôle du CPU à un autre
processus. Il faut donc mémoriser toutes les informations nécessaires pour pouvoir éventuellement
relancer le processus courant dans le même état. Par exemple, il faut absolument se rappeler à quelle
instruction il est rendu.
Le système d’exploitation maintient dans une table appelée «/*table des processus» les informations
sur tous les processus créés (une entrée par processus : PCB).
2. La notion de thread
Thread ou processus léger est une unité d'exécution rattachée à un processus. Un thread est chargé
d'exécuter une partie du programme d’un processus.
Exemple :
4/13
Systèmes d’exploitation ISET de Jendouba
En effet, un processus est vu comme étant un ensemble de ressources (espace d’adressage, fichiers,
périphériques...) que ses threads (fils) d'exécution partagent.
Important !!!!! Un thread partage avec son processus père le même code du programme, le même
espace d’adressage et les données et les fichiers utilisés. Le thread ne partage pas avec son père les
registres des données et la pile d’exécution (voir figure ci-dessous).
Lorsqu’un processus est créé, un seul fil d’exécution (thread) est associé au processus => thread
principal exécutant la fonction principale du programme du processus. Ce thread principal peut en
créer d’autres.
Chaque thread a:
– un identificateur unique
– une pile d'exécution
– des registres (un compteur ordinal)
– un état...
Important!!!! Un processus peut créer soit un autre processus (processus fils) soit un thread.
5/13
Systèmes d’exploitation ISET de Jendouba
C au facteur de priorité : plus la valeur est grande, plus le processus est prioritaire
6/13
Systèmes d’exploitation ISET de Jendouba
c) Hiérarchie de processus
Dans les systèmes Linux, lorsqu’un processus crée un autre processus, les processus parent et enfant
continuent d’être associés d’une certaine manière. Le processus enfant peut lui même créer plusieurs
processus, formant une hiérarchie de processus. Un processus a un seul parent et peut avoir 0 ou
plusieurs fils. Sous Linux, si le processus A crée le processus B, A est le parent de B, B est le fils de
A. B peut à son tour créer des processus. Un processus avec tous ses descendants forment un groupe
de processus représenté par un arbre de processus.
Notons que Init et [kthreadd] étant tout les deux des fils du swapper ont leur PPID égal à 0. La
commande ps permet de le vérifier.
7/13
Systèmes d’exploitation ISET de Jendouba
Espace utilisateur
Au sommet de l'espace utilisateur se trouve le processus init, ayant le PID 1, qui est le premier à
avoir été lancé. Il se chargera ensuite de créer les autres processus utilisateurs nécessaires au
fonctionnement du système, notamment les processus daemons et les processus gettys qui à leur tour
créeront d'autres processus fils et ainsi de suite. Init sera ici l’ancêtre de tous les processus utilisateur.
Les processus getty (get teletype) sont chargés de la surveillance des terminaux. Ils permettent entre
autres aux utilisateurs de se connecter. Quand un utilisateur veut se connecter à un terminal, le
processus getty va créer un nouveau processus fils, le processus login. Ce dernier va vérifier à l'aide
du fichier /etc/passwd la correspondance login/mot de passe et les autorisations de l'utilisateur. Si la
connexion est réussie, le processus login va à son tour créer un nouveau processus fils, le processus
shell (interpréteur de commandes). Il va analyser si l’utilisateur entre une commande et créera un
nouveau processus chargé de l’exécuter. Ce dernier processus prendra fin lorsque la commande (ou
le programme lancé en ligne de commande) se terminera.
Les daemons sont des processus, pour la plupart lancés au démarrage du système, qui restent en
tâche de fond jusqu’à ce qu'on fasse appel à eux. Leurs noms se terminent généralement par la lettre
d (pour daemon). Parmi les plus connus, nous avons par exemple crond (tâches planifiées), inetd
(surveillance réseau), rsyslogd (logs du système), lpd (gestion de l’imprimante), etc.
Espace Noyau
Cet espace est occupé par les threads noyau (ou kthreads, ou encore processus noyau) qui gèrent la
partie hardware et ont une priorité haute. Ils s’exécutent dans l'espace d'adressage du noyau.
8/13
Systèmes d’exploitation ISET de Jendouba
Au sommet de cet espace se trouve le daemon [kthreadd], processus qui se chargera de lancer tous
les autres kthreads, reconnaissables de par leurs noms entre crochets [], [kthreadd] est donc l'unique
père de cette hiérarchie et de ce fait tous les kthreads présents dans cet espace (sauf [kthreadd] lui
même) ont un PPID de 2. Parmi les plus connus nous avons par exemple [kswapd0] (daemon du
swap), etc.
a) La notion d’ordonnanceur
L’ordonnanceur (scheduler) est la partie du SE qui décide quel processus dans la file prêt obtient le
CPU quand il devient libre. Donc la tâche principale de l’ordonnanceur est de choisir parmi les
processus prêts et d’allouer le CPU à l’un d’eux.
9/13
Systèmes d’exploitation ISET de Jendouba
d) Algorithmes d’ordonnancement
P2 P3 P1
0 3 6 30
P2 P3 P1
10/13
Systèmes d’exploitation ISET de Jendouba
Exercice :
Soit les données suivantes :
Processus Temps d’arrivée Temps d’exécution
P1 0 20
P2 6 5
P3 10 3
Donner le diagramme de Gant et calculer, pour chaque processus, le temps de rotation, le temps de
réponse, Temps d’attente,
Solution :
P1 P2 P3
0 20 25 28
P1 P2 P3
1) Tracer le diagramme de Gant relatif au données ci-dessus en utilisant l’algorithme SJF sans
préemption
11/13
Systèmes d’exploitation ISET de Jendouba
2) Calculer, pour chaque processus, l’utilisation CPU, Débit, Temps de réponse, Temps de rotation,
Temps d’attente,
3) Refaire les questions 1) et 2) pour l’algorithme SRTF
Correction :
1)
P1 P3 P2 P4
0 7 8 12 16
P1 P2 P3 P4
2)
Temps de Temps de Temps
Rendement
rotation réponse d’attente
P1
P2
P3
P4
Moyenne
3)
P1 P2 P3 P2 P4 P1
0 2 4 5 7 11 16
P1 P2 P3 P4
12/13
Systèmes d’exploitation ISET de Jendouba
s'achève avant la fin du processus, le processeur est alloué au processus suivant dans la liste et le
processus précédent se trouve ainsi en queue de liste.
Exercice :
Tracer le diagramme de Gantt pour Quantum=5
Processus Temps d’exécution
P1 13
P2 7
P3 10
P4 15
Solution :
13/13