Dpt Informatique 2ème année Licence GTR
Faculté Electronique et Informatique UASE : Utilisation et Administration
USTHB des Systèmes d’Exploitation
Pr BELKHIR A
CHAPITRE 4 : GESTION DES PROCESSUS
4.1 Les processus sous Unix
Unix est un système multi-tâches, c'est-à-dire qu'il peut exécuter plusieurs programmes à la
fois. Un processus est une instance d'un programme en train de s'exécuter, une tâche. Le shell
crée un nouveau processus pour exécuter chaque commande.
4.1.1 Mettre un processus en tâche de fond
Si on lance une commande qui prend beaucoup de temps (comme un calcul, ou une nouvelle
fenêtre), on peut l'interrompre par Control-C. Ceci interrompt (définitivement) la commande.
On peut aussi exécuter une commande en tâche de fond. Le shell rend alors la main avant la
fin de la commande. Pour le faire, on ajoute un & à la fin de la commande ; par exemple :
$ cc -o grosprogramme grosfichier.c &
$ xdvi monrapport.dvi &
Dans le premier exemple, on lance le compilateur cc en parallèle avec le shell; dans le second
exemple, on met le dvi en tâche de fond, ce qui évite d'avoir à le relancer à chaque
modification.
On reprend la main immédiatement, sans attendre la fin de l'exécution de la commande. On
peut donc taper d'autres commandes dans le même terminal, pendant que la précédente
s'exécute.
4.1.2 background et foreground
Comme on vient de le voir, si vous avez pensé à terminer votre ligne de commande par une
esperluette, le programme que vous avez lancé tourne en arrière-plan (background, abrégé en
bg).
Si vous avez omis l'esperluette, le programme prend la précédence sur le shell. On dit qu'il
tourne au premier plan (foreground, abrégé en fg). Les lignes tapées au clavier sont
mémorisées mais ne seront pas exécutées par le shell avant que le programme en cours
d'exécution n'ait fini son calcul. Vous pouvez malgré tout faire passer ce programme en tâche
de fond, grâce à la manipulation suivante :
$ xdvi rapport.dvi
^Z
zsh: suspended xdvi rapport.dvi
$ bg
[1] + continued xdvi rapport.dvi
$
^Z est un signal intercepté par le shell, qui suspend l'exécution du programme sans détruire le
processus correspondant. Les calculs déjà effectués par ce programme ne sont pas perdus.
Dans l'exemple précédent, si on demande à un xdvi suspendu de changer de page (SPC), il ne
Dpt Informatique 2ème année Licence GTR
Faculté Electronique et Informatique UASE : Utilisation et Administration
USTHB des Systèmes d’Exploitation
Pr BELKHIR A
le fera pas, mais il se souviendra de le faire dès qu'il aura à nouveau accès aux ressources de
l'ordinateur. À partir de l'état suspendu, on peut faire passer un programme :
au premier plan, en tapant fg ;
en arrière-plan, en tapant bg.
Son exécution reprend alors là où on l'avait laissée.
Quand il n'y a qu'un seul programme en arrière-plan dans le terminal courant, on peut le faire
passer au premier plan en tapant fg. Cela permet en particulier d'interrompre son exécution
grâce à ^C, que la plupart des programmes comprennent.^C n'affecte que l'éventuel unique
programme qui tourne au premier plan dans le terminal où il est tapé. Quand il y en a
plusieurs, c'est un peu plus compliqué, mais c'est bien sûr possible.
Résumé :
Le programme tourne au premier plan :
o ^Z le suspend ;
o ^C l'interrompt.
Le programme est suspendu :
o fg le passe au premier plan ;
o bg le passe en arrière-plan.
Le programme tourne en arrière-plan :
o si c'est le seul dans ce cas, fg le passe au premier plan ;
o sinon, c'est plus compliqué.
Le programme ne tourne pas :
o il n'y a rien à faire...
4.2 Voir les processus
Chaque processus est associé un certain nombre d’informations. Ces informations contribuent
à l’identification et la gestion du processus. On dénote :
- numéro de processus PID (Process Identifier)
- numéro d’utilisateur UID (User IDentifier)
- numéro de groupe GID (Group IDentifier)
- durée de traitement utilisée (temps cpu) et priorité du processus
- référence au répertoire de travail courant
- table de référence des fichiers ouverts
- PID (Process Identifier) : le système étant multi-tâche, le PID est moyen d’identifier tout
processus dans le système. Chaque processus peut créer lui-même des processus ; ces
nouveaux processus sont alors appelés processus fils. Ces derniers connaissent leur
origine par l’intermédiaire de PPID (PID du père)
Dpt Informatique 2ème année Licence GTR
Faculté Electronique et Informatique UASE : Utilisation et Administration
USTHB des Systèmes d’Exploitation
Pr BELKHIR A
UID et GID : Chaque processus dispose des numéros UID et GID à sa création. Ce qui lui
permettra d’avoir les autorisations d’accès aux fichiers.
Durée de traitement et priori : La stratégie de scheduling est une variante de Roud Robbin
basée sur les priorités. Ce qui permettra de partager le temps CPU entre les processus.
Répertoire courant du processus : il indique le répertoire courant de travail et d’accès aux
fichiers.
Table des fichiers ouverts : elle permet l’accès aux fichiers en lecture et écriture. Les trois
premières entrées sont prédéfinies : stdin (clavier), stdout (écran) et stderr (écran pour erreur).
Les priorités des processus créent un phénomène appelé "ordonnancement " lié à la gestion de
la mémoire.
Le temps de processeur total disponible est divisé en petites plages : le quantum. Un
processus ne peut rester dans le processeur que le temps d'un quantum.
La commande ps montre où en sont les tâches de fond :
$ ps
PID TT STAT TIME COMMAND
4450 p9 S 0:00 /usr/local/bin/lcsh
4782 p9 S 0:02 cc -o grosprogramme grosfichier.c
Dpt Informatique 2ème année Licence GTR
Faculté Electronique et Informatique UASE : Utilisation et Administration
USTHB des Systèmes d’Exploitation
Pr BELKHIR A
4841 p9 R 0:00 ps
ps affiche la liste des processus que vous avez lancés :
PID (process identificator) : c'est le numéro du processus.
TT : indique le terminal dans lequel a été lancé le processus. Un point d'interrogation
signifie que le processus n'est attaché à aucun terminal (par exemple les démons).
STAT : indique l'état du processus :
o R : actif ( running)
o S : non activé depuis moins de 20 secondes (sleeping)
o I : non activé depuis plus de 20 secondes (idle)
o T : arrêté (suspendu)
o Z : zombie
TIME : indique le temps machine utilisé par le programme (et non pas le temps depuis
lequel le processus a été lancé !).
La commande ps a différentes options, dont les suivantes :
a (all) : donne la liste de tous les processus, y compris ceux dont vous n'êtes pas
propriétaire.
g (global, général...) : donne la liste de tous les processus dont vous êtes propriétaire.
u (user, utilisateur) : donne davantage d'informations (nom du propriétaire, heure de
lancement, pourcentage de mémoire occupée par le processus, etc.).
x : affiche aussi les processus qui ne sont pas associés à un terminal.
w : le tronque pas à 80 caractères (peut être utilisée plusieurs fois pour tronquer plus
loin)
ps agux est en fait souvent utilisé pour avoir des informations sur tous les processus.
La commande top affiche les mêmes informations, mais de façon dynamique : elle indique en
fait par ordre décroissant le temps machine des processus, les plus gourmands en premier.
4.3 Tuer les processus
Les programmes ont tous une commande spécifique pour les quitter (q, menu où cliquer, etc).
C'est seulement dans le cas vous ne parvenez pas à les quitter correctement, pour une
raison ou une autre, que vous pouvez avoir besoin de tuer le processus.
Avant toute chose, essayez de taper ^C ou ^D. Si cependant ça ne marche pas, utilisez la
commande kill (plus le numéro du processus).
$ ps
PID TT STAT TIME COMMAND
4450 p9 S 0:00 /usr/local/bin/lcsh
4782 p9 S 0:02 cc -o grosprogramme grosfichier.c
4841 p9 R 0:00 ps
$ kill 4782
$ ps
PID TT STAT TIME COMMAND
4450 p9 S 0:00 /usr/local/bin/lcsh
4851 p9 R 0:00 ps
Dpt Informatique 2ème année Licence GTR
Faculté Electronique et Informatique UASE : Utilisation et Administration
USTHB des Systèmes d’Exploitation
Pr BELKHIR A
kill -9 tue le processus à tous les coups. Vous ne pouvez tuer que les processus dont vous
êtes propriétaire. Il convient de ne l'utiliser que si aucune autre méthode ne marche, car dans
ce cas le programme n'a aucun moyen de faire quoi que ce soit avant de mourir.
. Commandes liées aux processus
fork :
allocation d'une entrée dans la table de processus.
duplication de la zone u.
portage du code et des données.
copy on write (lorsqu'une modification intervient, il y a copie du processus).
exec :
on libère tout sauf l'entrée dans la table des processus et la zone u.
allocation des zones texte, données, pile et tas pour le programme chargé.
exit :
on libère tout sauf l'entrée dans la table des processus (processus en état zombie).
exit (n) retourne un code de sortie (n) qui pourra être récupéré par le père.
wait :
attente de terminaison du fils, s'il n'est pas encore terminé.
récupération des informations sur la terminaison du fils (code de sortie).
disparition définitive du fils.
6.3.2. top
top est un programme tout en un : il remplit à la fois les fonctions de ps et kill. C’est un
programme en mode console, vous le lancerez donc depuis un terminal.
1 / 11 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !