0% ont trouvé ce document utile (0 vote)
44 vues24 pages

Introduction à Unix et gestion des processus

Le document décrit les différents états qu'un processus peut avoir sous Unix/Linux, notamment l'état d'exécution, l'état de sommeil, et l'état zombie. Il explique également la fonction wait() permettant au processus parent de lire le statut de retour d'un processus fils terminé.

Transféré par

selimsenpai1
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
44 vues24 pages

Introduction à Unix et gestion des processus

Le document décrit les différents états qu'un processus peut avoir sous Unix/Linux, notamment l'état d'exécution, l'état de sommeil, et l'état zombie. Il explique également la fonction wait() permettant au processus parent de lire le statut de retour d'un processus fils terminé.

Transféré par

selimsenpai1
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Système d’exploitation avancé

(Unix)
Sofiane Khalfallah

ISSAT Sousse
Initiation à Unix

• Unix System Overview


– Symbolinc Links
• Standard I/O Library
• Process
• Signals
• Threads
• Advanced I/O
• Interprocess Communication
• Network IPC: Sockets
Introduction
Ordonnancement
des processus
Plan
• Nous étudierons tout d'abord les
différents états dans lesquels un
processus peut se trouver, ainsi que
l'influence du noyau sur leurs
transitions.
• Nous analyserons ensuite les
méthodes simples permettant de
modifier la priorité d'un processus par
rapport aux autres.
• Enfin, nous observerons les
Etats d’un processus

• un processus peut se trouver dans un


certain nombre d'états différents, en
fonction de ses activités.
• Ces états peuvent être examinés à
l'aide de la commande ps ou en
regardant le contenu du pseudo-
fichier /proc/<pid>/status.
• Ce dernier contient en effet une ligne
«State:...» indiquant l'état du
processus.
États d’un processus
État exécution


Le processus s'exécute normalement,
il a accès au processeur de la
machine et avance dans son code
exécutable.
État sommeil

• Notons enfin qu'il existe deux types


de sommeil : interruptible et
ininterruptible.
• Dans le premier état, un processus
peut être réveillé par l'arrivée d'un
signal.
• Dans le second cas, le processus ne
peut être réveillé que par une
interruption matérielle reçue par le
noyau.
État sommeil
• Lorsqu'un processus reçoit un signal
SIGSTOP, il est arrêté temporairement
mais pas terminé définitivement. Ce
signal peut être engendré par
l'utilisateur (avec /bin/kill par
exemple), par le terminal
(généralement avec la touche
Contrôle-Z), ou encore par un
débogueur comme gdb qui interrompt
le processus pour l'exécuter pas à
pas.
État sommeil

• Le signal SIGCONT permet au


processus de redémarrer ; il est
déclenché soit par /bin/kill, soit par le
shell (commandes internes bg ou fg),
ou encore par le débogueur pour
reprendre l'exécution.
État Zombie
• Enfin, un processus qui se termine
doit renvoyer une valeur à son père.
Cette valeur est celle qui est fournie à
l'instruction return( ) de la fonction
main( ) ou dans l'argument de la
fonction exit( ).
État Zombie


Tant que le processus père n'a pas lu
cette valeur, le fils reste dans un état
intermédiaire entre la vie et la mort,
toutes ses ressources ont été
libérées, mais il conserve une place
dans la table des tâches sur le
système.
• On dit qu'il est à l'état Zombie.
État Zombie
• Si le processus père ignore
explicitement le signal SIGCHLD, le
processus meurt tout de suite, sans
rester à l'état zombie.

Si, au contraire, le processus père ne
lit jamais la valeur de retour et laisse
à SIGCHLD son comportement par
défaut, le fils restera à l'état zombie
indéfiniment.
État Zombie

Lorsque le processus père se termine à


son tour, le fils orphelin est adopté par
le processus numéro 1, init, qui lit
immédiatement sa valeur de retour
(même s'il n'en a aucune utilité),
permettant enfin à ce processus de
mourir enfin.
États successifs

d'un processus
États successifs

d'un processus
États successifs

d'un processus
États successifs

d'un processus
États successifs

d'un processus
États successifs

d'un processus
Fonction : wait( )
• Pour lire le code de retour d'un
processus fils, il existe la fonction :
wait( )
• La fonction wait( ) est déclarée dans
<sys/wait. h>, ainsi : pid_t wait (int *
status);
Fonction : wait( )

Lorsqu'on l'invoque, elle bloque le


processus appelant jusqu'à ce qu'un de
ses fils se termine. Elle renvoie alors le
PID du fils terminé. Si le pointeur status
est non NULL, il est renseigné ce une
valeur informant sur les circonstances
de la mort du fils.
Fonction : wait( )
• Si un processus fils était déjà en
attente à l'état zombie, wait( ) revient
immédiatement.
• Si on n'est pas intéressé par les
circonstances de la fin du processus
fils, il est tout à fait possible de fournir
un argument NULL.

Vous aimerez peut-être aussi