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.

  1. Notions
  2. Questions
  3. Ranger et relier
  4. 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.