Vous êtes sur la page 1sur 15

Administration systme Linux

Gestion des processus

Ecole Nationale des Sciences Appliques - Khouribga


Omar EL BANNAY

Processus
Un processus est un programme ou une commande en cours d'excution sur un systme.
Linux peut excuter plusieurs processus en mme temps et il est possible de lancer
plusieurs occurrences d'un mme programme simultanment.
Le terme "tache" est quivalent "processus". C'est pourquoi on qualifie Linux de
systme multitche.
Tout processus est identifi par un numro unique, le PID (Process Identifier).
Deux primitives du noyau Linux permettent de crer des processus: fork et exec.
La premire permet un processus de crer un clone de lui-mme, la seconde servira
de clone pour excuter le code d'un autre programme sa place. Il en rsulte une
affiliation entre processus; on parle alors de processus fils et de processus pres.
Tout processus a donc obligatoirement un pre, sauf le premier processus du systme:
init. Celui-ci est donc l'anctre de tous les processus du systme et son PID est 1.

Administration systme Linux

Gestion des processus

Dmons
Les dmons sont des processus particuliers. Ils s'excutent toujours en tches de fond
(background ). Ceci implique que son pre ne attend pas la fin de son excution. Les
dmons sont toujours l'coute et attendent qu'un vnement se produise. Ils ralisent des
tches de manire priodique.
Les dmons dmarrent au dbut du chargement du systme d'exploitation et ne meurent
pas. Les dmons ne travaillent pas : ils lancent plutt d'autres processus pour effectuer les
tches.

Certains des ces dmons sont reconnaissables par leur nom se terminant par un d,
comme syslogd (journalisation des messages) ou bien inetd (le dmon fournisseur de
plusieurs services).
Administration systme Linux

Gestion des processus

Principaux lments d'un processus


Par processus, un certain nombre d'informations sont stockes, essentiellement dans la
table des processus.

Numro de processus :PID


Les processus doivent pouvoir se diffrencier et pour ce faire, linux leur attribue un
numro d'identification unique.
Processus pre :PPID
Chaque processus peut en crer plusieurs : ceux sont ses processus enfants. Pour que
les enfants connaissent leur origine, le systme leur communique l'identification de leur
processus pre, c'est--dire le PPID.
Numro d'utilisateur et de groupe : UID et GID
A sa naissance, un processus reoit un UID et un GID qui lui permettent de justifier,
chaque accs un fichier, des droits auxquels il prtend.

Administration systme Linux

Gestion des processus

Principaux lments d'un processus (suite)


Dure de traitement et priorit
Un processus ne peut pas travailler et immobiliser lui tout seul le processeur. Le temps
du processeur est donc partag en "tranches de temps", le "time slicing", et un processus
ne consommera au plus, en continu, que le time slicing, avant d'tre remis en file
d'attente par le schduler.
Pour permettre ce passage d'un processus l'autre, chacun est dot d'une priorit et le
processus ayant la plus haute priorit sera trait en premier.
Rpertoire courant du processus

Table des fichiers ouverts


Pour permettre aux processus d'accder en lecture criture des fichiers, il faut qu'ils
aient les rfrences des fichiers ouverts en mmoire de travail.
C'est pourquoi une table des fichiers ouverts est cre par chaque processus.

Administration systme Linux

Gestion des processus

Etats des processus


lu
ordonnancement
du processus

fin d'excution

attente de
ressources

fork

prt

zombi

rveil

bloqu

mort du
processus

RAM
disponible

nouveau

mise en swap

mise en swap
mise hors swap

RAM non
disponible

Administration systme Linux

prt
en swap

rveil

mmoire vive
swap

bloqu
en swap

Gestion des processus

Priorit des processus


Linux excute plusieurs processus sur la mme machine bien que celle-ci ne possde pas
un nombre de processeurs gal au nombre de processus. La mthode consiste alors
affecter une petite plage de temps (appele quantum) successivement chaque
processus, pendant laquelle le processus peut utiliser le CPU. La partie du module
charge de l'affectation de ces quantum est appele ordonnanceur.
Cet ordonnanceur doit donc grer l'accs quitable de chaque processus au CPU. Une
fois que le processus a utilis son quantum de temps processeur, l'ordonnanceur le
prempte et rvalue la priorit de tous les processus au moyen d'une file de priorit.

Cependant, l'utilisateur a le moyen d'influencer l'ordre d'attribution du processus en


jouant sur la priorit des processus. Pour cela, il dispose de la commande nice pour
changer le niveau de priorit par dfaut et de renice pour changer celle d'un processus
dj lanc.

Administration systme Linux

Gestion des processus

Priorit des processus (suite)


a. nice

nice [-n valeur] [<commande>]


Chaque utilisateur peut dcider que son processus a besoin d'une priorit moindre. Il lui
faudra alors plus de temps pour se terminer.
Ceci est intressant pour des commandes longues et non urgents.

La commande nice permet de rabaisser la priorit d'un processus en augmentant son facteur
de priorit.
Le premier paramtre donne le nombre d'units de priorit soustraire au processus (1 19).
Le deuxime paramtre prcise la commande dont la priorit est baisser.

Administration systme Linux

Gestion des processus

Priorit des processus (suite)


a. renice
Il existe une autre commande, renice, permettant de modifier le facteur de priorit d'une
commande mme aprs son lancement.

