Vous êtes sur la page 1sur 4

Université de Ghardaı̈a

Licence Informatique 2
Module : Système d’Exploitation

T.P. 2 : Gestion des Processus


Les commandes importantes :

1 Rappels sur les • ps [-aux]

processus, et les • pstree

redirections • strace nom programme


• ; | &
1.1 Notion de processus
De manière informelle un processus est un programme en cours d’exécution.
L’exécution de ce programme se fait de manière séquentielle. Comme le système
doit gérer de multiples processus, il alloue à chaque processus un quantum de
temps durant lequel ce dernier s’exécute. Une fois qu’un processus a épuisé son
quantum de temps, le système passe la main à un autre processus, et ainsi de
suite. Comme durant ce roulement l’exécution de chaque processus s’effectue
très rapidement, on a la sensation que plusieurs processus s’exécutent en même
temps.
å Exercice
La commande strace commande permet de visualiser tout les appels
systèmes effectués par la commande passée en argument. Tapez strace ls
. Commentez le résultat et donnez une représentation graphique de la structure
grossière des différentes couches d’un système Unix.

1.2 Attributs des processus


On peut avec la commande ps lister tout les processus fonctionnant sur une
machine. Un processus possède un numéro unique appelé PID.

ark@linux:~/cour/tp2> ps
PID TTY TIME CMD
467 pts/0 00:00:11 csh
775 pts/0 00:10:26 artsd
1126 pts/0 00:01:08 xemacs
1171 pts/1 00:00:00 xdvi.bin
1174 pts/1 00:00:00 gs
1276 pts/0 00:00:00 ps
Sur l’affichage ci-dessus, le processus corespondant à l’éditeur xemacs a pour
PID 1126.
å Exercice
A l’aide de la commande man, ainsi qu’en explorant le répertoire /proc
donnez l’ensemble des attributs des processus. Comment la gestion des droits
sur les processus est-elle gérée sur les machines LINUX ?

1.3 Combinaison de processus


Il existe deux types de combinaison de processus :
• La combinaison séquentielle de commandes, qui corespond à un en-
chaı̂nement de processus :
Pour combiner séquentiellement des processus, on sépare chacune des com-
mandes par l’opérateur “;”. Par exemple, la commande :

ark@linux:~/cour/tp2 > ls ; ps; ls

permet de lancer successivement les commandes ls, puis une fois que
celle-ci est terminée le système lance la commande ps, et enfin une
fois cette dernière terminée, le système lance la commande ls. Lors de
l’exécution de chacun des processus, le système créer un nouveau shell qui
est recouvert par le processus.
• Processus concurrents et communication par tube :
L’enchaı̂nement de deux commandes peut être réalisé à l’aide d’un pipe
dont l’opérateur est noté |. Le principe d’un pipe est de rediriger la
sortie standard de la commande précédant le pipe sur l’entrée standard
de la commande suivant le pipe. Par exemple la commande cat fic1
|more permet de rediriger la sortie standard de la commande cat fic1
vers l’entrée standard du paginateur more, ce qui permet de visualiser
le contenu du fichier fic1. Il existe deux méthodes pour exécuter des
processus utilisant un pipe ou processus concurrents. Dans la première
méthode, le système créer un shell que la première commande recouvre
puis les autres commandes recouvrent successivement ce shell. La seconde
méthode consiste à créer un shell pour chacune des commandes, ces shells
étants recouverts par ces commandes.
• Création de groupes de processus
On peut faire s’exécuter un ensemble de commandes depuis un même
shell père en mettant des parenthèses. Par exemple durant l’execution de
la commande ( ls ; ls -l ), le système commence par créer un shell
père, puis, il crée un shell pour chacun de ses fils à partir de ce shell père,
enfin une fois les ommandes filles terminées, le shell père se termine.
å Exercice
Interprétez l’exécution des commandes suivantes :

2
> ps ; ps
> ps | ps
> (ps ; ps )

1.4 Lancement en arrière plan


Traditionnellement une commande est lancée aux premier plan(foreground) :
tant que la commande s’exécute on ne peut avoir d’accès au shell. Cependant un
processus peut être lancé en arrière plan si la commande est suivie du caractère
&. Le processus rend alors la main au processus père et la commande s’effectue
en tache de fond (background). Par exemple la commande xterminal &, lance
une xterminal en arrière plan.
å Exercice
Expliquez les différences qu’il existe entre les commandes suivantes (donnez
l’arborescence des shells créés par les commandes):
• Parenthésages et mise en arrière plan (faire l’exercice avec
ls et xterminal)

– xterminal ; xterminal
– (xterminal &) ; xterminal
– xterminal ; xterminal &
– (xterminal ; xterminal) &

• parenthésage et redirection des entrées sorties. On suppose


que le fichier toto n’existe pas dans le répertoire dans
lequel vous travaillez.
– (ls -l toto >& /dev/null ); ls
– ls -l toto ; ls >& /dev/null
– (ls -l toto ; ls ) >& /dev/null

2 Les différents états des processus


Lorsqu’un processus est lancé, celui-ci est en exécution. Sont état est alors R
pour runnable. å Exercice
Lancez la commande ps -l pour regarder quels processus sont runnable
sur vos machines. Et donnez les différents états possibles des processus sous
forme d’un schéma en utilisant la page man de la commande ps.

3
Les commandes importante :

2.1 Signaux lancés aux pro- • kill -n◦ de signal


cessus PID de processus ou
%nom du processus
• jobs
Différents signaux peuvent être envoyés à vos processus. On peut lancer un
signal à un processus, au moment de son exécution à l’aide d’un des caractères
de controle suivant :
• CTRL^C permet d’interrompre un processus (equivalent au signal 15);

• CTRL^Z permet de stopper un processus (equivalent au signal 19).

Si un processus est stoppé, on peut le relancer à l’aide des commandes


fg(pour foreground), ou bg(pour background). Pour visualiser le groupe des
processus qui sont en train d’être exécutés sur un terminal, on peut utiliser la
commande jobs. Cette dernière renseigne sur l’activité des processus qui ont
été lancés à partir du terminal courant.
La commande kill permet d’envoyer un signal à un processus partir de son
PID ou de son nom précédé du caractère % (tandis que l’utilisation de CTRL^X
ou Z ne permettait d’envoyer des signaux que sur des processus qui venaient
d’être lancés).
å Exercice
Exécutez les enchaı̂nements des commandes suivants et expliquez ce qui se
passe pas à pas :

• > xterminal
ctrl^z
> bg
• > xterminal &
> kill -19 %xterminal
> fg

Vous aimerez peut-être aussi