Processus : états et PID
Ce qu'est un processus face à un programme, le PID et le PPID, l'arbre des processus, les états prêt, en exécution, bloqué et terminé, le zombie, et la lecture d'une sortie de ps.
- 27 cartes
- 4 thèmes
- Gratuit
Le programme, thème par thème
Le poids de chaque thème suit celui que lui donne l'examen.
- Notions
- Questions
- Ranger et relier
- Mises en situation
Quelques cartes du deck
Processus : de quoi s'agit-il ?
Voir la réponse
Exécution en cours d'un programme, avec sa mémoire, ses fichiers ouverts et un identifiant que le noyau lui a donné.
Un programme est un fichier inerte sur le disque ; le lancer deux fois crée deux processus distincts, chacun avec sa mémoire et son PID.
Dans cette sortie de
ps -o pid,ppid,stat,cmd, quels PID sont des descendants du shell 2140, directs ou non ?
```text
PID PPID STAT CMD
2140 980 Ss -bash
2201 2140 S sleep 600
2305 2140 Sl python3 serveur.py
2310 2305 S python3 serveur.py
2388 2140 Z [convert] <defunct>
2400 980 Ss -bash`- 2201, 2305, 2310 et 2388
- 2201, 2305 et 2388 : seuls les fils directs comptent
- 2201, 2305, 2310, 2388 et 2400
- 2305 et 2310 : les autres ne sont pas des descendants
Voir la réponse
2201, 2305, 2310 et 2388
2310 a pour père 2305, qui a lui-même pour père 2140 : c'est un petit-fils, donc un descendant. 2400 est un autre shell, fils de 980 comme 2140.
Un processus qui attend la fin d'une lecture disque est … ; quand la lecture est finie, il redevient … et doit encore être élu pour s'exécuter.
Voir la réponse
Un processus qui attend la fin d'une lecture disque est bloqué ; quand la lecture est finie, il redevient prêt et doit encore être élu pour s'exécuter.
On ne passe jamais de bloqué à en exécution : la fin de l'entrée-sortie rend le processus prêt, et c'est l'ordonnanceur qui choisit ensuite qui reçoit le processeur.
PID : de quoi s'agit-il ?
Voir la réponse
Numéro entier unique qui désigne un processus tant qu'il existe.
Le noyau le donne au lancement ; c'est ce numéro qu'on passe à kill ou à ps -p pour viser un processus. Le premier processus du système, systemd sur la plupart des distributions Linux, porte le PID 1.
ps montre des dizaines de lignes
[worker] <defunct>, toutes filles du processus 3120, qui tourne toujours. kill -9 sur elles ne change rien. Quelle est la cause ?- Les fils sont bloqués sur une lecture disque ; il faut attendre qu'elle finisse
- Le noyau n'a plus de PID libres à donner ; il faut relever la limite /proc/sys/kernel/pid_max
- Le père 3120 ne lit pas le code de retour de ses fils ; il faut le corriger ou le relancer
- Les fils ont reçu SIGSTOP ; kill -CONT sur chacun les fera repartir
Voir la réponse
Le père 3120 ne lit pas le code de retour de ses fils ; il faut le corriger ou le relancer
Un zombie est déjà mort : aucun signal ne l'atteint. Seule sa récolte par le père le retire. Terminer le père suffit aussi : le PID 1 adopte les zombies et les récolte.