renice [priorit] [p pid] [g gid] [-u user]

[root]# renice +1 2709 u akram

Administration systme Linux

Gestion des processus

Visualisation des processus


a. Affichage des processus en cours : ps (process status)
La commande ps permet de voir la liste des processus du systme: elle donne une image
simplifie des structures du noyau qui grent les processus.
Les options sont multiples, parmi les plus intressantes :
aux

affiche les processus de tous les utilisateurs (a) ainsi que ceux
n'tant pas attachs un terminal (x), tout en spcifiant le nom de
l'utilisateur et la date de lancement (u).

auxr

processus actifs(r running) avec nom du user

-ef

affiche tous les processus du systme (-e) avec un maximum


d'informations (-f).

Enfin, on utilisera la syntaxe avec l'option o pour ne prsenter que les champs dsirs :

ps e o <champ[, champ] >

Administration systme Linux

Gestion des processus

10 10

Visualisation des processus : ps (suite)


Les principaux champs disponibles sont (le libell de la colonne est entre parenthse) :
%cpu (%CPU): pourcentage de temps processeur utilis depuis le lancement de la
commande.
%mem (%MEM) : pourcentage d'utilisation de la mmoire disponible.
comm (COMMAND) : nom de la commande l'origine du processus.
time (TIME) : temps total d'utilisation du CPU pour ce processus.
gid (GID) : GID sous lequel s'excute le processus.
group (GROUP) : nom du groupe sous lequel s'excute le processus.
nice (NI) : valeur de "gentillesse" ou niveau de priorit du processus.
pid (PID) : identifiant du processus.
ppid (PPID) : identifiant du processus pre.
rss (RSS) : quantit de mmoire vive utilise (en kilo-octets).
stat (STAT) : tat du processus.
.
Administration systme Linux

Gestion des processus

11 11

Visualisation des processus : top


b. Les processus en temps rel : top

Cette commande permet d'avoir des informations en temps rel sur les processus.

[root]# top
PID
USER

PRI

720
1
2
3
566
567
24
361

16 0 588 588
0 0 328 328
0 0 0
0
0 0 0
0
1 0 724 724
0 0 332 332
0 0
0
0
0 0 324
324

root
root
root
root
root
root
root
root

NI

SIZE

Administration systme Linux

RSS

SHARE STAT

LIB

436
260
0
0
420
268
0
256

0
0
0
0
0
0
0
0

R
S
SW
SW
S
S
SW
S

%CPU
2.9
0.0
0.0
0.0
0.0
0.0
0.0
0.0

%MEM

TIME
1.9
1.0
0.0
0.0
2.3
1.0
0.0
1.0

Gestion des processus

COMMAND
0:00
0:03
0:00
0:00
0:00
0:00
0:00
0:00

top
init
kflushd
md_thread
login
getty
nfsiod
inetd

12 12

Visualisation des processus : pstree


c. Les processus en arbre : pstree
Cette commande permet d'afficher les noms des processus de faon hirarchique.

Certains processus sont prcds d'une valeur


numrique, indiquant qu'il existe n processus
excutant la mme commande

Administration systme Linux

[root]# pstree
init|-cron
|-5*[getty]
|-ipxd
|-kflushd
|-klogd
|-kswapd
|-login---bash
|-logoutd
|-lpd
|-2*[md_thread]
|-4*[nfsiod]

Gestion des processus

13 13

Signaux
Il s'agit d'un mcanisme basique de communication unidirectionnel avec les processus.

kill [-<signal>] <pid>


Les signaux peuvent tre envoy par un utilisateur par la commande kill, gnr depuis un
terminal pour interrompre ((ou terminer) <CTRL>-C) un processus, ou pour suspendre
(<CTRL>-Z) un processus, ou envoyer par le noyau pour signaler un problme (division
par 0, par exemple).

Deux syntaxes possibles :


Syntaxe numrique : kill 9 2878
syntaxe symbolique : kill KILL 2878

Administration systme Linux

Gestion des processus

14 14

Signaux
Les principaux signaux sont :
SIGHUP (1) : possdent deux interprtations. La premire permet un dmon
(service) s'il est capable de relire son/ses fichier(s) de configuration, de se recharger
(suite des modifications) sans avoir le redmarrer. La seconde, permet de terminer
( tuer ) un processus attach un terminal, i.e. quitter son terminal revient terminer
les processus qui lui sont attachs.
SIGINT (2) : ce signal est mis en tapant un <CTRL-C>. Il a pour effet de terminer
(correctement) le processus courant.
SIGTERM (15) : entrane la terminaison correcte du processus cible.
SIGSTOP (17) : pour arrter un processus.
SIGCONT (19) : pour redmarrer un processus arrt.
SIGFPE (8) : erreur mathmatique de virgule flottante. Ce signal est envoy aux
processus accomplissent une opration mathmatique illgale (par exemple, une
division par zro). Par dfaut, cre un fichier core et termine le processus.
SIGKILL (9) : pour tuer un processus.
SIGSEGV (11) : rfrence mmoire invalide. Gnr automatiquement lorsqu'un
processus tente d'accder un bloc mmoire situ en dehors de l'espace qui lui a t
attribu par le noyau.
SIGCHLD (17) : signale un processus l'arrt ou la terminaison d'un de ses fils.
Administration systme Linux

Gestion des processus

15 15